This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [obv] testsuite: disp-step-syscall.exp: Setup KFAIL for PR server/13796


On 03/03/2012 07:01 AM, Jan Kratochvil wrote:
> Hi,
> 
> [patch] Fix disp-step-syscall.exp on some i386 targets
> http://sourceware.org/ml/gdb-patches/2012-02/msg00635.html
> 
> just fixed a testcase which revealed existing IMO gdbserver Bug, therefore
> just KFAILed it.
> 
> stepi
> Program terminated with signal SIGILL, Illegal instruction.
> The program no longer exists.
> (gdb) PASS: gdb.base/disp-step-syscall.exp: vfork: single step over vfork
> Child terminated with signal = 0x4 (SIGILL)
> GDBserver exiting
> print /x $pc
> No registers.
> (gdb) FAIL: gdb.base/disp-step-syscall.exp: vfork: get hexadecimal valueof "$pc" (timeout)

I've analized this one before.  The issue is that the test displace-steps over a vfork syscall.
In the special case of displace-stepping over a fork, GDB needs to adjust both the parent and
the child back from the displace stepping scratchpad.   Since GDBserver doesn't
support following (v)forks yet, gdb is never informed about the child, and so the child
ends up continuing freely, unadjusted, from the scratchpad, and crashes.

So this is all really about the remote protocol not supporting following forks yet.

-- 
Pedro Alves


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]