Solaris fcntl CPU/Lock update
jra at dp.samba.org
jra at dp.samba.org
Tue Feb 4 18:56:20 GMT 2003
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 at 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.
More information about the samba-technical
mailing list