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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.