[haiku-gsoc] Re: [HCD]: Bfs bug #1

  • From: Ingo Weinhold <ingo_weinhold@xxxxxx>
  • To: haiku-gsoc@xxxxxxxxxxxxx
  • Date: Thu, 19 Jun 2008 00:18:57 +0200

On 2008-06-18 at 16:01:11 [+0200], Salvatore Benedetto <emitrax@xxxxxxxxx> 
wrote:
> 2008/6/18 Axel Dörfler <axeld@xxxxxxxxxxxxxxxx>:
> > The more interesting question would be why get_vnode() failed in the
> > first place, though.
> 
> I investigated this a bit and in the serial log I found before the crash
> that the vnode is not becoming "unbusy"
> 
> vnode 3:4260 is not becoming unbusy!
> vnode 0x9149ff00
> PANIC: ASSERT FAILED (src/system/kernel/fs/vfs.cpp:801): oldRefCount > 0
> 
> At first, this seems the reason, but I don't know why this is
> happening and I'll look into
> it more.

Just a hint, if you want to track this down: Turn the dprintf()s about the 
vnode not becoming unbusy into an panic()s and add ktrace_printf()s in all 
places where a node is marked busy/unbusy. When the panic is triggered it 
should be easy to find out which thread marked it busy and what it is doing.

Anyway, we should probably use condition variables for busy vnodes, so that 
we don't run into problems with slow FSs.

CU, Ingo

Other related posts: