|
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
|