[haiku-bugs] Re: [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)
- From: "bonefish" <trac@xxxxxxxxxxxx>
- Date: Tue, 10 Mar 2015 10:44:33 -0000
#11718: userlandfs -> Failed to acquire spinlock for a long time (last caller:
0x0,
value: deadbeef)
---------------------------------------+----------------------------
Reporter: ttcoder | Owner: bonefish
Type: bug | Status: new
Priority: high | Milestone: R1/beta1
Component: File Systems/UserlandFS | Version: R1/Development
Resolution: | Keywords:
Blocked By: | Blocking:
Has a Patch: 0 | Platform: All
---------------------------------------+----------------------------
Comment (by bonefish):
A quick info on the involved userlandfs classes:
* `Volume`: Each mounted instance is associated with an instance of this
class. Among other things it does a bit of book keeping so that a buggy
client FS can't cause vnode or file descriptor reference imbalances and
also has fallback implementations for vital FS hooks, so that the FS is
well-behaved and can still be unmounted, even if the connection to the
userlandfs server is lost (e.g. due to crashing or being killed).
* `FileSystem`: Each client file system (type) that has a mounted volume
is associated with an instance of this class. It manages the connection to
the userlandfs server instance for that file system. `FileSystem` objects
are reference counted. When the last volume of a client file system has
been unmounted, the object is destroyed.
* `RequestPortPool`: Manages a pool of (regular) ports that the
userlandfs kernel module uses for communication with the userlandfs server
instance. `FileSystem` has an aggregate `RequestPortPool`.
According to the stack strace the 0xdeadbeef is encountered when locking
the `FileSystem`'s `RequestPortPool`. That suggests that the `FileSystem`
has been deleted already. Given that the `FileSystem` could be accessed
via the `Volume` in the first place, the `Volume` hadn't been deleted at
that point yet. Since a mutex is involved, it is possible that the
`Volume` already has been deleted at the time of the panic, though.
So, the situation suggests either a reference counting/race condition
issue in userlandfs or the VFS is calling the `unmount()` hook while the
`read_fs_info()` hook is still being executed.
ATM I can't think of anything that the client FS (cddafs) can do to cause
either problem. So I guess it's a genuine userlandfs or VFS bug.
--
Ticket URL: <https://dev.haiku-os.org/ticket/11718#comment:9>
Haiku <https://dev.haiku-os.org>
Haiku - the operating system.
Other related posts:
- » [haiku-bugs] [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)- ttcoder
- » [haiku-bugs] [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)- ttcoder
- » [haiku-bugs] Re: [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)- ttcoder
- » [haiku-bugs] Re: [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)- diver
- » [haiku-bugs] Re: [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)- dsuden
- » [haiku-bugs] [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)- dsuden
- » [haiku-bugs] Re: [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)- kallisti5
- » [haiku-bugs] Re: [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)- axeld
- » [haiku-bugs] Re: [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)- ttcoder
- » [haiku-bugs] Re: [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)- anevilyak
- » [haiku-bugs] Re: [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)- ttcoder
- » [haiku-bugs] Re: [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef) - bonefish
- » [haiku-bugs] Re: [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)- waddlesplash
- » [haiku-bugs] Re: [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)- ttcoder
- » [haiku-bugs] Re: [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)- waddlesplash
- » [haiku-bugs] Re: [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)- mmlr
- » [haiku-bugs] Re: [Haiku] #11718: userlandfs -> Failed to acquire spinlock for a long time (last caller: 0x0, value: deadbeef)- mmlr