This repository has been archived by the owner on Feb 13, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix broken shared 32-/64-bit semaphores on recent glibc versions.
Recent versions of glibc have changed the memory layout of semaphores on 64-bit, which means that 32- and 64-bit semaphores are fundamentally incompatible and cannot be shared anymore. The symptom is that the plugin hangs on communicating with the child process, and eventually times out. However, my previous assumption in 2cefab1, that pipes are not realtime safe on Linux, was incorrect. They are used by Jack all the time. So the problem is fixed by switching to pipes for process synchronization. Shared memory is still used for the data though, as well as to store the pipe descriptors. Another nice side effect of this fix is that we now get notified again when the child process dies or otherwise breaks the connection. Signed-off-by: Kristian Amlie <kristian@amlie.name>
- Loading branch information
Showing
3 changed files
with
33 additions
and
37 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters