Date: Wed, 17 Nov 2004 12:56:48 -0800 From: Sean McNeil <sean@mcneil.com> To: Doug White <dwhite@gumbysoft.com> Cc: current@freebsd.org Subject: Re: Why won't slapd shutdown (kill -0)? Message-ID: <1100725008.21333.2.camel@server.mcneil.com> In-Reply-To: <20041117102623.P25028@carver.gumbysoft.com> References: <1100657472.74795.2.camel@server.mcneil.com> <20041117102623.P25028@carver.gumbysoft.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--=-Bsflrd6qJ12gUDoJBBUP Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Wed, 2004-11-17 at 10:28 -0800, Doug White wrote:=20 > On Tue, 16 Nov 2004, Sean McNeil wrote: >=20 > > This has been happening for a long time with current and hasn't been > > resolved. When I start up slapd, I cannot stop it without kill -9 ing > > it. It would appear stuck in kse and probably has something to do with > > kill -0: >=20 > Mind expanding on this? The backtrace looks normal for a pthread process. > kill -0 just tests signal delivery; the process is completely unaware tha= t > the probe occured, though. The process may also be unkillable if its > stuck in some sort of I/O wait. >=20 > Is the server busy when you signal it? Oh, OK. I didn't look at /usr/local/etc/rc.subr too closely. I have additional information, though.... It appears that all the threads are destroyed yet it is still in the thread processing loop. The process is no longer active at all. I just had a similar problem happen with vlc where I closed it yet it is hanging in the same place as slapd with all the threads gone. Here is the one from vlc: (gdb) bt full #0 _thr_sched_switch_unlocked (curthread=3D0x955000) at pthread_md.h:226 psf =3D {psf_valid =3D 0, psf_flags =3D 0, psf_cancelflags =3D 2995= 2806, psf_interrupted =3D 8, psf_timeout =3D 11279168, psf_signo =3D 0, psf_state =3D 11279168, psf_wait_data =3D {mutex =3D 0x8, cond =3D 0x8, l= ock =3D 0x8, sigwait =3D 0x8}, psf_wakeup_time =3D {tv_sec =3D 0, tv_nsec =3D 0}, psf_sigset =3D { __bits =3D {29950366, 8, 9860096, 0}}, psf_sigmask =3D {__bits =3D {9752576, 1, 9860096, 0}}, psf_seqno =3D 29995347} curkse =3D (struct kse *) 0x952000 resume_once =3D 0 #1 0x0000000801c925e0 in _thr_sched_switch (curthread=3D0x955000) at /usr/src/lib/libpthread/thread/thr_kern.c:607 No locals. #2 0x0000000801c85cb4 in _pthread_join (pthread=3D0x967400, thread_return=3D0x0) at /usr/src/lib/libpthread/thread/thr_join.c:133 curthread =3D (struct pthread *) 0x955000 tmp =3D (void *) 0x0 crit =3D 0x0 ret =3D 0 #3 0x0000000000431749 in __vlc_thread_join (p_this=3D0xad4800, psz_file=3D0x6a283c "src/playlist/playlist.c", i_line=3D130) at src/misc/threads.c:716 i_ret =3D 1 #4 0x000000000040ee1a in playlist_Destroy (p_playlist=3D0xad4800) ---Type <return> to continue, or q <return> to quit--- at src/playlist/playlist.c:130 No locals. #5 0x000000000040c400 in VLC_CleanUp (i_object=3D0) at src/libvlc.c:831 p_intf =3D (intf_thread_t *) 0xad4800 p_playlist =3D (playlist_t *) 0xad4800 p_vout =3D (vout_thread_t *) 0xad4800 p_aout =3D (aout_instance_t *) 0xad4800 p_announce =3D (announce_handler_t *) 0xad4800 p_vlc =3D (vlc_t *) 0x94d400 #6 0x0000000000407415 in main (i_argc=3D1, ppsz_argv=3D0x7fffffffe940) at src/vlc.c:108 i_ret =3D 0 and here is a full trace of slapd: (gdb) bt full #0 0x000000080142e914 in kse_release () at kse_release.S:2 No locals. #1 0x0000000801428e49 in kse_wait (kse=3D0x62a000, td_wait=3D0x0, sigseqno=3D0) at /usr/src/lib/libpthread/thread/thr_kern.c:1843 ts =3D {tv_sec =3D 7647232, tv_nsec =3D 7647232} ts_sleep =3D {tv_sec =3D 60, tv_nsec =3D 0} saved_flags =3D 0 #2 0x0000000801427078 in kse_sched_multi (kmbx=3D0x62efa0) at /usr/src/lib/libpthread/thread/thr_kern.c:1039 curkse =3D (struct kse *) 0x62a000 curthread =3D (struct pthread *) 0x0 td_wait =3D (struct pthread *) 0x62a068 curframe =3D (struct pthread_sigframe *) 0x17f ret =3D 383 #3 0x000000080142afbf in _amd64_enter_uts () at /usr/src/lib/libpthread/arch/amd64/amd64/enter_uts.S:40 No locals. #4 0x0000000000000000 in ?? () No symbol table info available. #5 0x000000000062f000 in ?? () No symbol table info available. #6 0x000000000062a000 in ?? () No symbol table info available. ---Type <return> to continue, or q <return> to quit--- #7 0x0000000000000000 in ?? () No symbol table info available. #8 0x0000000000000000 in ?? () No symbol table info available. #9 0x0000000000000000 in ?? () No symbol table info available. #10 0x0000000000000000 in ?? () No symbol table info available. #11 0x0000000000000000 in ?? () No symbol table info available. #12 0x0000000000000001 in ?? () No symbol table info available. #13 0x0000000801426dd0 in _thr_sched_switch_unlocked () at /usr/src/lib/libpthread/thread/thr_kern.c:904 free_kseq =3D {tqh_first =3D 0x0, tqh_last =3D 0x801534810} gc_ksegq =3D {tqh_first =3D 0x0, tqh_last =3D 0x801534840} next_uniqueid =3D 7 active_kse_groupq =3D {tqh_first =3D 0x62f100, tqh_last =3D 0x74802= 0} active_kse_count =3D 2 free_threadq =3D {tqh_first =3D 0x0, tqh_last =3D 0x801534890} free_kse_count =3D 0 active_kseq =3D {tqh_first =3D 0x62a000, tqh_last =3D 0x6c9220} free_kse_groupq =3D {tqh_first =3D 0x0, tqh_last =3D 0x801534820} ---Type <return> to continue, or q <return> to quit--- kse_lock =3D {l_head =3D 0x6291c0, l_tail =3D 0x6291c0, l_type =3D LCK_ADAPTIVE, l_wait =3D 0x801426150 <_kse_lock_wait>, l_wakeup =3D 0x8014261e0 <_kse_lock_wakeup>} active_kseg_count =3D 2 inited =3D 1 free_thread_count =3D 0 free_kseg_count =3D 0 thr_hashtable =3D {{lh_first =3D 0x0} <repeats 44 times>, { lh_first =3D 0x6c3c00}, {lh_first =3D 0x0}, {lh_first =3D 0x0}, { lh_first =3D 0x0}, {lh_first =3D 0x0}, {lh_first =3D 0x1874400}, { lh_first =3D 0x0}, {lh_first =3D 0x0}, {lh_first =3D 0x0}, {lh_first = =3D 0x0}, { lh_first =3D 0x74b000}, {lh_first =3D 0x0} <repeats 15 times>, { lh_first =3D 0x74b800}, {lh_first =3D 0x0}, {lh_first =3D 0x0}, { lh_first =3D 0x0}, {lh_first =3D 0x0}, {lh_first =3D 0x0}, {lh_first = =3D 0x0}, { lh_first =3D 0x0}, {lh_first =3D 0x0}, {lh_first =3D 0x632000}, { lh_first =3D 0x0} <repeats 23 times>, {lh_first =3D 0x29ab400}, { lh_first =3D 0x0}, {lh_first =3D 0x0}, {lh_first =3D 0x0}, {lh_first = =3D 0x0}, { lh_first =3D 0x0}, {lh_first =3D 0x2983c00}, { lh_first =3D 0x0} <repeats 17 times>} thread_lock =3D {l_head =3D 0x6291e0, l_tail =3D 0x6291e0, l_type =3D LCK_ADAPTIVE, l_wait =3D 0x801426150 <_kse_lock_wait>, l_wakeup =3D 0x8014261e0 <_kse_lock_wakeup>} _tcb_mutex =3D 0x628380 Previous frame inner to this frame (corrupt stack?) which looks like total garbage. Looking at each thread I see that there is only a thread 1,2, and 3: (gdb) thread 1 [Switching to thread 1 (Thread 6 (LWP 100177))]#0 0x000000080142e914 in kse_release () at kse_release.S:2 2 RSYSCALL(kse_release) (gdb) bt #0 0x000000080142e914 in kse_release () at kse_release.S:2 #1 0x000000080141d926 in sig_daemon (arg=3D0x7fffffefef70) at /usr/src/lib/libpthread/thread/thr_sig.c:216 #2 0x0000000801426db5 in kse_sched_single (kmbx=3D0x7fffffefef70) at /usr/src/lib/libpthread/thread/thr_kern.c:902 (gdb) thread 2 [Switching to thread 2 (Thread 7 (sleeping))]#0 _thr_sched_switch_unlocked ( curthread=3D0x632000) at pthread_md.h:226 226 if (ret =3D=3D 0) { Current language: auto; currently c (gdb) bt #0 _thr_sched_switch_unlocked (curthread=3D0x632000) at pthread_md.h:226 #1 0x00000008014265e0 in _thr_sched_switch (curthread=3D0x632000) at /usr/src/lib/libpthread/thread/thr_kern.c:607 #2 0x0000000801419cb4 in _pthread_join (pthread=3D0x74b000, thread_return=3D0x0) at /usr/src/lib/libpthread/thread/thr_join.c:133 #3 0x0000000800719d09 in ldap_pvt_thread_join (thread=3D0x800609070, thread_return=3D0x62a068) at thr_posix.c:165 (gdb) thread 3 [Switching to thread 3 (LWP 100148)]#0 0x000000080142e914 in kse_release () at kse_release.S:2 2 RSYSCALL(kse_release) Current language: auto; currently asm (gdb) bt #0 0x000000080142e914 in kse_release () at kse_release.S:2 #1 0x0000000801428e49 in kse_wait (kse=3D0x62a000, td_wait=3D0x0, sigseqno=3D0) at /usr/src/lib/libpthread/thread/thr_kern.c:1843 #2 0x0000000801427078 in kse_sched_multi (kmbx=3D0x62efa0) at /usr/src/lib/libpthread/thread/thr_kern.c:1039 #3 0x000000080142afbf in _amd64_enter_uts () at /usr/src/lib/libpthread/arch/amd64/amd64/enter_uts.S:40 > > > > (gdb) bt > > #0 0x000000080142e914 in kse_release () at kse_release.S:2 > > #1 0x0000000801428e49 in kse_wait (kse=3D0x62a000, td_wait=3D0x0, > > sigseqno=3D0) > > at /usr/src/lib/libpthread/thread/thr_kern.c:1843 > > #2 0x0000000801427078 in kse_sched_multi (kmbx=3D0x62efa0) > > at /usr/src/lib/libpthread/thread/thr_kern.c:1039 > > #3 0x000000080142afbf in _amd64_enter_uts () > > at /usr/src/lib/libpthread/arch/amd64/amd64/enter_uts.S:40 > > #4 0x0000000000000000 in ?? () > > #5 0x000000000062f000 in ?? () > > #6 0x000000000062a000 in ?? () > > #7 0x0000000000000000 in ?? () > > #8 0x0000000000000000 in ?? () > > #9 0x0000000000000000 in ?? () > > #10 0x0000000000000000 in ?? () > > #11 0x0000000000000000 in ?? () > > #12 0x0000000000000001 in ?? () > > #13 0x0000000801426dd0 in _thr_sched_switch_unlocked () > > at /usr/src/lib/libpthread/thread/thr_kern.c:904 > > Previous frame inner to this frame (corrupt stack?) > > > > >=20 --=-Bsflrd6qJ12gUDoJBBUP Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (FreeBSD) iD8DBQBBm7sQyQsGN30uGE4RAuPxAJ9L47eUGY0C1AVjeU1NDPsB4eoQ9gCeK2Bs zy6uxbU+YyeznhOvYDbfL4A= =ENVQ -----END PGP SIGNATURE----- --=-Bsflrd6qJ12gUDoJBBUP--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1100725008.21333.2.camel>