From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19765 invoked by alias); 15 Aug 2008 08:49:55 -0000 Received: (qmail 19753 invoked by uid 22791); 15 Aug 2008 08:49:54 -0000 X-Spam-Check-By: sourceware.org Received: from qb-out-1314.google.com (HELO qb-out-1314.google.com) (72.14.204.170) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 15 Aug 2008 08:48:37 +0000 Received: by qb-out-1314.google.com with SMTP id e19so953556qbe.0 for ; Fri, 15 Aug 2008 01:48:35 -0700 (PDT) Received: by 10.86.91.12 with SMTP id o12mr1768300fgb.1.1218790114941; Fri, 15 Aug 2008 01:48:34 -0700 (PDT) Received: by 10.86.27.5 with HTTP; Fri, 15 Aug 2008 01:48:34 -0700 (PDT) Message-ID: <568faa340808150148o45a07ba6t889c2d6e218ee8b0@mail.gmail.com> Date: Fri, 15 Aug 2008 18:24:00 -0000 From: "Kari Nalli" To: gdb@sourceware.org Subject: Re: gdb and muti threads with recvfrom In-Reply-To: <48A45D1B.6050609@vmware.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <568faa340808140255g6f00a83fl4661d015137fbdfc@mail.gmail.com> <48A45D1B.6050609@vmware.com> X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2008-08/txt/msg00186.txt.bz2 Hi, >2008/8/14 Michael Snyder : > Something to do with signals and threads. > I think signals in one thread are not supposed to interrupt > other threads, but I'm not sure (and it may depend on the OS). > > Could be that one thread was waiting on a blocking system call, > and another thread took a SIGTRAP from a gdb breakpoint or > something... There where no breakpoints set in this case, can GDB generate signals for some reason? very old post http://sourceware.org/ml/rda/2005-q4/msg00009.html Says that GDB uses SIGSTOP to stop process -----------------clip------------------------ from: http://www.linux-tutorial.info/modules.php?name=MContent&pageid=289 If a signal has been sent to a process that is in kernel mode, it is dealt with immediately on returning to user mode. -----------------clip------------------------ So should this be interpreded that all system calls should be writen so that thy can be interupted when running with GDB and should be recalled if intrupted to get same beheviour as normally when GDB is not used? Br, Kari 2008/8/14 Michael Snyder : > Kari Nalli wrote: >> >> Hi >> I wore little program that some times (not all times may be 1 in 3) >> behaves different when run in gdb. >> >> here is output when run from console >> $ ./Threads >> Thread=4 errno=11 >> Thread=3 errno=11 >> Thread=2 errno=11 >> Thread=1 errno=11 >> Thread=4 errno=11 >> Thread=3 errno=11 >> Thread=2 errno=11 >> Thread=1 errno=11 >> >> >> and from gdb >> >> (gdb) run >> Starting program: /home/nallkar/tmp/gdb_test/Threads >> [Thread debugging using libthread_db enabled] >> [New Thread 0xb7f836d0 (LWP 28416)] >> [New Thread 0xb7f82b90 (LWP 28417)] >> [New Thread 0xb7581b90 (LWP 28418)] >> [New Thread 0xb6b80b90 (LWP 28419)] >> [New Thread 0xb617fb90 (LWP 28420)] >> Thread=1 errno=4 >> Thread=1 errno=11 >> Thread=2 errno=11 >> Thread=3 errno=11 >> Thread=4 errno=11 >> Thread=1 errno=11 >> Thread=2 errno=11 >> Thread=3 errno=11 >> Thread=4 errno=11 >> >> gdb information: >> >> (gdb) show version >> GNU gdb 6.8 >> Copyright (C) 2008 Free Software Foundation, Inc. >> License GPLv3+: GNU GPL version 3 or later >> >> This is free software: you are free to change and redistribute it. >> There is NO WARRANTY, to the extent permitted by law. Type "show copying" >> and "show warranty" for details. >> This GDB was configured as "i686-pc-linux-gnu". >> >> And system information >> $ ldd Threads >> linux-gate.so.1 => (0x007f6000) >> libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00101000) >> libpthread.so.0 => /lib/libpthread.so.0 (0x00b45000) >> libc.so.6 => /lib/libc.so.6 (0x009d4000) >> libm.so.6 => /lib/libm.so.6 (0x00b16000) >> libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00dc4000) >> /lib/ld-linux.so.2 (0x009b2000) >> >> OS is CentOs 5.x compiled with premtive kernel. >> 2.6.18-92.1.6.el5.preemptive_kernel_local #1 SMP PREEMPT Mon Aug 4 >> 09:08:42 EEST 2008 i686 i686 i386 GNU/Linux >> >> And the intressting function where the prints are comming is recvfrom >> (no data is send to sockets so they should timeout) >> According to IEEE Std 1003.1, 2004 Edition After timeout Recvfrom >> should return with errno set to [EAGAIN] or [EWOULDBLOCK]. In my >> system related errno defines are >> #define EINTR 4 /* Interrupted system call */ >> #define EAGAIN 11 /* Try again */ >> >> can any one tell what causes the different behaviour? >> >> Br, Kari > > Something to do with signals and threads. > I think signals in one thread are not supposed to interrupt > other threads, but I'm not sure (and it may depend on the OS). > > Could be that one thread was waiting on a blocking system call, > and another thread took a SIGTRAP from a gdb breakpoint or > something... > > > >