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