Inside the device_consumer thread, the sequence of operations was this: 1. Call fifo_dequeue_buffer() 2. If it returned B_INTERRUPTED, exit the thread. Otherwise, process the buffer it returned as normal. 3. Loop. Thus, if the FIFO was destroyed not during a call to fifo_dequeue_buffer, the next loop, fifo_dequeue_buffer would be called on a destroyed FIFO. It would then try to lock the mutex in the FIFO which had been destroyed, causing an assertion failure and thus a panic. Now, we check the ref_count on every loop, and set it to 0 before calling uninit_fifo(). Thus, even if we are in the middle of a loop inside the FIFO thread, the loop iteration condition will fail and thus the thread will exit, avoiding the race. Probably this was not an issue before because the timing required to hit this is incredibly unlikely. With the new ipro1000 driver (or kallisti5's WIP TUN/TAP driver), the timing makes this much more likely. Should fix #15024.
Haiku
Homepage | Mailing Lists | IRC Channels | Issue Tracker | API docs
Haiku is an open-source operating system that specifically targets personal computing. Inspired by the BeOS, Haiku is fast, simple to use, easy to learn and yet very powerful.
Goals
- Sensible defaults with minimal configuration required.
- Clean, clear, concise code.
- Unified desktop environment.
Trying Haiku
Haiku provides pre-built nightly images and release images. Haiku is compatible with a large variety of hardware, but in case you don't want to "take the plunge" and install Haiku on bare metal, you can install it on a virtual machine (VM) instead. If you've never used a VM before, you can follow one of the "Emulating Haiku" guides.
Compiling Haiku
See ReadMe.Compiling
.
Contributing
Haiku is a meritocratic open source project with a large variety of tasks. Even if you can't write code, you can still help! Haiku needs designers, (technical) writers, translators, testers... Get involved and help out!
Contributing code
If you're submitting a patch to us, please make sure you're following the patch submitting guidelines.
If you're having trouble finding something in the source tree, you can use one of our OpenGrok servers:
- http://xref.plausible.coop/ (provided by Landon Fuller)
- http://code.metager.de/source/xref/haiku (provided by MetaGer)
Contributing documentation
The main piece of documentation that still needs work are the API docs (found
in the tree at docs/user
). Just find an undocumented class, write
documentation for it, and submit a patch.
Contributing translations
See wiki:i18n.
Contributing software ports
See HaikuPorts.
Contributing to our infrastructure
See Infrastructure.