Previously, sink_input_kill_cb would cleanup u->sink an then unload the module. However, during module unload, both save_state and dbus_done tried to use u->sink, causing a segfault or assertion failure. The segfault is easy to reproduce: Load module-equalizer-sink and then press ctrl-C to terminate pulseaudio. This commit removes the u->sink cleanup in sink_input_kill_cb, since u->sink will be cleaned up by the module's pa__done as well (after it has been used). Signed-off-by: Matthijs Kooijman <matthijs at stdin.nl> --- src/modules/module-equalizer-sink.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/module-equalizer-sink.c b/src/modules/module-equalizer-sink.c index 8b9075c..2698279 100644 --- a/src/modules/module-equalizer-sink.c +++ b/src/modules/module-equalizer-sink.c @@ -849,8 +849,8 @@ static void sink_input_kill_cb(pa_sink_input *i) { pa_sink_input_unref(u->sink_input); u->sink_input = NULL; - pa_sink_unref(u->sink); - u->sink = NULL; + /* Leave u->sink alone for now, it will be cleaned up on module + * unload (and it is needed during unload as well). */ pa_module_unload_request(u->module, TRUE); } -- 1.7.10