OpenSolaris

Printable Version Enter a New Search
Bug ID 6773309
Synopsis smbd can miss SIGTERM and fail to exit since some threads allow SIGTERM
State 10-Fix Delivered (Fix available in build)
Category:Subcategory utility:cifs
Keywords
Responsible Engineer Alan M Wright
Reported Against
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_106
Fixed In snv_106
Release Fixed solaris_nevada(snv_106)
Related Bugs 6617183 , 6768061 , 6773296
Submit Date 19-November-2008
Last Update Date 16-January-2009
Description
[wdp, 11/18/08]

Because at least one thread in smbd allows SIGTERM (smbd_nbt_listener, for example), a SIGTERM received by smbd may be handled by one of these threads, which will fail to wakeup the main thread sitting in sigsuspend().  As a result, smbd will fail to shut itself down, and the stop method will eventually timeout and SMF will kill the process, thereby moving it to the maintenance state.

I've uploaded a core file showing this situation.  Notice that the smbd object contains SIGTERM (15) in s_sigval, but s_shutdown_flag has not been set:

whitefish# mdb core.1653 
Loading modules: [ libumem.so.1 libc.so.1 libuutil.so.1 libavl.so.1 libak.so.1 libsysevent.so.1 libnvpair.so.1 libtopo.so.1 libproc.so.1 ld.so.1 ]
> smbd/16X
smbd`smbd:      0               8047f38         675             0
                3               0               f               0
                f               3               1               d
                e               10              2               40
Work Around
N/A
Comments
N/A