On Tue, 2017-05-02 at 07:12 +0200, Georg Chini wrote: > On 01.05.2017 22:10, Tanu Kaskinen wrote: > > On Mon, 2017-04-24 at 19:33 +0200, Georg Chini wrote: > > > There are several places in module-echo-cancel where a segfault is > > > possible when the master sink or source is invalid. > > > > I don't think the rewind, volume and mute callbacks are ever called > > during stream moves, at least with the current code base. However, > > adding the extra checks does no harm either, so I don't mind, but I > > think the commit message should be clarified on this point. > > I do not mention a move at all in the commit message, I just > say there are several places where a segfault is possible. The patch adds sink_input->sink and source_output->source checks, and checking those pointers is only relevant during stream moves (or during stream initialization before the routing has been decided, but the callbacks aren't used that early). At all other times the sink and source pointers are non-NULL. > I think the rewind callback is called during a move, the > PA_SINK_MESSAGE_START_MOVE calls request_rewind(). That happens before detaching the sink input, so the sink pointer is not NULL. > Also the other checks are not pointless. In a situation where > a virtual sink is the only remaining sink, you can still try to > mute it or change the volume which will then crash PA. A virtual sink can't exist without a master sink. The only time when a virtual sink is not connected to a master sink is when the virtual sink is being moved to a different master, and client commands (such as volume and mute change commands) are not processed during moves. -- Tanu https://www.patreon.com/tanuk