This is the mail archive of the
gdb-prs@sourceware.org
mailing list for the GDB project.
[Bug server/18315] New: PPC64 gdbserver fails gdb.base/interrupt.exp FAILs, syscall restart mishandled
- From: "palves at redhat dot com" <sourceware-bugzilla at sourceware dot org>
- To: gdb-prs at sourceware dot org
- Date: Fri, 24 Apr 2015 08:22:54 +0000
- Subject: [Bug server/18315] New: PPC64 gdbserver fails gdb.base/interrupt.exp FAILs, syscall restart mishandled
- Auto-submitted: auto-generated
https://sourceware.org/bugzilla/show_bug.cgi?id=18315
Bug ID: 18315
Summary: PPC64 gdbserver fails gdb.base/interrupt.exp FAILs,
syscall restart mishandled
Product: gdb
Version: HEAD
Status: NEW
Severity: normal
Priority: P2
Component: server
Assignee: unassigned at sourceware dot org
Reporter: palves at redhat dot com
PPC64 gdbserver is failing gdb.base/interrupt.exp. The actual FAILs varies
from run to run, but it's always around the "echo data" test. E.g., the
buildbots show:
PASS: gdb.base/interrupt.exp: child process ate our char
^C
Program received signal SIGINT, Interrupt.
0x00003fffb7daadfc in __read_nocancel () from target:/lib64/libc.so.6
(gdb) PASS: gdb.base/interrupt.exp: send_gdb control C
p func1 ()
Program received signal SIGILL, Illegal instruction.
0x0000000010000c30 in main () at
../../../binutils-gdb/gdb/testsuite/gdb.base/interrupt.c:51
51 }
The program being debugged was signaled while in a function called from GDB.
GDB remains in the frame where the signal was received.
To change this behavior use "set unwindonsignal on".
Evaluation of the expression containing the function
(func1) will be abandoned.
When the function is done executing, GDB will silently stop.
(gdb) FAIL: gdb.base/interrupt.exp: child died when we called func1, skipped
rest of tests
While running the test on gcc110, I saw:
...
talk to me baby
PASS: gdb.base/interrupt.exp: process is alive
a
a
PASS: gdb.base/interrupt.exp: child process ate our char
^C
Program received signal SIGINT, Interrupt.
0x0000008074f69ed8 in __read_nocancel () from target:/lib64/libc.so.6
(gdb) PASS: gdb.base/interrupt.exp: send_gdb control C
p func1 ()
$1 = 4
(gdb) PASS: gdb.base/interrupt.exp: call function when asleep
p func1 ()
$2 = 4
(gdb) PASS: gdb.base/interrupt.exp: call function a second time
continue
Continuing.
PASS: gdb.base/interrupt.exp: continue
Unknown error 512
^^^^^^^^^^^^^^^^^^
Child exited with status 1
GDBserver exiting
[Inferior 1 (process 4569) exited with code 01]
data
ERROR: Process no longer exists
UNRESOLVED: gdb.base/interrupt.exp: echo data
testcase ../../../src/gdb/testsuite/gdb.base/interrupt.exp completed in 3
seconds
Note the "Unknown error 512". That's ERESTARTSYS. A similar bug on x86:
https://sourceware.org/ml/gdb-patches/2015-02/msg00654.html
was what actually led to making this test work against gdbserver too:
https://sourceware.org/ml/gdb-patches/2015-02/msg00655.html
in this case, we have a 64-bit gdbserver debugging a 64-bit program. Testing
with the native target passes successfully, so this must be really a gdbserver
bug, as opposed to a kernel bug.
--
You are receiving this mail because:
You are on the CC list for the bug.