Re: KSE / interrupt panic (patch)

2002-06-30 Thread Julian Elischer
thanks.. I was aware of he race but it looks as if I miscaldulated it somehow.. I will look at the source again and confirm your patch. As you say, msleep() is of the same form and has the same problems. On Mon, 1 Jul 2002, David Xu wrote: > Now let me describe where the race is: > > Thread A:

Re: KSE / interrupt panic (patch)

2002-06-30 Thread David Xu
Now let me describe where the race is: Thread A: | Thread B: cv_timedwait() | softclock() | cv_timedwait_end()

Re: KSE / interrupt panic

2002-06-30 Thread David Xu
setrunqueue() call can be simply removed from cv_timedwait_end(), because there is a race in softclock() and callout_stop(), when cv_timedwait_end() losts a race, it means that that thread is already running(wokenup by another thread), when you setrunqueue() it, of course it will panic. in cv_tim

Re: KSE / interrupt panic

2002-06-30 Thread Matthew Dillon
Got a weird one. No backtrace. gdb got confused and wouldn't attach properly. -Matt Fatal trap 12: page fault while in kernel mode cpuid = 0; lapic.id = 0100 fault virtual address = 0xd0c45a fault code = supervisor write, page

Re: KSE / interrupt panic

2002-06-30 Thread Julian Elischer
On Sun, 30 Jun 2002, Matthew Dillon wrote: >Got another one. Different panic, same place. > > panic: setrunqueue: bad thread state > cpuid = 0; lapic.id = 0100 > Debugger("panic") > Stopped at Debugger+0x46: xchgl %ebx,in_Debugger.0 > db> trace > Debugger(c02ec2ba) at Debugger

Re: KSE / interrupt panic

2002-06-30 Thread Matthew Dillon
:others have seen this one too :and the common element is that it's always in :setrunqueue() called from an interrupt. :it is also often via cv_*SOMETHING*() : :I Thought we had cleared these up but apparently not :-/ : There are a bunch of wakeup race conditions in the CV code where the

Re: KSE / interrupt panic

2002-06-30 Thread Julian Elischer
others have seen this one too and the common element is that it's always in setrunqueue() called from an interrupt. it is also often via cv_*SOMETHING*() I Thought we had cleared these up but apparently not :-/ On Sun, 30 Jun 2002, Matthew Dillon wrote: >Got another one. Different panic,