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

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-20  1:37 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-05-20  1:37 Nick NoSpam [this message]
2004-05-24  9:22 ` Nick NoSpam
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=1085016786.25625.825.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