Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Nov 2008 09:13:26 +0000
From:      Doug Rabson <dfr@rabson.org>
To:        Pawel Jakub Dawidek <pjd@FreeBSD.org>
Cc:        freebsd-current@FreeBSD.org
Subject:   Re: NFS regression.
Message-ID:  <ABFB69E0-FC9C-44B0-BD07-3FB7AF7AC927@rabson.org>
In-Reply-To: <20081117183745.GB1733@garage.freebsd.pl>
References:  <20081117171017.GB1489@garage.freebsd.pl> <4AC8E131-CD12-4075-948F-DA187B4EE2AD@rabson.org> <20081117180253.GA1733@garage.freebsd.pl> <8A43CF07-D06F-4EAF-A171-DF7F10F036F5@rabson.org> <20081117183745.GB1733@garage.freebsd.pl>

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

On 17 Nov 2008, at 18:37, Pawel Jakub Dawidek wrote:

> On Mon, Nov 17, 2008 at 06:07:52PM +0000, Doug Rabson wrote:
>>
>> On 17 Nov 2008, at 18:02, Pawel Jakub Dawidek wrote:
>>
>>> On Mon, Nov 17, 2008 at 05:54:02PM +0000, Doug Rabson wrote:
>>>>
>>>> On 17 Nov 2008, at 17:10, Pawel Jakub Dawidek wrote:
>>>>
>>>>> Hi.
>>>>>
>>>>> I'm seeing this panic very often now with few days old HEAD:
>>>>>
>>>>>
>>>>> Any ideas?
>>>>
>>>> Can you reproduce this with INVARIANTS turned on? That should  
>>>> trigger
>>>> a KASSERT a bit earlier and give me a chance to fix the thing.
>>>
>>> I've INVARIANTS on... Is there some assertion added recently you are
>>> expecting?
>>
>> Hmm. I added an assert in r184921 which ought to have caught this.
>> Could you try this patch and see if it changes anything:
>>
>> Index: rpc/clnt_dg.c
>> ===================================================================
>> --- rpc/clnt_dg.c	(revision 184968)
>> +++ rpc/clnt_dg.c	(working copy)
>> @@ -543,7 +543,7 @@
>>
>> 		if (tv > 0) {
>> 			if (cu->cu_closing || cu->cu_closed)
>> -				error = 0;
>> +				error = ESHUTDOWN;
>> 			else
>> 				error = msleep(cr, &cs->cs_lock,
>> 				    cu->cu_waitflag, cu->cu_waitchan, tv);
>>
>
> Ok, my source is older and doesn't contain the assertion you added. I
> applied the patch above and also added assertion by hand (I'm not  
> setup
> now to upgrade entire system). This is the panic I get with the new
> kernel:
>
> ...
>
> If you want me to convert some of those to file:line, just let me  
> know.

Don't worry about line numbers - I can see where its calling from. Do  
you have a recipe for reproducing this? Also, could you try this patch  
instead of the previous:

Index: rpc/clnt_dg.c
===================================================================
--- rpc/clnt_dg.c	(revision 184968)
+++ rpc/clnt_dg.c	(working copy)
@@ -515,6 +515,7 @@
  			cu->cu_cwnd_wait = FALSE;
  			wakeup(&cu->cu_cwnd_wait);
  		}
+		KASSERT(cr->cr_mrep, ("NULL reply"));
  		goto got_reply;
  	}

@@ -543,7 +544,7 @@

  		if (tv > 0) {
  			if (cu->cu_closing || cu->cu_closed)
-				error = 0;
+				error = ESHUTDOWN;
  			else
  				error = msleep(cr, &cs->cs_lock,
  				    cu->cu_waitflag, cu->cu_waitchan, tv);
@@ -611,6 +612,7 @@
  				rt->rt_rtxcur = rt->rt_srtt + 4*rt->rt_deviate;
  			}

+			KASSERT(cr->cr_mrep, ("NULL reply"));
  			break;
  		}






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ABFB69E0-FC9C-44B0-BD07-3FB7AF7AC927>