This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: SIGTTOU on multi-threaded programs
- From: Daniel Jacobowitz <drow at false dot org>
- To: Vladimir Prus <ghost at cs dot msu dot su>
- Cc: gdb at sources dot redhat dot com
- Date: Wed, 24 Mar 2004 09:42:12 -0500
- Subject: Re: SIGTTOU on multi-threaded programs
- References: <200403241328.38519.ghost@cs.msu.su>
On Wed, Mar 24, 2004 at 01:28:38PM +0300, Vladimir Prus wrote:
>
> Hello,
> I'm having trouble running multi-threaded programs under gdb, soon after
> starting the shell says that gdb is "stopped" -- and it seems like it
> receives SIGTTOU.
>
> Here's a simple program:
>
> #include <pthread.h>
>
> void* thread(void*)
> {
> for(;;);
> }
>
> int main()
> {
> pthread_t p1;
> pthread_create(&p1, 0, thread, 0);
> return 0;
> }
>
> When I run
>
> stty tostop
> g++ -g threads.cpp -pthread
> gdb ./a.out
>
> and then "run", I see:
>
> [1]+ Stopped gdb a.out
>
> The "stty tostop" makes the terminal send 'SIGTTOU' if background process
> writes something to console. The problem is that midnight commander also sets
> this flag -- which means I can't debug multi-threaded programs under MC.
>
> The debugged program and gdb have different process group id, and debugged
> program is initially in the foreground -- so gdb in in background. It looks
> like gdb tries to output something while it's still in background, and
> recieves the signal.
>
> Is this a known issue? What can be done about it? I've worked this around for
> one program using code that adds the program to the same process group as the
> parent, so both the program and gdb are consired to be in foreground by the
> terminal, but that does not look the right solution.
>
> I'm using "GNU gdb 6.0".
It's not a known issue. If you can just verify what is being printed
while GDB does not have the terminal, we can fix it - GDB already has
hooks to take and release the terminal but is obviously not using them
somewhere it should be.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer