[haiku-bugs] Re: [Haiku] #8405: PANIC: rw_lock_read_unlock(): lock 0xcdf21664 not read-locked

  • From: "bonefish" <trac@xxxxxxxxxxxx>
  • Date: Tue, 20 Mar 2012 16:57:54 -0000

#8405: PANIC: rw_lock_read_unlock(): lock 0xcdf21664 not read-locked
-----------------------------+----------------------------
   Reporter:  humdinger      |      Owner:  axeld
       Type:  bug            |     Status:  new
   Priority:  normal         |  Milestone:  R1
  Component:  System/Kernel  |    Version:  R1/Development
 Resolution:                 |   Keywords:  locking
 Blocked By:                 |   Blocking:
Has a Patch:  0              |   Platform:  All
-----------------------------+----------------------------

Comment (by bonefish):

 The `do_iterative_fd_io()` code is rather straight forward. Unless it
 falls back to synchronous IO (which it didn't in this case) it never calls
 the finished hook directly (only via `IORequest::SetStatusAndNotify()` and
 only when `do_iterative_fd_io_iterate()` fails). So one would think the
 only possibility for the BFS finished hook to be called twice is that
 `IORequest::NotifyFinished()` is called twice. Which is a bit puzzling,
 since that method sports an `ASSERT(!fIsNotified)` that would be triggered
 in that case (`fIsNotified` is only set there and isn't reset anywhere).

 An alternative explanation would be that the BFS finished hook is not
 called twice, but that something has happened to the `Inode` object in the
 meantime (deleted, overwritten).

 In either event more information is needed: The last part of the syslog
 (just in case BFS logged oddities), an `io_request ...` for the I/O
 request (the parameter to `iterative_io_finished_hook()`), an
 `io_request_owner ...` for its owner, and a stack trace for owning thread.

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

Other related posts: