Re: Inadvertently run inferior threads
Pedro Alves <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <[email protected]> |
On 03/14/2015 02:55 PM, Eli Zaretskii wrote: >> Date: Sat, 14 Mar 2015 13:40:51 +0000 >> From: Pedro Alves <[email protected]> >> >>> Once this happens, the debugging session seems to be ruined: the only >>> thing I can do is kill the inferior and quit the debugger. Because >>> there doesn't seem to be any way of stopping the threads again, not on >>> Windows anyway. >> >> The threads are probably stopped, and GDB managed to get out of >> sync somehow. > > In that case, the cause of it getting out of sync is the new thread > that was started (probably by Windows)? Calling a function that ends up starting new threads should work OK, but indeed that seems to be broken... On GNU/Linux, and a trivial program with: ~~~ void start_thread (void) { pthread_t thread; pthread_create (&thread, NULL, thread_function, NULL); } ~~~ results in: (gdb) p start_thread () [New Thread 0x7ffff7fc1700 (LWP 9903)] $1 = void (gdb) info threads Id Target Id Frame 2 Thread 0x7ffff7fc1700 (LWP 9903) "start-thread-in" (running) * 1 Thread 0x7ffff7fc2740 (LWP 9899) "start-thread-in" main () at start-thread-infcall.c:35 Thanks, Pedro Alves