Bug 615538 - [ia64] ptrace-on-utrace: break.b generates SIGILL (instead of SIGTRAP)
[ia64] ptrace-on-utrace: break.b generates SIGILL (instead of SIGTRAP)
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: kernel (Show other bugs)
ia64 Linux
high Severity high
: rc
: ---
Assigned To: Red Hat Kernel Manager
Red Hat Kernel QE team
Depends On:
Blocks: 601709
  Show dependency treegraph
Reported: 2010-07-16 20:33 EDT by Jan Kratochvil
Modified: 2010-11-09 07:32 EST (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2010-07-19 05:21:40 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Jan Kratochvil 2010-07-16 20:33:20 EDT
Description of problem:
In MIB template with breakpoint on the B slot ia64 generates SIGILL.
In other cases it generates normal SIGTRAP.

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
         0:     10 00 00 00 01 00       [MIB]       nop.m 0x0
         6:     00 00 00 02 00 80                   nop.i 0x0
         c:     99 99 01 00                         break.b 0xccccc

Actual results:
SIGILL si_code==ILL_ILLOPC si_imm==0 si_segvflags==0 si_isr==0

Expected results:

Additional info:
GDB already expects SIGILL, just it has some bugs in that logic.
 /* Note that breakpoint insns may cause SIGTRAP or SIGILL or SIGEMT, depending
    on the operating system version.  */

I have not checked all the other template and breakpoint possibilities really generate SIGTRAP.
Comment 2 Jan Kratochvil 2010-07-16 20:59:29 EDT
Reproducible on the latest build:
Comment 3 Roland McGrath 2010-07-16 21:24:27 EDT
This is just an issue with the ia64 hardware and/or trap handler.  It probably doesn't have anything to do with the mechanics of ptrace or utrace.  It needs an ia64 expert more than ptrace experts.

As I read the kernel source, that si_code,si_imm combination comes either via ia64_illegal_op_fault or via ia64_bad_break with break_num=0.  I don't know enough about ia64 details to understand what situations lead to either of these paths or which of the two we could be seeing.
Comment 4 Jan Kratochvil 2010-07-17 02:51:22 EDT
Reproducible exactly the same on:
OK, going to workaround it in GDB as a hardware bug, thanks.
Comment 5 Jan Kratochvil 2010-07-19 05:21:40 EDT
This is a documented IA64 behavior as described by Tristan Gingold:

Note You need to log in before you can comment on or make changes to this bug.