pa_once can run twice?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



While researching a bug I came across something that might be a bug in 
the pa_once logic, but this stuff is tricky, so I might also be missing 
something.

Imagine this:

  * Thread 1 runs pa_once_begin, succeeds and starts running the payload 
(i e the code that should only run once).
  * Thread 2 starts running pa_once_begin, but only the first row. We're 
now right *before* pa_atomic_inc(&control->ref) but *after* 
pa_atomic_load(&control->done).
  * Thread 1 finishes the payload, runs pa_once_done which sets 
control->done and frees the mutex.
  * Thread 2 continues, pa_once_begin succeeds and the payload is now 
run a second time!


-- 
David Henningsson, Canonical Ltd.
http://launchpad.net/~diwic


[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux