#799: libpulse use of Xlib is not thread-safe -----------------------+---------------------------------------------------- Reporter: courmisch | Owner: lennart Type: defect | Status: new Milestone: | Component: module-x11-* Keywords: | -----------------------+---------------------------------------------------- As specified by the Xlib documentation, XInitThreads() '''must''' be invoked before any other Xlib call in a multi-thread program. Alternatively, all Xlib calls shall be protected by some synchronization mechanism, such as a global Xlib use lock.
libpulse uses Xlib but does not call XInitThreads(). This compromises the thread-safety of any process using libpulse in the likely case that Xlib is also used from another thread. This is qutie common for multimedia frameworks with the audio pipeline in one thread and the video pipeline in another. Unfortunately, I cannot find an easy fix for this issue. libpulse should probably not call XInitThreads(). This would cause problems in a non- threaded program that initializes Xlib before libpulse. Then libpulse would call XInitThreads() while Xlib is already initialized in non- threaded mode, which is invalid. Since libpulse does a fairly minimal use of X11, using XCB instead of Xlib might be a more reasonable option. That would get rid of the problem. -- Ticket URL: <http://pulseaudio.org/ticket/799> PulseAudio <http://pulseaudio.org/> The PulseAudio Sound Server _______________________________________________ pulseaudio-tickets mailing list pulseaudio-tickets@mail.0pointer.de https://tango.0pointer.de/mailman/listinfo/pulseaudio-tickets