Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 21 Oct 2006 08:28:15 +0800
From:      David Xu <davidxu@freebsd.org>
To:        John E Hein <jhein@timing.com>
Cc:        Kostik Belousov <kostikbel@gmail.com>, stable@freebsd.org, John Baldwin <jhb@freebsd.org>
Subject:   Re: locked vnode / nfs... requires kill -9 in ddb
Message-ID:  <200610210828.16146.davidxu@freebsd.org>
In-Reply-To: <17720.62415.274270.378426@gromit.timing.com>
References:  <17718.20457.799395.602805@gromit.timing.com> <17719.56453.21278.746053@gromit.timing.com> <17720.62415.274270.378426@gromit.timing.com>

index | next in thread | previous in thread | raw e-mail

On Saturday 21 October 2006 00:05, John E Hein wrote:
>  > The problem is in thread_suspend_check(), not the sleepq code.
>
> It happened again (triggered by ctrl-z).
> INVARIANTS & WITNESS provided no help.
>
> Is the problem in thread_suspend_check() known?
> MFC-able from HEAD?
>

I don't think thread_suspend_check itself has problem.

> I see this diff.  I'm not sure it will help, but is there any reason
> not to try it in 6 (David Xu CC'd since he made this change)?
>
> Index: kern_thread.c
> ===================================================================
> RCS file: /base/FreeBSD-CVS/src/sys/kern/kern_thread.c,v
> retrieving revision 1.216.2.6
> retrieving revision 1.235
> diff -u -p -r1.216.2.6 -r1.235
> --- kern_thread.c	2 Sep 2006 17:29:57 -0000	1.216.2.6
> +++ kern_thread.c	28 Aug 2006 04:24:51 -0000	1.235
> @@ -910,6 +926,10 @@ thread_suspend_check(int return_instead)
>  		    (p->p_flag & P_SINGLE_BOUNDARY) && return_instead)
>  			return (ERESTART);
>
> +		/* If thread will exit, flush its pending signals */
> +		if ((p->p_flag & P_SINGLE_EXIT) && (p->p_singlethread != td))
> +			sigqueue_flush(&td->td_sigqueue);
> +
>  		mtx_lock_spin(&sched_lock);
>  		thread_stopped(p);
>  		/*
This patch is only for -CURRENT, it is used to release memory occupied by
signal queue which does not exist in -STABLE, it is only called when the
process is exiting.




home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200610210828.16146.davidxu>