Hi Frank, Roland

Using UTRACE_STOP as action in report_signal and report_quiesce results
in utrace_stop() being called which causes the thread to be scheduled
out. This results in gdb not getting control/data from the remote and
results in gdb command prompt.

>From looking at kgdb-stub, I feel it might be better for 
report_signal() to wait on gdb stub for inputs from gdb client. 
This is similar to what kgdb stub does currently.

Also when gdb wants control, (i.e pressing ^C in gdb to get gdb prompt)
stub seems to inject SIGTRAP, I think gdb stub should have used
utrace_control(UTRACE_STOP) instead of sending SIGTRAP. 

Please let me know if I am missing something.

--
Thanks and Regards
Srikar

PS:
I am attaching the gdb screen and dmesg output.
Please note the sections under NOTE


Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu"...
(gdb) target remote /proc/4870/gdb
Remote debugging using /proc/4870/gdb
Reading symbols from /lib64/libtermcap.so.2...done.
Loaded symbols for /lib64/libtermcap.so.2
Reading symbols from /lib64/libdl.so.2...Reading symbols from 
/usr/lib/debug/lib64/libdl-2.5.so.debug...done.
done.
Loaded symbols for /lib64/libdl.so.2
Reading symbols from /lib64/libc.so.6...Reading symbols from 
/usr/lib/debug/lib64/libc-2.5.so.debug...done.
done.
Loaded symbols for /lib64/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...Reading symbols from 
/usr/lib/debug/lib64/ld-2.5.so.debug...done.
done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from /lib64/libnss_files.so.2...Reading symbols from 
/usr/lib/debug/lib64/libnss_files-2.5.so.debug...done.
done.
Loaded symbols for /lib64/libnss_files.so.2
0x0000003b4aec5620 in __read_nocancel () from /lib64/libc.so.6
(gdb) csource .gdbinit_bash 
(gdb) c
Continuing.
Sending packet: $Z0,3b4aa0d9f0,1#01...Ack
Packet received: 
Packet Z0 (software-breakpoint) is NOT supported
Sending packet: $m3b4aa0d9f0,1#b8...Ack
Packet received: F3
Sending packet: $X3b4aa0d9f0,0:#dc...Ack
Packet received: 
binary downloading NOT suppported by target
Sending packet: $M3b4aa0d9f0,1:cc#98...Ack
Packet received: OK
Sending packet: $vCont?#49...Ack
Packet received: 
Packet vCont (verbose-resume) is NOT supported
Sending packet: $Hc0#db...Ack
Packet received: 
Sending packet: $c#63...Ack
Packet received: S11
Sending packet: $g#67...Ack
Packet received: 
00000000000000000000000000000000FFFFFFFFFFFFFFFF40558F6DFF7F000070568F6DFF7F00001100000000000000000000000000000038558F6DFF7F0000C0B4A40000000000000000000000000008000000000000004602000000000000000000000000000000000000000000000100000000000000D0B3A30000000000806043000000000046020000330000002B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
 
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E00000000000000

Program received signal SIGSTOP, Stopped (signal).
###########################################################################
NOTE:
Here gdb client was actually trying to get more data from server stub.
However utrace_stop() was called from server stub, resulting in the
thread being scheduled out.  Ideally stub has sent a S packet to gdb
client. Stub should wait for comments from gdb client and report
accordingly. When the client finally says detach, continue or single
step, then report_signal() should sent the response accordingly.
(which would be UTRACE_RESUME/_SINGLESTEP but probably not UTRACE_STOP

##########################################################################
Sending packet: $M3b4aa0d9f0,1:f3#6b...Ack
Packet received: OK
sigchld_handler (sig=17) at jobs.c:2937
2937    {
(gdb) c
Continuing.
##########################################################################
NOTE:
Here again client is not sending us continue or step/detach packets to 
stub/server. This is because client is in STOPPED state and not ready to 
accept packets. Hence it directly asks the process to be continued..
which shouldnt be the case in a remote debugging.

##########################################################################
Sending packet: $m3b4aa0d9f0,1#b8...Ack
Packet received: F3
Sending packet: $M3b4aa0d9f0,1:cc#98...Ack
Packet received: OK
Sending packet: $C11#a5...Ack
Packet received: W00

Program exited normally.
(gdb) q
kecho\]0;sri...@llm37.in.ibm.com:\997 [sri...@llm37 ~]$ exit

Script done on Fri 10 Jul 2009 06:04:22 PM IST




stap_becadeb76113dc76006d007e1c50b687_66017: systemtap: 0.9.8/0.141, base: 
ffffffffa0d8b000, memory: 1828873+93351+58816+14000 data+text+ctx+net, probes: 
114
opened /proc/4870/gdb
utrace_set_events sent, ret=0
report_signal 4870 (0x65) kern 1 skip 0 stop 1
action 0x65
received gdb packet $qSupported#37
gdb packet code q
sent 9 bytes (0 left) data ($#00+$#00)
report_signal 4870 (0x5) kern 1 skip 0 stop 1
action 0x10
received gdb packet $?#3f
gdb packet code ?
sent 15 bytes (0 left) data ($S05#B8+$S05#B8)
received gdb packet $Hc-1#09
gdb packet code H
sent 5 bytes (0 left) data (+$#00)
received gdb packet $qC#b4
gdb packet code q
sent 5 bytes (0 left) data (+$#00)
received gdb packet $qOffsets#4b
gdb packet code q
sent 5 bytes (0 left) data (+$#00)
received gdb packet $Hg0#df
gdb packet code H
sent 5 bytes (0 left) data (+$#00)
received gdb packet $g#67
gdb packet code g
sent 1093 bytes (0 left) data 
(+$00FEFFFFFFFFFFFFA006154B3B000000FFFFFFFFFFFFFFFF0100000000000000D7498F6DFF7F00000000000000000000D7498F6DFF7F0000B8498F6DFF7F000000000000000000000100000000000000080000000000000046020000000000000000000000000000084B8F6DFF7F000070598F6DFF7F000000000000000000002056EC4A3B00000046020000330000002B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
 000000000000000000000000000000<7>received gdb packet $m6b20d0,8#5f
gdb packet code m
sent 21 bytes (0 left) data (+$60CCC14A3B000000#6A)
received gdb packet $m3b4ac1cc68,8#c3
gdb packet code m
sent 21 bytes (0 left) data (+$0080D389707F0000#54)
received gdb packet $m7f7089d38000,28#d7
gdb packet code m
sent 85 bytes (0 left) data 
(+$00000000000000001F81A14A3B00000028206B00000000008885D389707F00000000000000000000#E9)
received gdb packet $m7f7089d38588,28#ec
gdb packet code m
sent 85 bytes (0 left) data 
(+$00E0226EFF7F00001F81A14A3B000000E0E3926DFF7F00005876D389707F00000080D389707F0000#2E)
received gdb packet $m3b4aa1811c,4#86
gdb packet code m
sent 13 bytes (0 left) data (+$20090A00#9C)
received gdb packet $m7f7089d37658,28#e9
gdb packet code m
sent 85 bytes (0 left) data 
(+$00000000000000004076D389707F0000B02A004D3B000000187BD389707F00008885D389707F0000#86)
received gdb packet $m7f7089d37640,4#aa
gdb packet code m
sent 13 bytes (0 left) data (+$2F6C6962#C8)
received gdb packet $m7f7089d37644,4#ae
gdb packet code m
sent 13 bytes (0 left) data (+$36342F6C#C1)
received gdb packet $m7f7089d37648,4#b2
gdb packet code m
sent 13 bytes (0 left) data (+$69627465#AD)
received gdb packet $m7f7089d3764c,4#dd
gdb packet code m
sent 13 bytes (0 left) data (+$726D6361#B3)
received gdb packet $m7f7089d37650,4#ab
gdb packet code m
sent 13 bytes (0 left) data (+$702E736F#C4)
received gdb packet $m7f7089d37654,4#af
gdb packet code m
sent 13 bytes (0 left) data (+$2E320000#9C)
received gdb packet $m7f7089d37b18,28#11
gdb packet code m
sent 85 bytes (0 left) data 
(+$0000000000000000007BD389707F0000A02D804B3B0000000040D289707F00005876D389707F0000#74)
received gdb packet $m7f7089d37b00,4#d2
gdb packet code m
sent 13 bytes (0 left) data (+$2F6C6962#C8)
received gdb packet $m7f7089d37b04,4#d6
gdb packet code m
sent 13 bytes (0 left) data (+$36342F6C#C1)
received gdb packet $m7f7089d37b08,4#da
gdb packet code m
sent 13 bytes (0 left) data (+$6962646C#BA)
received gdb packet $m7f7089d37b0c,4#05
gdb packet code m
sent 13 bytes (0 left) data (+$2E736F2E#D4)
received gdb packet $m7f7089d37b10,4#d3
gdb packet code m
sent 13 bytes (0 left) data (+$32000000#85)
received gdb packet $m7f7089d24000,28#d2
gdb packet code m
sent 85 bytes (0 left) data 
(+$0000000000000000C07FD389707F000060FB144B3B000000E8C4C14A3B000000187BD389707F0000#BA)
received gdb packet $m7f7089d37fc0,4#09
gdb packet code m
sent 13 bytes (0 left) data (+$2F6C6962#C8)
received gdb packet $m7f7089d37fc4,4#0d
gdb packet code m
sent 13 bytes (0 left) data (+$36342F6C#C1)
received gdb packet $m7f7089d37fc8,4#11
gdb packet code m
sent 13 bytes (0 left) data (+$6962632E#B7)
received gdb packet $m7f7089d37fcc,4#3c
gdb packet code m
sent 13 bytes (0 left) data (+$736F2E36#C6)
received gdb packet $m7f7089d37fd0,4#0a
gdb packet code m
sent 13 bytes (0 left) data (+$00000000#80)
received gdb packet $m3b4ac1c4e8,28#f5
gdb packet code m
sent 85 bytes (0 left) data 
(+$0000000000000000380240000000000008BEC14A3B000000D0628C00000000000040D289707F0000#04)
received gdb packet $m400238,4#fe
gdb packet code m
sent 13 bytes (0 left) data (+$2F6C6962#C8)
received gdb packet $m40023c,4#29
gdb packet code m
sent 13 bytes (0 left) data (+$36342F6C#C1)
received gdb packet $m400240,4#f7
gdb packet code m
sent 13 bytes (0 left) data (+$642D6C69#C8)
received gdb packet $m400244,4#fb
gdb packet code m
sent 13 bytes (0 left) data (+$6E75782D#CC)
received gdb packet $m400248,4#ff
gdb packet code m
sent 13 bytes (0 left) data (+$7838362D#B9)
received gdb packet $m40024c,4#2a
gdb packet code m
sent 13 bytes (0 left) data (+$36342E73#B1)
received gdb packet $m400250,4#f8
gdb packet code m
sent 13 bytes (0 left) data (+$6F2E3200#B8)
received gdb packet $m8c62d0,28#9a
gdb packet code m
sent 85 bytes (0 left) data 
(+$00905486707F0000D0588C0000000000F82D7586707F00000000000000000000E8C4C14A3B000000#64)
received gdb packet $m8c58d0,4#69
gdb packet code m
sent 13 bytes (0 left) data (+$2F6C6962#C8)
received gdb packet $m8c58d4,4#6d
gdb packet code m
sent 13 bytes (0 left) data (+$36342F6C#C1)
received gdb packet $m8c58d8,4#71
gdb packet code m
sent 13 bytes (0 left) data (+$69626E73#BC)
received gdb packet $m8c58dc,4#9c
gdb packet code m
sent 13 bytes (0 left) data (+$735F6669#C0)
received gdb packet $m8c58e0,4#6a
gdb packet code m
sent 13 bytes (0 left) data (+$6C65732E#C5)
received gdb packet $m8c58e4,4#6e
gdb packet code m
sent 13 bytes (0 left) data (+$736F2E32#C2)
received gdb packet $m8c58e8,4#72
gdb packet code m
sent 13 bytes (0 left) data (+$00588C00#A8)
received gdb packet $m3b4ac1cc60,4#b7
gdb packet code m
sent 13 bytes (0 left) data (+$01000000#81)
received gdb packet $qSymbol::#5b
gdb packet code q
sent 5 bytes (0 left) data (+$#00)
received gdb packet $m6b20d0,8#5f
gdb packet code m
sent 21 bytes (0 left) data (+$60CCC14A3B000000#6A)
received gdb packet $m3b4ac1cc68,8#c3
gdb packet code m
sent 21 bytes (0 left) data (+$0080D389707F0000#54)
received gdb packet $m7f7089d38000,28#d7
gdb packet code m
sent 85 bytes (0 left) data 
(+$00000000000000001F81A14A3B00000028206B00000000008885D389707F00000000000000000000#E9)
received gdb packet $m7f7089d38588,28#ec
gdb packet code m
sent 85 bytes (0 left) data 
(+$00E0226EFF7F00001F81A14A3B000000E0E3926DFF7F00005876D389707F00000080D389707F0000#2E)
received gdb packet $m3b4aa1811c,4#86
gdb packet code m
sent 13 bytes (0 left) data (+$20090A00#9C)
received gdb packet $m7f7089d37658,28#e9
gdb packet code m
sent 85 bytes (0 left) data 
(+$00000000000000004076D389707F0000B02A004D3B000000187BD389707F00008885D389707F0000#86)
received gdb packet $m7f7089d37640,4#aa
gdb packet code m
sent 13 bytes (0 left) data (+$2F6C6962#C8)
received gdb packet $m7f7089d37644,4#ae
gdb packet code m
sent 13 bytes (0 left) data (+$36342F6C#C1)
received gdb packet $m7f7089d37648,4#b2
gdb packet code m
sent 13 bytes (0 left) data (+$69627465#AD)
received gdb packet $m7f7089d3764c,4#dd
gdb packet code m
sent 13 bytes (0 left) data (+$726D6361#B3)
received gdb packet $m7f7089d37650,4#ab
gdb packet code m
sent 13 bytes (0 left) data (+$702E736F#C4)
received gdb packet $m7f7089d37654,4#af
gdb packet code m
sent 13 bytes (0 left) data (+$2E320000#9C)
received gdb packet $m7f7089d37b18,28#11
gdb packet code m
sent 85 bytes (0 left) data 
(+$0000000000000000007BD389707F0000A02D804B3B0000000040D289707F00005876D389707F0000#74)
received gdb packet $m7f7089d37b00,4#d2
gdb packet code m
sent 13 bytes (0 left) data (+$2F6C6962#C8)
received gdb packet $m7f7089d37b04,4#d6
gdb packet code m
sent 13 bytes (0 left) data (+$36342F6C#C1)
received gdb packet $m7f7089d37b08,4#da
gdb packet code m
sent 13 bytes (0 left) data (+$6962646C#BA)
received gdb packet $m7f7089d37b0c,4#05
gdb packet code m
sent 13 bytes (0 left) data (+$2E736F2E#D4)
received gdb packet $m7f7089d37b10,4#d3
gdb packet code m
sent 13 bytes (0 left) data (+$32000000#85)
received gdb packet $m7f7089d24000,28#d2
gdb packet code m
sent 85 bytes (0 left) data 
(+$0000000000000000C07FD389707F000060FB144B3B000000E8C4C14A3B000000187BD389707F0000#BA)
received gdb packet $m7f7089d37fc0,4#09
gdb packet code m
sent 13 bytes (0 left) data (+$2F6C6962#C8)
received gdb packet $m7f7089d37fc4,4#0d
gdb packet code m
sent 13 bytes (0 left) data (+$36342F6C#C1)
received gdb packet $m7f7089d37fc8,4#11
gdb packet code m
sent 13 bytes (0 left) data (+$6962632E#B7)
received gdb packet $m7f7089d37fcc,4#3c
gdb packet code m
sent 13 bytes (0 left) data (+$736F2E36#C6)
received gdb packet $m7f7089d37fd0,4#0a
gdb packet code m
sent 13 bytes (0 left) data (+$00000000#80)
received gdb packet $m3b4ac1c4e8,28#f5
gdb packet code m
sent 85 bytes (0 left) data 
(+$0000000000000000380240000000000008BEC14A3B000000D0628C00000000000040D289707F0000#04)
received gdb packet $m400238,4#fe
gdb packet code m
sent 13 bytes (0 left) data (+$2F6C6962#C8)
received gdb packet $m40023c,4#29
gdb packet code m
sent 13 bytes (0 left) data (+$36342F6C#C1)
received gdb packet $m400240,4#f7
gdb packet code m
sent 13 bytes (0 left) data (+$642D6C69#C8)
received gdb packet $m400244,4#fb
gdb packet code m
sent 13 bytes (0 left) data (+$6E75782D#CC)
received gdb packet $m400248,4#ff
gdb packet code m
sent 13 bytes (0 left) data (+$7838362D#B9)
received gdb packet $m40024c,4#2a
gdb packet code m
sent 13 bytes (0 left) data (+$36342E73#B1)
received gdb packet $m400250,4#f8
gdb packet code m
sent 13 bytes (0 left) data (+$6F2E3200#B8)
received gdb packet $m8c62d0,28#9a
gdb packet code m
sent 85 bytes (0 left) data 
(+$00905486707F0000D0588C0000000000F82D7586707F00000000000000000000E8C4C14A3B000000#64)
received gdb packet $m8c58d0,4#69
gdb packet code m
sent 13 bytes (0 left) data (+$2F6C6962#C8)
received gdb packet $m8c58d4,4#6d
gdb packet code m
sent 13 bytes (0 left) data (+$36342F6C#C1)
received gdb packet $m8c58d8,4#71
gdb packet code m
sent 13 bytes (0 left) data (+$69626E73#BC)
received gdb packet $m8c58dc,4#9c
gdb packet code m
sent 13 bytes (0 left) data (+$735F6669#C0)
received gdb packet $m8c58e0,4#6a
gdb packet code m
sent 13 bytes (0 left) data (+$6C65732E#C5)
received gdb packet $m8c58e4,4#6e
gdb packet code m
sent 13 bytes (0 left) data (+$736F2E32#C2)
received gdb packet $m8c58e8,4#72
gdb packet code m
sent 13 bytes (0 left) data (+$00588C00#A8)
received gdb packet $m3b4ac1cc60,4#b7
gdb packet code m
sent 13 bytes (0 left) data (+$01000000#81)
received gdb packet $m3b4ac1cc68,8#c3
gdb packet code m
sent 21 bytes (0 left) data (+$0080D389707F0000#54)
received gdb packet $m3b4ac1cc70,8#bc
gdb packet code m
sent 21 bytes (0 left) data (+$F0D9A04A3B000000#6E)
received gdb packet $m49c0f0,8#67
gdb packet code m
sent 21 bytes (0 left) data (+$B5DC490000000000#4B)
received gdb packet $Z0,3b4aa0d9f0,1#01
gdb packet code Z
sent 5 bytes (0 left) data (+$#00)
received gdb packet $m3b4aa0d9f0,1#b8
gdb packet code m
sent 7 bytes (0 left) data (+$F3#79)
received gdb packet $X3b4aa0d9f0,0:#dc
gdb packet code X
sent 5 bytes (0 left) data (+$#00)
received gdb packet $M3b4aa0d9f0,1:cc#98
gdb packet code M
sent 7 bytes (0 left) data (+$OK#9A)
received gdb packet $vCont?#49
gdb packet code v
sent 5 bytes (0 left) data (+$#00)
received gdb packet $Hc0#db
gdb packet code H
sent 5 bytes (0 left) data (+$#00)
received gdb packet $c#63
gdb packet code c
sent 1 bytes (0 left) data (+)
report_quiesce 4870 event 0x0 0x5->0x5
report_quiesce 4870 event 0x4 0x5->0x5
report_clone 4870->4950
report_signal 4870 (0x5) kern 1 skip 0 stop 0
action 0x0
sent 7 bytes (0 left) data ($S11#B5)
report_signal 4870 (0x75) kern 1 skip 0 stop 0
action 0x75
received gdb packet $g#67
gdb packet code g
report_quiesce 4870 event 0x0 0x5->0x0
sent 1093 bytes (0 left) data 
(+$00000000000000000000000000000000FFFFFFFFFFFFFFFF40558F6DFF7F000070568F6DFF7F00001100000000000000000000000000000038558F6DFF7F0000C0B4A40000000000000000000000000008000000000000004602000000000000000000000000000000000000000000000100000000000000D0B3A30000000000806043000000000046020000330000002B0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
 000000000000000000000000000000<7>received gdb packet $M3b4aa0d9f0,1:f3#6b
#####################################################################################
NOTE:
dmesg output printed by enabling DEBUG also shows that stub 
neither received packets from client about whether it should continue or
stop or step when signal SIGCHLD i.e S11 was received.
#####################################################################################
gdb packet code M
sent 7 bytes (0 left) data (+$OK#9A)
received gdb packet $m3b4aa0d9f0,1#b8
gdb packet code m
sent 7 bytes (0 left) data (+$F3#79)
received gdb packet $M3b4aa0d9f0,1:cc#98
gdb packet code M
sent 7 bytes (0 left) data (+$OK#9A)
received gdb packet $C11#a5
gdb packet code C
sent 1 bytes (0 left) data (+)
report_signal 4870 (0x5) kern 1 skip 1 stop 0
action 0x5
report_quiesce 4870 event 0x10 0x5->0x5
report_exit 4870 (0)
sent 7 bytes (0 left) data ($W00#B7)
gdb 4870 releasing current

Reply via email to