We are running samba-3.0.2rc1 under linux-2.4.24 with nss-ldap- 215. Sometimes the smbd children spawned by the main smbd process are killed by a SIGPIPE. A quick look in the samba source shows that SIGPIPE should be blocked all the time. However, looking at a /proc/*/status entry shows the SIGPIPE signal to be unblocked. Below are the pmap and /proc/*/status entries for one of our smbd processes. The SigBlk entry is of particular importance. It is SigBlk: 0000000000000880 for this process which means that the SIGPIPE signal is unblocked. It should be SigBlk: 0000000000001880 for a blocked SIGPIPE signal. Can somebody confirm this? bash-2.05b# pmap 3844 3844: /usr/sbin/smbd -D 08048000 2168K read/exec /usr/sbin/smbd 08266000 36K read/write /usr/sbin/smbd 0826f000 1256K read/write/exec [ anon ] 40000000 76K read/exec /lib/ld-2.3.2.so 40013000 4K read/write /lib/ld-2.3.2.so 40014000 4K read/write [ anon ] 40015000 8K read/exec /usr/lib/gconv/IBM850.so 40017000 4K read/write /usr/lib/gconv/IBM850.so 40018000 8K read/write /etc/samba/private/secrets.tdb 4001a000 196K read/exec /usr/lib/libldap.so.201.1.4 4004b000 4K read/write /usr/lib/libldap.so.201.1.4 4004c000 48K read/exec /usr/lib/liblber.so.201.1.4 40058000 4K read/write /usr/lib/liblber.so.201.1.4 40059000 20K read/exec /lib/libcrypt-2.3.2.so 4005e000 4K read/write /lib/libcrypt-2.3.2.so 4005f000 156K read/write [ anon ] 40086000 60K read/exec /lib/libresolv-2.3.2.so 40095000 4K read/write /lib/libresolv-2.3.2.so 40096000 8K read/write [ anon ] 40098000 72K read/exec /lib/libnsl-2.3.2.so 400aa000 4K read/write /lib/libnsl-2.3.2.so 400ab000 8K read/write [ anon ] 400ad000 8K read/exec /lib/libdl-2.3.2.so 400af000 4K read/write /lib/libdl-2.3.2.so 400b0000 4K read/write [ anon ] 400b1000 1168K read/exec /lib/libc-2.3.2.so 401d5000 16K read/write /lib/libc-2.3.2.so 401d9000 12K read/write [ anon ] 401dc000 76K read/exec /usr/lib/libsasl2.so.2.0.17 401ef000 4K read/write /usr/lib/libsasl2.so.2.0.17 401f0000 184K read/exec /usr/lib/libssl.so.0.9.7 4021e000 12K read/write /usr/lib/libssl.so.0.9.7 40221000 944K read/exec /usr/lib/libcrypto.so.0.9.7 4030d000 72K read/write /usr/lib/libcrypto.so.0.9.7 4031f000 280K read/write [ anon ] 40365000 64K read /usr/lib/samba/valid.dat 40375000 4K read/write /var/lib/samba/messages.tdb 40376000 8K read/write /var/lib/samba/ntdrivers.tdb 40378000 80K read/write /var/lib/samba/ntprinters.tdb 4038c000 8K read/write /var/lib/samba/ntforms.tdb 40390000 8K read/write /var/lib/samba/gencache.tdb 40392000 4K read/write /var/lib/samba/brlock.tdb 40393000 8K read/write /var/lib/samba/locking.tdb 40395000 8K read/write /var/lib/samba/share_info.tdb 40397000 8K read/write /var/lib/samba/registry.tdb 40399000 8K read/write /var/lib/samba/account_policy.tdb 4039b000 264K read/write [ anon ] 403dd000 64K read/write /var/lib/samba/connections.tdb 403f2000 36K read/exec /lib/libnss_files-2.3.2.so 403fb000 4K read/write /lib/libnss_files-2.3.2.so 403fc000 44K read/exec /lib/libnss_ldap-2.3.2.so 40407000 8K read/write /lib/libnss_ldap-2.3.2.so 40409000 36K read/write [ anon ] 40412000 756K read/exec /lib/libdb-4.2.so 404cf000 8K read/write /lib/libdb-4.2.so 404d1000 40K read/write /var/lib/samba/sessionid.tdb 404db000 40K read/write /var/lib/samba/printing/HPLJ PCL6.tdb bfff6000 40K read/write/exec [ anon ] total 8484K bash-2.05b# cat /proc/3844/status Name: smbd State: S (sleeping) Tgid: 3844 Pid: 3844 PPid: 170 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 545 0 FDSize: 32 Groups: VmSize: 8484 kB VmLck: 0 kB VmRSS: 4588 kB VmData: 2028 kB VmStk: 40 kB VmExe: 2168 kB VmLib: 3696 kB SigPnd: 0000000000000000 SigBlk: 0000000000000880 SigIgn: 8000000000002000 SigCgt: 0000001800014641 CapInh: 0000000000000000 CapPrm: 00000000fffffeff CapEff: 00000000fffffeff
On Thu, Jan 29, 2004 at 10:34:17AM +0100, Jerome Borsboom wrote:> We are running samba-3.0.2rc1 under linux-2.4.24 with nss-ldap- > 215. Sometimes the smbd children spawned by the main smbd > process are killed by a SIGPIPE. A quick look in the samba > source shows that SIGPIPE should be blocked all the time. > However, looking at a /proc/*/status entry shows the SIGPIPE > signal to be unblocked.smbd blocks all SIGPIPE. Check the nss-lsap source code to see if it correctly restores the handler. Jeremy.