Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Nick NoSpam <nicknospam@optonline.net>
To: gdb@sources.redhat.com
Subject: Re: breakpoints and pthreads
Date: Mon, 24 May 2004 09:22:00 -0000	[thread overview]
Message-ID: <1085387287.19252.836.camel@nimble.325Bayport> (raw)
In-Reply-To: <1085016786.25625.825.camel@nimble.325Bayport>

Any ideas on this issue?  Should I file a bug?

I fiddled w/ this a little more and found that setting a breakpoint in
the thread callback ('wait_thread' in the example below) causes
problems.
This is the output I get when the thread gets created:

Program received signal SIG32, Real-time event 32.
Cannot remove breakpoints because program is no longer writable.
It might be running in another process.
Further execution is probably impossible.
0x4002ba34 in pthread_getconcurrency () from /lib/libpthread.so.0

Regards,
Nick


On Wed, 2004-05-19 at 21:33, Nick NoSpam wrote:
> Hi,
> 
> I started using gdb a few months ago on RedHat (originally installed as
> version 7.2).  While doing so, my little test program--which spawns a
> thread--would stop execution in all threads (the main process and the
> spawned thread) when a breakpoint was hit.  I read the documentation and
> this is appropriate behavior:
>   Section 5.4 Stopping and starting multi-threaded programs
>   ...
>   Whenever your program stops under GDB for any reason, *all* threads
>   of execution stop, not just the current thread.
> 
> I recently switched to Gentoo which uses newer versions of practically
> all libraries than my RH 7.2.  When I compile and run the same program
> now, the spawned thread does not stop when a breakpoint is hit.
> 
> Here is the simple program:
>    #include <stdio.h>
>    #include <pthread.h>
>    #include <unistd.h>
> 
>    static void *wait_thread(void *arg);
> 
>    int main(int argc, char *argv[])
>    {
>       printf("[ main ] Program enter.\n");
> 
>       pthread_t t;
>       int res = pthread_create(&t, NULL, wait_thread, NULL);
>       if(res != 0)
>       {
>          printf("[ main ] Error creating wait thread!\n");
>       }
> 
>       printf("[ main ] Going to sleep...\n");
>       sleep(3);
>       printf("[ main ] Exitting...\n");
> 
>       return(0);
>    }
> 
>    static void *wait_thread(void *arg)
>    {
>       while(1)
>       {
>          printf("[ wait_thread ] Waiting in thread\n");
>          sleep(1);
>       }
>    }
> 
> 
> Compiled with:
>    gcc -g threadtest.c -o threadtest -lpthread
> 
> Here is a snippet of the debug session:
>    nick@nimble gdbtest $ gdb threadtest
>    GNU gdb 6.1
>    Copyright 2004 Free Software Foundation, Inc.
>    GDB is free software, covered by the GNU General Public License, and
>    you are welcome to change it and/or distribute copies of it under
>    certain conditions.
>    Type "show copying" to see the conditions.
>    There is absolutely no warranty for GDB.  Type "show warranty" for
>    details.
>    This GDB was configured as "i686-pc-linux-gnu"...Using host
>    libthread_db library "/lib/libthread_db.so.1".
> 
>    (gdb) break main
>    Breakpoint 1 at 0x8048444: file threadtest.c, line 9.
>    (gdb) break 18
>    Breakpoint 2 at 0x8048488: file threadtest.c, line 18.
>    (gdb) run
>    Starting program: /home/nick/gdbtest/threadtest
> 
>    Breakpoint 1, main (argc=1, argv=0xbffff6c4) at threadtest.c:9
>    9          printf("[ main ] Program enter.\n");
>    (gdb) n
>    [ main ] Program enter.
>    12         int res = pthread_create(&t, NULL, wait_thread, NULL);
>    (gdb) n
>    [ wait_thread ] Waiting in thread
> 
>    Program received signal SIG32, Real-time event 32.
>    0x4002ba34 in pthread_getconcurrency () from /lib/libpthread.so.0
>    (gdb) [ wait_thread ] Waiting in thread
>    [ wait_thread ] Waiting in thread
>    [ wait_thread ] Waiting in thread
>    [ wait_thread ] Waiting in thread
>    [ wait_thread ] Waiting in thread
>    [ wait_thread ] Waiting in thread
>    [ wait_thread ] Waiting in thread
> 
> 
> The thread's output "[ wait_thread ] Waiting in thread" continues to
> print despite the debugger stopped (in main).
> 
> 
> Version Info:
> gdb: 6.1 (configured as "i686-pc-linux-gnu")
> gcc: 3.3.2 (Thread model: posix, configured with --enable-threads=posix)
> glibc:  2.3.2
> kernel: 2.6.5 (vanilla)
> 
> 
> Regards,
> Nick
> 
> 


  reply	other threads:[~2004-05-24  9:22 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-05-20  1:37 Nick NoSpam
2004-05-24  9:22 ` Nick NoSpam [this message]
2004-06-01  5:05   ` Nick NoSpam
2004-06-01 11:46     ` pthread type 1x1 or MxN MuthuKumar-15

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1085387287.19252.836.camel@nimble.325Bayport \
    --to=nicknospam@optonline.net \
    --cc=gdb@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox