konsole triggers infinite SIGABRT loop in libkse
Alexander Kabaev
ak03 at gte.com
Thu May 29 09:43:11 PDT 2003
Daniel,
do you have any plans to commit this any time soon?
On Tue, 27 May 2003 00:09:40 -0400 (EDT)
Daniel Eischen <eischen at pcnet1.pcnet.com> wrote:
>
> Hmm, I think I can see how this could occur after a fork. Does this
> solve the problem for you:
>
> Index: thread/thr_sig.c
> ===================================================================
> RCS file: /home/ncvs/src/lib/libpthread/thread/thr_sig.c,v
> retrieving revision 1.51
> diff -u -r1.51 thr_sig.c
> --- thread/thr_sig.c 24 May 2003 02:29:25 -0000 1.51
> +++ thread/thr_sig.c 27 May 2003 04:06:52 -0000
> @@ -175,7 +175,7 @@
> void
> _thr_sig_handler(int sig, siginfo_t *info, ucontext_t *ucp)
> {
> - void (*sigfunc)(int, siginfo_t *, void *);
> + __siginfohandler_t *sigfunc;
> struct kse *curkse;
>
> curkse = _get_curkse();
> @@ -184,7 +184,8 @@
> sigfunc = _thread_sigact[sig - 1].sa_sigaction;
> ucp->uc_sigmask = _thr_proc_sigmask;
> if (((__sighandler_t *)sigfunc != SIG_DFL) &&
> - ((__sighandler_t *)sigfunc != SIG_IGN)) {
> + ((__sighandler_t *)sigfunc != SIG_IGN) &&
> + (sigfunc != (__siginfohandler_t *)_thr_sig_handler)) {
> if (((_thread_sigact[sig - 1].sa_flags & SA_SIGINFO)
> != 0) || (info == NULL))
> (*(sigfunc))(sig, info, ucp);
>
--
Alexander Kabaev
More information about the freebsd-threads
mailing list