Bug 133799 - On s390[x] PTRACE_SINGLESTEP to deliver signal runs handler without single-step
On s390[x] PTRACE_SINGLESTEP to deliver signal runs handler without single-step
Product: Red Hat Enterprise Linux 3
Classification: Red Hat
Component: kernel (Show other bugs)
s390x Linux
medium Severity medium
: ---
: ---
Assigned To: Pete Zaitcev
Depends On:
Blocks: 116894 117972 127692 132991
  Show dependency treegraph
Reported: 2004-09-27 12:20 EDT by Andrew Cagney
Modified: 2007-11-30 17:07 EST (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2007-10-19 15:17:30 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)
Deliver SIGTRAP for first instruction of a single stepped signal handler. (1.53 KB, patch)
2004-11-29 11:13 EST, Martin Schwidefsky
no flags Details | Diff

  None (edit)
Description Andrew Cagney 2004-09-27 12:20:22 EDT
Description of problem lifted from 130995; I used devel5 to test this.

The ptrace(PT_STEP,SIGALARM) system call instead implements

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

Roland says this is present in all i386 kernels.

How reproducible:


Steps to Reproduce:

In the below, target_resume(...) corresponds directly to a ptrace call.

cagney@tomago$ gdb ./a.out
(gdb) b handler
Breakpoint 1 at 0x80483bb: file sigstep.c, line 31.
(gdb) list main
39	  itimer_real = ITIMER_REAL,
40	  itimer_virtual = ITIMER_VIRTUAL
41	} itimer = ITIMER_REAL; /* ITIMER_VIRTUAL; */
43	main ()
44	{
46	  /* Set up the signal handler.  */
47	  memset (&action, 0, sizeof (action));
48	  action.sa_handler = handler;
49	  sigaction (SIGVTALRM, &action, NULL);
50	  sigaction (SIGALRM, &action, NULL);
52	  /* The values needed for the itimer.  This needs to be at least long
53	     enough for the setitimer() call to return.  */
54	  memset (&itime, 0, sizeof (itime));
55	  itime.it_value.tv_usec = 250 * 1000;
57	  /* Loop for ever, constantly taking an interrupt.  */
58	  while (1)
59	    {
60	      /* Set up a one-off timer.  A timer, rather than SIGSEGV, is
61		 used as after a timer handler finishes the interrupted code
62		 can safely resume.  */
63	      setitimer (itimer, &itime, NULL);
64	      /* Wait.  */
65	      while (!done);
66	      done = 0;
67	    }
68	}
(gdb) break 65
Breakpoint 2 at 0x8048456: file sigstep.c, line 65.
(gdb) set debug target 1
(gdb) run
Starting program: /home/cagney/tmp/sigstep/a.out 
Breakpoint 2, main () at sigstep.c:65
65	      while (!done);
(gdb) step
target_terminal_inferior ()
target_xfer_memory (0x8048456, xxx, 2, read, xxx) = 2, bytes = a1 64

Keeps re-delivering the signal.

The ptrace(PT_STEP,SIGNAL) should setup the signal and then execute no
Comment 3 Martin Schwidefsky 2004-11-29 11:12:38 EST
Uli fixed this for s390. If ptrace is called with PTRACE_SINGLESTEP
and with exit code > 0 the TIF_SINGLE_STEP bit is set instead of the
PER bit in the PSW. This makes entry.S to deliver a SIGTRAP with the
PSW pointing to the first instruction of the signal handler. See patch
Comment 4 Martin Schwidefsky 2004-11-29 11:13:44 EST
Created attachment 107546 [details]
Deliver SIGTRAP for first instruction of a single stepped signal handler.
Comment 5 Pete Zaitcev 2004-11-29 11:56:53 EST
But this is a 2.4 based release...
Comment 7 RHEL Product and Program Management 2007-10-19 15:17:30 EDT
This bug is filed against RHEL 3, which is in maintenance phase.
During the maintenance phase, only security errata and select mission
critical bug fixes will be released for enterprise products. Since
this bug does not meet that criteria, it is now being closed.
For more information of the RHEL errata support policy, please visit:
If you feel this bug is indeed mission critical, please contact your
support representative. You may be asked to provide detailed
information on how this bug is affecting you.

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