Re: WITNESS + WITNESS_SKIPSPIN = panic

2001-04-26 Thread Dag-Erling Smorgrav

Peter Jeremy <[EMAIL PROTECTED]> writes:
> Is there any progress on fixing this?

I posted a patch a couple of months ago.  Search the archives.

DES
-- 
Dag-Erling Smorgrav - [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message



Re: WITNESS + WITNESS_SKIPSPIN = panic

2001-04-16 Thread John Baldwin


On 16-Apr-01 Peter Jeremy wrote:
> On 2001-Apr-14 18:54:28 -0700, John Baldwin <[EMAIL PROTECTED]> wrote:
>>
>>On 14-Apr-01 Peter Jeremy wrote:
>>> Is there any progress on fixing this?
>>> 
>>> Peter
>>
>>It panics?  I'll see if I can reproduce this on Monday.  I never use
>>skipspin.
> 
> A similar problem was reported here in mid-March, ending with the
> following message:
> 
> On Mon, 12 Mar 2001 10:49:51 -0800 (PST), in
> <[EMAIL PROTECTED]>, John Baldwin <[EMAIL PROTECTED]> wrote:
>>Just don't use the skipspin stuff, it shouldn't hurt at all.  The new witness
>>code will hopefully be in by the end of the week.  *crosses fingers*
> 
> I bumped into the same problem last week and couldn't find anything
> that looked like a change in the skipspin behaviour since mid-March.
> 
> Having looked in more detail at the previous thread, I suspect I may
> be seeing something different.  In my case, the kernel is panicing
> very early during the boot process in either line 302 or 305 of
> /sys/kern/subr_witness.c in witness_initialize():
> 
>  299 /* First add in all the specified order lists. */
>  300 for (order = order_lists; order->w_name != NULL; order++) {
>  301 w = enroll(order->w_name, order->w_class);
>  302 w->w_file = "order list";
>  303 for (order++; order->w_name != NULL; order++) {
>  304 w1 = enroll(order->w_name, order->w_class);
>  305 w1->w_file = "order list";
>  306 itismychild(w, w1);
>  307 w = w1;
>  308 }
>  309 }
> 
> The problem is that enroll() will return NULL for spinlocks when
> witness_skipspin is set, but the above code always assumes it
> can de-reference the result from enroll().  (There are two other
> calls to enroll() where a NULL return appears to be acceptable).

Argh, ok.

> I don't understand the mutex initialisation well enough to be able
> to readily work out the correct fix.

I'll fix it later on today.

> Peter

-- 

John Baldwin <[EMAIL PROTECTED]> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message



Re: WITNESS + WITNESS_SKIPSPIN = panic

2001-04-16 Thread Peter Jeremy

On 2001-Apr-14 18:54:28 -0700, John Baldwin <[EMAIL PROTECTED]> wrote:
>
>On 14-Apr-01 Peter Jeremy wrote:
>> Is there any progress on fixing this?
>> 
>> Peter
>
>It panics?  I'll see if I can reproduce this on Monday.  I never use skipspin.

A similar problem was reported here in mid-March, ending with the
following message:

On Mon, 12 Mar 2001 10:49:51 -0800 (PST), in <[EMAIL PROTECTED]>, 
John Baldwin <[EMAIL PROTECTED]> wrote:
>Just don't use the skipspin stuff, it shouldn't hurt at all.  The new witness
>code will hopefully be in by the end of the week.  *crosses fingers*

I bumped into the same problem last week and couldn't find anything
that looked like a change in the skipspin behaviour since mid-March.

Having looked in more detail at the previous thread, I suspect I may
be seeing something different.  In my case, the kernel is panicing
very early during the boot process in either line 302 or 305 of
/sys/kern/subr_witness.c in witness_initialize():

 299 /* First add in all the specified order lists. */
 300 for (order = order_lists; order->w_name != NULL; order++) {
 301 w = enroll(order->w_name, order->w_class);
 302 w->w_file = "order list";
 303 for (order++; order->w_name != NULL; order++) {
 304 w1 = enroll(order->w_name, order->w_class);
 305 w1->w_file = "order list";
 306 itismychild(w, w1);
 307 w = w1;
 308 }
 309 }

The problem is that enroll() will return NULL for spinlocks when
witness_skipspin is set, but the above code always assumes it
can de-reference the result from enroll().  (There are two other
calls to enroll() where a NULL return appears to be acceptable).

I don't understand the mutex initialisation well enough to be able
to readily work out the correct fix.

Peter

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message



RE: WITNESS + WITNESS_SKIPSPIN = panic

2001-04-14 Thread John Baldwin


On 14-Apr-01 Peter Jeremy wrote:
> Is there any progress on fixing this?
> 
> Peter

It panics?  I'll see if I can reproduce this on Monday.  I never use skipspin.

-- 

John Baldwin <[EMAIL PROTECTED]> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message