mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-06-29 13:14:14 -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> |
||
|---|---|---|
| .. | ||
| examples | ||
| include | ||
| include-private/spa-private | ||
| lib | ||
| plugins | ||
| tests | ||
| tools | ||
| meson.build | ||