On Mon, Feb 03, 2003 at 07:38:31AM -0800, Jeff Mandel wrote: > Here's gdb with bt from two processes 12279 and 12327 > > root@reiger# gdb /usr/local/samba/bin/smbd 12279 > GNU gdb 5.0 > Copyright 2000 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 "sparc-sun-solaris2.8"... > "/tmp/12279" is not a core dump: File truncated > Attaching to program `/usr/local/samba/bin/smbd', process 12279 > Reading symbols from /usr/lib/libsec.so.1...done. > Loaded symbols for /usr/lib/libsec.so.1 > Reading symbols from /usr/lib/libgen.so.1...done. > Loaded symbols for /usr/lib/libgen.so.1 > Reading symbols from /usr/lib/libsocket.so.1...done. > Loaded symbols for /usr/lib/libsocket.so.1 > Reading symbols from /usr/lib/libnsl.so.1...done. > Loaded symbols for /usr/lib/libnsl.so.1 > Reading symbols from /usr/lib/libdl.so.1...done. > Loaded symbols for /usr/lib/libdl.so.1 > Reading symbols from /usr/lib/libpopt.so.0...done. > Loaded symbols for /usr/lib/libpopt.so.0 > Reading symbols from /usr/lib/libc.so.1...done. > Loaded symbols for /usr/lib/libc.so.1 > Reading symbols from /usr/lib/libmp.so.2...done. > Loaded symbols for /usr/lib/libmp.so.2 > Reading symbols from > /usr/platform/SUNW,Sun-Fire-280R/lib/libc_psr.so.1...done. > Loaded symbols for /usr/platform/SUNW,Sun-Fire-280R/lib/libc_psr.so.1 > Reading symbols from /usr/lib/nss_files.so.1...done. > Loaded symbols for /usr/lib/nss_files.so.1 > Reading symbols from /usr/lib/nss_ldap.so.1...done. > Loaded symbols for /usr/lib/nss_ldap.so.1 > Reading symbols from /usr/lib/libpthread.so.1...done. > Loaded symbols for /usr/lib/libpthread.so.1 > Reading symbols from /usr/local/ldapsdk5/lib/libldap50.so...done. > Loaded symbols for /usr/local/ldapsdk5/lib/libldap50.so > Reading symbols from /usr/local/ldapsdk5/lib/libssldap50.so...done. > Loaded symbols for /usr/local/ldapsdk5/lib/libssldap50.so > Reading symbols from /usr/local/ldapsdk5/lib/libssl3.so...done. > Loaded symbols for /usr/local/ldapsdk5/lib/libssl3.so > ---Type <return> to continue, or q <return> to quit--- > Reading symbols from /usr/local/ldapsdk5/lib/libnss3.so...done. > Loaded symbols for /usr/local/ldapsdk5/lib/libnss3.so > Reading symbols from /usr/local/ldapsdk5/lib/libnspr4.so...done. > Loaded symbols for /usr/local/ldapsdk5/lib/libnspr4.so > Reading symbols from /usr/local/ldapsdk5/lib/libprldap50.so...done. > Loaded symbols for /usr/local/ldapsdk5/lib/libprldap50.so > Reading symbols from /usr/local/ldapsdk5/lib/libplc4.so...done. > Loaded symbols for /usr/local/ldapsdk5/lib/libplc4.so > Reading symbols from /usr/local/ldapsdk5/lib/libplds4.so...done. > Loaded symbols for /usr/local/ldapsdk5/lib/libplds4.so > Reading symbols from /usr/lib/libdb-3.3.so...done. > Loaded symbols for /usr/lib/libdb-3.3.so > Reading symbols from /usr/lib/libresolv.so.2...done. > Loaded symbols for /usr/lib/libresolv.so.2 > Reading symbols from /usr/lib/libthread.so.1...done. > Loaded symbols for /usr/lib/libthread.so.1 > Reading symbols from /usr/lib/librt.so.1...done. > Loaded symbols for /usr/lib/librt.so.1 > Reading symbols from /usr/lib/libaio.so.1...done. > Loaded symbols for /usr/lib/libaio.so.1 > sol-thread active. > Retry #1: > Retry #2: > Retry #3: > Retry #4: > [New LWP 1 ] > [New Thread 1 (LWP 1)] > Symbols already loaded for /usr/lib/libsec.so.1 > Symbols already loaded for /usr/lib/libgen.so.1 > Symbols already loaded for /usr/lib/libsocket.so.1 > Symbols already loaded for /usr/lib/libnsl.so.1 > Symbols already loaded for /usr/lib/libdl.so.1 > Symbols already loaded for /usr/lib/libpopt.so.0 > Symbols already loaded for /usr/lib/libc.so.1 > Symbols already loaded for /usr/lib/libmp.so.2 > Symbols already loaded for > /usr/platform/SUNW,Sun-Fire-280R/lib/libc_psr.so.1 > Symbols already loaded for /usr/lib/nss_files.so.1 > Symbols already loaded for /usr/lib/nss_ldap.so.1 > Symbols already loaded for /usr/lib/libpthread.so.1 > Symbols already loaded for /usr/local/ldapsdk5/lib/libldap50.so > Symbols already loaded for /usr/local/ldapsdk5/lib/libssldap50.so > Symbols already loaded for /usr/local/ldapsdk5/lib/libssl3.so > Symbols already loaded for /usr/local/ldapsdk5/lib/libnss3.so > Symbols already loaded for /usr/local/ldapsdk5/lib/libnspr4.so > Symbols already loaded for /usr/local/ldapsdk5/lib/libprldap50.so > Symbols already loaded for /usr/local/ldapsdk5/lib/libplc4.so > Symbols already loaded for /usr/local/ldapsdk5/lib/libplds4.so > Symbols already loaded for /usr/lib/libdb-3.3.so > Symbols already loaded for /usr/lib/libresolv.so.2 > Symbols already loaded for /usr/lib/libthread.so.1 > Symbols already loaded for /usr/lib/librt.so.1 > Symbols already loaded for /usr/lib/libaio.so.1 > [Switching to Thread 1 (LWP 1)] > <signal handler called> > (gdb) bt > #0 <signal handler called> > #1 0xfecd9794 in __sigprocmask () from /usr/lib/libthread.so.1 > #2 0xfecce148 in _sigon () from /usr/lib/libthread.so.1 > #3 0xfecd05bc in thr_sigsetmask () from /usr/lib/libthread.so.1 > #4 <signal handler called> > #5 0x65646974 in ?? () > #6 0xfecdb1f0 in usleep () from /usr/lib/libthread.so.1 > #7 0xf7d1c in do_lock_spin (fsp=0x27d450, conn=0x26e760, lock_pid=0, > count=1, > offset=2147483538, lock_type=WRITE_LOCK) at locking/locking.c:175 > #8 0x58bb4 in reply_lockingX (conn=0x26e760, inbuf=0x2173c9 "", > outbuf=0x237819 "", length=75, bufsize=16644) at smbd/reply.c:4714 > #9 0x739bc in switch_message (type=36, inbuf=0x2173c9 "", > outbuf=0x237819 "", > size=75, bufsize=16644) at smbd/process.c:774 > #10 0x73a48 in construct_reply (inbuf=0x2173c9 "", outbuf=0x237819 "", > size=75, bufsize=16644) at smbd/process.c:803 > #11 0x73cf4 in process_smb (inbuf=0x2173c9 "", outbuf=0x237819 "") > at smbd/process.c:897 > #12 0x74814 in smbd_process () at smbd/process.c:1294 > #13 0x314b4 in main (argc=0, argv=0xffbefeac) at smbd/server.c:832 > (gdb) The program is running. Quit anyway (and detach it)? (y or n) y > > trace from 12327: > (gdb) bt > #0 0xfecd9794 in __sigprocmask () from /usr/lib/libthread.so.1 > #1 0xfecce1e8 in _deliversigs () from /usr/lib/libthread.so.1 > #2 0xfecd05c4 in thr_sigsetmask () from /usr/lib/libthread.so.1 > #3 <signal handler called> > #4 0xb in ?? () > #5 0xfecdb1f0 in usleep () from /usr/lib/libthread.so.1 > #6 0xf7d1c in do_lock_spin (fsp=0x26da48, conn=0x257c68, lock_pid=0, > count=20, offset=2147483559, lock_type=WRITE_LOCK) at > locking/locking.c:175 > #7 0x58bb4 in reply_lockingX (conn=0x257c68, inbuf=0x2173c9 "", > outbuf=0x237819 "", length=75, bufsize=16644) at smbd/reply.c:4714 > #8 0x739bc in switch_message (type=36, inbuf=0x2173c9 "", > outbuf=0x237819 "", > size=75, bufsize=16644) at smbd/process.c:774 > #9 0x73a48 in construct_reply (inbuf=0x2173c9 "", outbuf=0x237819 "", > size=75, bufsize=16644) at smbd/process.c:803 > #10 0x73cf4 in process_smb (inbuf=0x2173c9 "", outbuf=0x237819 "") > at smbd/process.c:897 > #11 0x74814 in smbd_process () at smbd/process.c:1294 > #12 0x314b4 in main (argc=0, argv=0xffbefeac) at smbd/server.c:832 > (gdb) The program is running. Quit anyway (and detach it)? (y or n) y
This is a much more interesting backtrace than the other. Why is smbd linking in pthread libraries ? smbd is *NOT* a threaded program. The backtrace you have here shows smbd trying to get a fcntl lock on behalf of a client and failing to get it instantaneously, so going into the lock spin code. It will try 3 times, sleeping for 10 usec between each attempt, and then return a fail to the client. This is not in itself a spinning bug or problem, smbd is meant to do this. I'm worried about the interaction between the Solaris lwp libc code and smbd.... smbd should be a simple program with only one thread of execution. Jeremy.
