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) c[Ksource .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