Jim Broadus 55edcf5321 Fix MoodbarPipeline crash on gstreamer error.
As reported in issue 6302, playing a stream that causes gstreamer to error at
start can cause a crash. The problem occurs when the MoodbarPipeline receives a
pad-added signal after it has handled an error callback. In the error callback,
the builder_ is freed. In the pad-added handler (NewPadCallback), this object
is accessed.

This change adds a running_ flag that is set when the pipeline is started and
cleared on an error, end of stream, or object destruction. We check this flag at
the beginning of NewPadCallback. For sanity sake, we also check the builder_
pointer before dereferencing. Note that checking the state of the pipeline
wasn't an option since the pipeline is in the process of changing states during
the pad-added callback and gst_element_get_state wants to block during a state
change.

This solution is not complete as there are still some syncronization issues.
With this specific situation, the error and new pad callbacks appear to always
occur on the same thread, but that's probably not true for all error conditions.
The object is also destroyed by a different thread, so it may be possible that a
callback can occur at the wrong time during or after the deletion of the object.

See https://github.com/clementine-player/Clementine/issues/6302
2019-03-17 22:26:01 -07:00
2016-03-11 15:49:26 +01:00
2013-10-04 15:47:22 +10:00
2018-06-13 09:38:56 +01:00
2019-01-21 21:39:10 +00:00
2019-01-21 22:04:13 +00:00
2014-12-22 00:05:46 -05:00
2019-01-21 21:39:10 +00:00
2018-09-17 15:07:11 +01:00
2018-02-19 16:20:56 +00:00
2017-11-06 15:22:24 +03:00
2018-10-02 04:01:44 -07:00

Clementine Build Status

Clementine is a modern music player and library organizer for Windows, Linux and macOS.

Opening an issue

Ask for a new feature

Please:

  • Check if the new feature is not already implemented (Changelog)
  • Check if another person didn't already open an issue
  • If there is already an opened issue there is no need to comment "+1", it won't help. Instead, you can subscribe to the issue to be notified of anything new about it

Report a bug

Please:

  • Try the latest developer build (http://builds.clementine-player.org/) to see if any bug is still present (Attention, those builds aren't stable so they might not work well and could sometimes break things like user settings). If it works fine even though you see an open issue, please comment on it and explain that the issue has been fixed
  • Check if another person has already opened the same issue to avoid duplicates
  • If there already is an open issue you could comment on it to add precisions about the problem or confirm it
  • In case there isn't, you can open a new issue with an explicit title and as much information as possible (OS, Clementine version, how to reproduce the problem...)
  • Please use http://pastebin.com/ for logs/debug

If there are no answers, it doesn't mean we don't care about your feature request/bug. It just means we can't reproduce the bug or haven't had time to implement it :o)

Compiling from source

Get the code (if you haven't already):

git clone https://github.com/clementine-player/Clementine.git && cd Clementine

Compile and install:

cd bin
cmake ..
make -j8
sudo make install

See the Wiki for more instructions and a list of dependencies: https://github.com/clementine-player/Clementine/wiki/Compiling-from-Source

Description
Clementine è un lettore musicale multipiattaforma con un'interfaccia veloce e facile da usare per ricercare e riprodurre la propria raccolta musicale locale o online e ascoltare radio via internet o i podcast su funkwhale.
https://funkwhale.it Readme 192 MiB
Languages
C++ 95.6%
CMake 2%
Objective-C++ 1.4%
C 0.5%
Objective-C 0.4%