[haiku-bugs] Re: [Haiku] #5229: PANIC: acquire_spinlock(): Failed to acquire spinlock 0xcdc5eb68 for a long time!

  • From: "bonefish" <trac@xxxxxxxxxxxx>
  • Date: Mon, 11 Jan 2010 00:27:26 -0000

#5229: PANIC: acquire_spinlock(): Failed to acquire spinlock 0xcdc5eb68 for a 
long
time!
---------------------------+------------------------------------------------
 Reporter:  anevilyak      |       Owner:  bonefish      
     Type:  bug            |      Status:  in-progress   
 Priority:  normal         |   Milestone:  R1            
Component:  System/Kernel  |     Version:  R1/Development
 Keywords:                 |   Blockedby:                
 Platform:  All            |    Blocking:                
---------------------------+------------------------------------------------
Changes (by bonefish):

  * status:  new => in-progress


Comment:

 Replying to [comment:3 anevilyak]:
 > In any case, I only ever see this problem with the scheduling_recorder,
 and the backtraces consistently point to the guts of the profiler so I'd
 unfortunately have to say this appears unrelated to your and Matt's
 problems, and instead is just a simple lock order reversal or similar
 issue in the kernel profiler :/

 Yep, that's indeed a locking order reversal. SystemProfiler::NextBuffer()
 uses a condition variable while holding the object's lock, and when waking
 up a waiting thread the condition variable code will enter the system
 profiler while holding the condition variable lock.

 Regarding "calling" (and "bt"), ATM there's the somewhat annoying
 limitation on SMP machines that the stack trace code doesn't handle
 threads currently running on other CPUs specially. Which it should,
 though, since the current stack pointer in the thread's data is obsolete
 at this point. The command you're looking for is "ls" (lookup symbol),
 though. "help | grep symbol" FTW. :-)

-- 
Ticket URL: <http://dev.haiku-os.org/ticket/5229#comment:4>
Haiku <http://dev.haiku-os.org>
Haiku - the operating system.

Other related posts: