Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.
For bugs related to Red Hat Enterprise Linux 4 product line. The current stable release is 4.9. For Red Hat Enterprise Linux 6 and above, please visit Red Hat JIRA https://issues.redhat.com/secure/CreateIssue!default.jspa?pid=12332745 to report new issues.

Bug 426647

Summary: ptrace: PTRACE_SINGLESTEP,signal steps on the 2nd instr.
Product: Red Hat Enterprise Linux 4 Reporter: Jan Kratochvil <jan.kratochvil>
Component: kernelAssignee: Jerome Marchand <jmarchan>
Status: CLOSED ERRATA QA Contact: Martin Jenner <mjenner>
Severity: low Docs Contact:
Priority: low    
Version: 4.6CC: roland, vgoyal
Target Milestone: rc   
Target Release: ---   
Hardware: s390x   
OS: Linux   
URL: http://sources.redhat.com/cgi-bin/cvsweb.cgi/~checkout~/tests/ptrace-tests/tests/step-into-handler.c?cvsroot=systemtap
Whiteboard:
Fixed In Version: RHSA-2008-0665 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2008-07-24 19:23:51 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 338951    
Attachments:
Description Flags
Restore single_step flag after signal none

Description Jan Kratochvil 2007-12-23 16:39:33 UTC
Description of problem:
On RHEL-4 s390 and s390x ptrace(PTRACE_SINGLESTEP,SIGALRM) will report a SIGTRAP
from the _second_ instruction of the SIGALRM handler.  All the other platforms
stop the the _first_ signal handler instruction.

Version-Release number of selected component (if applicable):
kernel-2.6.9-67.EL.s390x

How reproducible:
Always.

Steps to Reproduce:
1. wget -q -O step-into-handler.c
'http://sources.redhat.com/cgi-bin/cvsweb.cgi/~checkout~/tests/ptrace-tests/tests/step-into-handler.c?cvsroot=systemtap';for
bit in 31 64;do gcc -m$bit -D_GNU_SOURCE -o step-into-handler
step-into-handler.c -Wall -ggdb2;./step-into-handler;echo $?;done

Actual results:
1
1

Expected results:
0
0

Additional info:
s390x RHEL-5 (due to utrace?) is not affected by this bug.
Other platforms (non-s390/non-s390x) are also not affected by this bug.
Also it may not be much serious, in fact it fortunately discovered a GDB
regression otherwise not caught by any platform/test.
Not sure if it should be fixed at all, probably not worth it for RHEL-4.7/4.8.

Comment 1 Jan Kratochvil 2007-12-23 16:41:20 UTC
RHEL-5 kernel under the test was: kernel-2.6.18-58.el5.utrace2.s390x


Comment 2 Roland McGrath 2007-12-23 21:21:28 UTC
This was indeed fixed in RHEL5 as part of the utrace port for s390.
The upstream code for this is being cleaned up right now, it so happens.
This is probably the right fix for RHEL4:

--- linux-2.6.9/arch/s390/kernel/signal.c
+++ linux-2.6.9/arch/s390/kernel/signal.c
@@ -514,6 +514,8 @@ int do_signal(struct pt_regs *regs, sigs
 	        }
 #endif
 		handle_signal(signr, &ka, &info, oldset, regs);
+		if (current->thread.per_info.single_step)
+			set_thread_flag(TIF_SINGLE_STEP);
 		return 1;
 	}


Comment 3 Jerome Marchand 2008-04-24 08:47:38 UTC
Created attachment 303601 [details]
Restore single_step flag after signal

Resore current->thread.per_info.single_step before returning from do_signal()
and jump to sysc_singlestep after do_signal() returned in system_call().

Comment 4 Jerome Marchand 2008-04-24 08:53:07 UTC
With the patch above applied, the reproducer returns zero on both s390 and s390x
(31 et 64 bits).

Comment 8 Vivek Goyal 2008-05-29 20:50:40 UTC
Committed in 71.EL . RPMS are available at http://people.redhat.com/vgoyal/rhel4/

Comment 11 errata-xmlrpc 2008-07-24 19:23:51 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHSA-2008-0665.html