mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-06-30 13:14:16 -04:00
A forced setup_filter_graphs() deactivates and re-instantiates every graph, which frees and recreates the underlying plugin handles (node_cleanup sets node->hndl[i] = NULL before re-instantiating). This was done on a graph that was still referenced by the RT data-loop snapshot (filter_graph[]), so the RT thread could run a graph whose handles were NULL mid-rebuild, leading to a NULL handle dereference in the filter-graph process path. Mirror the safe ordering already used by load_filter_graph()/clean_filter_handles(): before reconfiguring, mark the graphs not-setup and sync_filter_graph() so the data loop drops them from filter_graph[] under the loop lock. They are republished by the sync that follows setup. The cheap snapshot swap is done under the lock; the heavy re-instantiation stays off the RT path. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| aec | ||
| alsa | ||
| audioconvert | ||
| audiomixer | ||
| audiotestsrc | ||
| avb | ||
| bluez5 | ||
| control | ||
| ffmpeg | ||
| filter-graph | ||
| jack | ||
| libcamera | ||
| support | ||
| test | ||
| v4l2 | ||
| videoconvert | ||
| videotestsrc | ||
| volume | ||
| vulkan | ||
| meson.build | ||