RE: debug of multithreaded program turns to be impossible during execution
Avi Gozlan <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <71C49BB0B847984EAADFE43F93C6BF083ADA8F07@DAG-EX10.ad.checkpoint.com> |
GDB 7.8 yields a similar behavior: (gdb) c Continuing. ... [New Thread 0x43c05940 (LWP 3311)] [New Thread 0x44606940 (LWP 3312)] ... [Thread 0x44606940 (LWP 3312) exited] [Switching to Thread 0x43c05940 (LWP 3311)] Cannot remove breakpoints because program is no longer writable. Further execution is probably impossible. 0x00002aaaab98348f in start_thread () from /lib64/libpthread.so.0 ptrace: No such process. (gdb) [Thread 0x46409940 (LWP 3315) exited] [Thread 0x45a08940 (LWP 3314) exited] [Thread 0x43c05940 (LWP 3311) exited] [Inferior 1 (process 3268) exited normally] The only difference is that in 7.8 case, GDB continues automatically after giving the ptrace message. Avi -----Original Message----- From: Pedro Alves [mailto:[email protected]] Sent: Thursday, July 31, 2014 1:17 PM To: Avi Gozlan; [email protected] Subject: Re: debug of multithreaded program turns to be impossible during execution On 07/31/2014 10:27 AM, Avi Gozlan wrote: > Hello, > > I'm debugging a multithreaded program using GDB. Various threads are created and exit during execution. GDB copes successfully with the multiple threads (e.g. 'thread apply 3 bt' reports successfully backtrace of thread 3), but then at one point loses control of the program: > > (gdb) c > Continuing. > [New Thread 0x41401940 (LWP 13370)] > [Thread 0x40a00940 (LWP 13333) exited] [New Thread 0x41e02940 (LWP > 13371)] ... > [New Thread 0x45a08940 (LWP 13377)] > [New Thread 0x46409940 (LWP 13378)] > [Thread 0x41e02940 (LWP 13371) exited] [Switching to Thread > 0x45a08940 (LWP 13377)] Cannot remove breakpoints because program is > no longer writable. > Further execution is probably impossible. > 0x00002aaaab98348f in start_thread () from /lib64/libpthread.so.0 > ptrace: No such process. > > Surprisingly, although debugging is no more possible, the program is not dead: I have a vague recollection that this was fixed a while ago. Like, GDB was picking the wrong thread to access memory, and it ended up picking a running or exited thread, and that fails (in either case ptrace complains the same say). > GDB version: 7.6 Is there a chance you could try a more recent GDB version? Ideally 7.8, which we just released. Thanks, Pedro Alves Email secured by Check Point.