smbd process block

Sam Liddicott sam at liddicott.com
Wed Feb 18 03:06:25 MST 2009


* Goran Lowkrantz wrote, On 17/02/09 22:38:
> Three root folders
> 20655 in 247 subfolders
> 798 in 24 subfolders
> 2709 in 128 subfolders
It would be good if you could send a tcp dump that we could run through 
wireshark

Something like

tcpdump -n -i ETHNAME host SERVERNAME and host CLIENT NAME and \( port 
445 or port 139 \) -s 1500 -w tcp.dump

[we should probably really do -s 65535 but I don't think you are doing 
any big reads or writes that are interested in]

and then stimulate the error as soon as you can.

The tcp.dump log file may be very large, but you can either load it into 
wireshark and see what is going on, or you could compress it and put it 
somewhere we could download it.

[You might also want to be careful of using any passwords that matter.]

Then we can see if it hangs "doing nothing" or "doing something". I've 
seen some infinite loop hangs doing dir reads on a NAS box which doesn't 
continue properly.

Sam
>
> /glz
>
> --On Tuesday, February 17, 2009 7:59 PM +0000 Sam Liddicott 
> <sam at liddicott.com> wrote:
>
>> I'm mobile right now, so I can't check the log.
>> Please can you say how many files are in the folders being monitored?
>>
>> Sam
>>
>> -----Original Message-----
>> From: Goran Lowkrantz <goran.lowkrantz at ismobile.com>
>> Sent: 16 February 2009 22:42
>> To: samba-technical at lists.samba.org
>> Subject: smbd process block
>>
>>
>> I have few Samba servers running FreeBSD 7.1 were we have a problem with
>> smbd process blocking for a few Vista systems that run a program that
>> watch  directories and files on the samba shares.
>>
>> On my test setup I have managed to get a hang in less than 30 min.
>>
>> Samba 3.2.7 is built with minimum functions and full debug. Options 
>> don't
>> seems to have any impact on the problem.
>>
>> The PC uses Vista Business SP1 and all patches, I run a DAM program
>> called  IMatch ver 3.6.076 that watches for changes in the photo
>> database. No other  application I have tested has the same problems. For
>> example, Adobe  Lightroom 2.2 works without problems when setup with a
>> watched folder.
>>
>> I have attached logfiles from samba with the following extra settings:
>>  debug pid = yes
>>  debug timestamp = no
>>  debug prefix timestamp = yes
>>  debug uid = yes
>>  log level = 10
>>
>> The PID of the server that hangs is 29162.
>>
>> The FreeBSD server is an up-to-date quad AMD server with 8GB running
>> 7.1-STABLE. In normal operation, I see the following:
>>
>> # sockstat | grep 445
>> glz      smbd       7828  23 tcp4   10.255.253.1:445
>> 10.255.253.2:57355 root     smbd       76917 19 tcp4   127.0.0.1:445
>> *:*
>> root     smbd       76917 20 tcp4   10.255.253.1:445      *:*
>>
>> When I get the hang, it looks like this:
>> # sockstat | grep 445
>> root     smbd       7828  23 tcp4   10.255.253.1:445
>> 10.255.253.2:57355 root     smbd       76917 19 tcp4   127.0.0.1:445
>> *:*
>> root     smbd       76917 20 tcp4   10.255.253.1:445      *:*
>>
>> and the GDB session:
>> # gdb /usr/local/sbin/smbd 7828
>> GNU gdb 6.1.1 [FreeBSD]
>> 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 "amd64-marcel-freebsd"...
>> Attaching to program: /usr/local/sbin/smbd, process 7828
>> Reading symbols from /usr/local/lib/libldap-2.3.so.2...done.
>> Loaded symbols for /usr/local/lib/libldap-2.3.so.2
>> Reading symbols from /usr/local/lib/liblber-2.3.so.2...done.
>> Loaded symbols for /usr/local/lib/liblber-2.3.so.2
>> Reading symbols from /usr/local/lib/libcups.so.2...done.
>> Loaded symbols for /usr/local/lib/libcups.so.2
>> Reading symbols from /usr/lib/libssl.so.5...done.
>> Loaded symbols for /usr/lib/libssl.so.5
>> Reading symbols from /lib/libcrypto.so.5...done.
>> Loaded symbols for /lib/libcrypto.so.5
>> Reading symbols from /lib/libz.so.4...done.
>> Loaded symbols for /lib/libz.so.4
>> Reading symbols from /lib/libm.so.5...done.
>> Loaded symbols for /lib/libm.so.5
>> Reading symbols from /lib/libcrypt.so.4...done.
>> Loaded symbols for /lib/libcrypt.so.4
>> Reading symbols from /usr/lib/libpam.so.4...done.
>> Loaded symbols for /usr/lib/libpam.so.4
>> Reading symbols from /usr/local/lib/libexecinfo.so.1...done.
>> Loaded symbols for /usr/local/lib/libexecinfo.so.1
>> Reading symbols from /usr/local/lib/libiconv.so.3...done.
>> Loaded symbols for /usr/local/lib/libiconv.so.3
>> Reading symbols from /usr/local/lib/libdmalloc.so.1...done.
>> Loaded symbols for /usr/local/lib/libdmalloc.so.1
>> Reading symbols from /usr/local/lib/libpopt.so.0...done.
>> Loaded symbols for /usr/local/lib/libpopt.so.0
>> Reading symbols from /lib/libthr.so.3...done.
>> [New Thread 0x800a62e00 (LWP 100076)]
>> Loaded symbols for /lib/libthr.so.3
>> Reading symbols from /lib/libc.so.7...done.
>> Loaded symbols for /lib/libc.so.7
>> Reading symbols from /usr/local/lib/libsasl2.so.2...done.
>> Loaded symbols for /usr/local/lib/libsasl2.so.2
>> Reading symbols from /usr/local/lib/libintl.so.8...done.
>> Loaded symbols for /usr/local/lib/libintl.so.8
>> Reading symbols from /usr/local/lib/nss_ldap.so.1...done.
>> Loaded symbols for /usr/local/lib/nss_ldap.so.1
>> Reading symbols from /usr/lib/libcom_err.so.4...done.
>> Loaded symbols for /usr/lib/libcom_err.so.4
>> Reading symbols from /libexec/ld-elf.so.1...done.
>> Loaded symbols for /libexec/ld-elf.so.1
>> [Switching to Thread 0x800a62e00 (LWP 100076)]
>> 0x0000000801f01d6c in select () from /lib/libc.so.7
>> (gdb) directory /usr/ports/net/samba32-devel/work/samba-3.2.7/source/
>> Source directories searched:
>> /usr/ports/net/samba32-devel/work/samba-3.2.7/source:$cdir:$cwd
>> (gdb) bt
>> # 0  0x0000000801f01d6c in select () from /lib/libc.so.7
>> # 1  0x0000000801d0f4d4 in select () from /lib/libthr.so.3
>> # 2  0x00000000006749fe in sys_select (maxfd=24, readfds=0x7fffffffd420,
>> writefds=0x7fffffffd3a0, errorfds=0x0, tval=0x7fffffffd500)
>>     at lib/select.c:93
>> # 3  0x00000000004df64c in smbd_process () at smbd/process.c:839
>> # 4  0x0000000000854074 in main (argc=2, argv=0x7fffffffd638) at
>> smbd/server.c:1450
>> (gdb) frame 2
>> # 2  0x00000000006749fe in sys_select (maxfd=24, readfds=0x7fffffffd420,
>> writefds=0x7fffffffd3a0, errorfds=0x0, tval=0x7fffffffd500)
>>     at lib/select.c:93
>> 93              ret = select(maxfd,readfds2,writefds,errorfds,tval);
>> (gdb) print tval
>> $1 = (struct timeval *) 0x7fffffffd500
>> (gdb) print *tval
>> $2 = {tv_sec = 59, tv_usec = 999977}
>> (gdb) The program is running.  Quit anyway (and detach it)? (y or n) y
>> Detaching from program: /usr/local/sbin/smbd, process 7828
>>
>> The following is a truss of the process until I have seen the switch to
>> root as owner:
>> # time truss -p 8307
>> gettimeofday({1234648077.989004 },0x0)           = 0 (0x0)
>> gettimeofday({1234648077.989081 },0x0)           = 0 (0x0)
>> select(24,{6 23},{},0x0,{21.288167 })            = 0 (0x0)
>> gettimeofday({1234648099.279293 },0x0)           = 0 (0x0)
>> gettimeofday({1234648099.279370 },0x0)           = 0 (0x0)
>> gettimeofday({1234648099.279417 },0x0)           = 0 (0x0)
>> select(24,{6 23},{},0x0,{59.989982 })            = 1 (0x1)
>> gettimeofday({1234648102.286493 },0x0)           = 0 (0x0)
>> read(23,"\0\0\0r",4)                             = 4 (0x4)
>> read(23,"\M^?SMB2\0\0\0\0\^X\a\M-H\0\0\0"...,114) = 114 (0x72)
>> geteuid(0x3e8,0x3e8,0x2,0x800adf750,0x2,0x800adf750) = 0 (0x0)
>> getegid(0x3e8,0x3e8,0x2,0x801eadb8c,0xffffff006cf16a50,0x7fffffffd138) =
>> 0  (0x0)
>> __sysctl(0x7fffffffd0a0,0x2,0x7fffffffd0bc,0x7fffffffd0b0,0x0,0x0) = 0
>> (0x0) 0.000u 0.001s 2:36.56 0.0%    0+0k 0+0io 0pf+0w
>>
>> # sockstat | grep 445
>> glz      smbd       8307  23 tcp4   10.255.253.1:445
>> 10.255.253.2:57438 root     smbd       76917 19 tcp4   127.0.0.1:445
>> *:*
>> root     smbd       76917 20 tcp4   10.255.253.1:445      *:*
>> # ps -awxl | grep 8307
>>  1000  8307  8556   0  44  0 34672  7984 select IX    ??    0:04.57
>> /usr/local/sbin/smbd -D -s /usr/local/etc/smb.conf
>>     0  8556  3273   0   8  0  4600  1204 wait   I+    p0    0:00.00 
>> truss
>> -p 8307
>> # sockstat | grep 445
>> root     smbd       8307  23 tcp4   10.255.253.1:445
>> 10.255.253.2:57438 root     smbd       76917 19 tcp4   127.0.0.1:445
>> *:*
>> root     smbd       76917 20 tcp4   10.255.253.1:445      *:*
>> # ps -awxl | grep 8307
>>     0  8307  8556   0  44  0 34672  7984 select SX    ??    0:04.57
>> /usr/local/sbin/smbd -D -s /usr/local/etc/smb.conf
>>     0  8556  3273   0   8  0  4600  1204 wait   I+    p0    0:00.00 
>> truss
>> -p 8307
>>
>>
>> I can recreate this at any time and the condition by killing the
>> offending  smbd process and the PC reconnects just fine.
>>
>> Hope this helps to pin this down. As I can recreate the hang, please let
>> me  know if there is any more information I can supply.
>>
>> /glz
>>
>> .................................................. the future isMobile
>>
>>   Goran Lowkrantz <goran.lowkrantz at ismobile.com>
>>   System Architect, isMobile, Aurorum 2, S-977 75 Luleå, Sweden
>>   Phone: +46(0)920-75559
>>   Mobile: +46(0)70-587 87 82 Fax: +46(0)70-615 87 82
>>
>> http://www.ismobile.com ...............................................
>
>
>
> ................................................... the future isMobile
>
>  Goran Lowkrantz <goran.lowkrantz at ismobile.com>
>  System Architect, isMobile, Aurorum 2, S-977 75 Luleå, Sweden
>  Phone: +46(0)920-75559
>  Mobile: +46(0)70-587 87 82 Fax: +46(0)70-615 87 82
>
> http://www.ismobile.com ...............................................




More information about the samba-technical mailing list