This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: gdb runs multi-threaded with non-threaded app and gets SEGV
- From: Ramana Radhakrishnan <ramana dot radhakrishnan at codito dot com>
- To: larry at software-horizons dot com
- Cc: gdb at sources dot redhat dot com
- Date: Sat, 16 Jul 2005 01:12:25 +0530
- Subject: Re: gdb runs multi-threaded with non-threaded app and gets SEGV
- References: <20050715182533.84905.qmail@web52009.mail.yahoo.com>
- Reply-to: ramana dot radhakrishnan at codito dot com
On Fri, 2005-07-15 at 11:25 -0700, Larry Martell wrote:
> I have a program that has 1 line of code - a call to
> a third party libary function:
>
> #include "ni488.h"
>
> int main() {
> int handle = ibdev(0, 7, 0, 10, 1, 0);
> }
That is not enough info for us to help you with . Try CVS head or a more
recent version of gdb and see if that works. Whats the version of libc ,
gcc that you are building your app with ? Also maybe your 3rd party
library might be multithreaded for all we know. Do a ldd on the library
if its a .so and check .
cheers
Ramana
>
> The program is not multi-threaded nor does not link
> with any multi-threaded libs. It's built like this:
>
> gcc -g -o nitest nitest.c -lgpibapi
>
> If I run the program outside of the debugger it does
> not crash.
>
> If I run it from within gdb here's what I get:
>
> $ gdb nitest
> GNU gdb 6.2-2mdk (Mandrakelinux)
> 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
> "i586-mandrake-linux-gnu"...Using host libthread_db
> library "/lib/tls/libthread_db.so.1".
>
> (gdb) start
> Breakpoint 1 at 0x8048398: file nitest.c, line 4.
> Starting program: /home/martell/src/nitest2/nitest
> [Thread debugging using libthread_db enabled]
> [New Thread 1076484320 (LWP 9873)]
> [Switching to Thread 1076484320 (LWP 9873)]
> main () at nitest.c:4
> 4 int handle = ibdev(0, 7, 0, 10, 1, 0);
> (gdb) c
> Continuing.
> [New Thread 1085078448 (LWP 9876)]
> [New Thread 1093471152 (LWP 9877)]
>
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 1085078448 (LWP 9876)]
> 0x4005d609 in ?? () from
> /usr/local/lib/libgpibapi.so.2
>
> Can anyone tell me why gdb runs this as multi-threaded
> and why I get a SEGV in gdb, but I do not when I run
> it outside of gdb?
>
> Thanks!
> -larry