GNOME Bugzilla – Bug 639800
Volume changing intermittently triggers segfault
Last modified: 2011-02-12 17:36:19 UTC
As discussed in this thread... http://groups.google.com/group/gstreamer-java/browse_thread/thread/8bfe93605068e10 ...I experience an intermittent segmentation fault when setting volume against a streaming Playbin2. I have now recreated this using both gstreamer-java and pygst bindings, so I'm pretty confident it's in Gstreamer. Any suggestions for workarounds or perhaps this is a bug introduced by my naive use of the libraries. Code, full Java error reports and crash logs are detailed in the thread linked above. Is there a PPA for Ubuntu which I can use to get newer versions of gstreamer-plugins-good (which I believe contains playbin2). I've currently got the following installed... gstreamer-tools 0.10.31.3-1~lucid1 gstreamer0.10-alsa 0.10.31.3-1~lucid1 gstreamer0.10-esd 0.10.26.3-1~lucid1 gstreamer0.10-ffmpeg 0.10.11-1~lucid1 gstreamer0.10-gnonlin 0.10.16.2-1~lucid1 gstreamer0.10-nice 0.0.12-1~ppa10.04+1 gstreamer0.10-pitfdll 0.9.1.1+cvs20080215-1ubuntu2 gstreamer0.10-plugins-bad 0.10.20.3-1~lucid1 gstreamer0.10-plugins-bad-multiverse 0.10.18-0ubuntu1 gstreamer0.10-plugins-base 0.10.31.3-1~lucid1 gstreamer0.10-plugins-base-apps 0.10.31.3-1~lucid1 gstreamer0.10-plugins-good 0.10.26.3-1~lucid1 gstreamer0.10-plugins-ugly 0.10.16.3-1~lucid1 gstreamer0.10-plugins-ugly-multiverse 0.10.14-0ubuntu2 gstreamer0.10-pocketsphinx 0.5.1+dfsg1-0ubuntu1 gstreamer0.10-pulseaudio 0.10.26.3-1~lucid1 gstreamer0.10-tools 0.10.31.3-1~lucid1 gstreamer0.10-x 0.10.31.3-1~lucid1 libgstfarsight0.10-0 0.0.21-1ubuntu1~ppa10.04+1 libgstreamer-plugins-base0.10-0 0.10.31.3-1~lucid1 libgstreamer0.10-0 0.10.31.3-1~lucid1 libgstreamer0.10-dev 0.10.31.3-1~lucid1 python-gst0.10 0.10.20.3-1~lucid1
> ...I experience an intermittent segmentation fault when setting volume against > a streaming Playbin2. > > I have now recreated this using both gstreamer-java and pygst bindings, so I'm > pretty confident it's in Gstreamer. Could you provide a test case in C? The stack traces in the thread aren't very useful I'm afraid. And they don't seem to crash in GStreamer code afaict, but in the java stack. > Is there a PPA for Ubuntu which I can use to get newer versions of Yes > gstreamer-plugins-good (which I believe contains playbin2). I've currently got > the following installed... You seem to be using it already, since those seem to be the latest versions.
I understood java was seeing a segfault in the native libraries bound to Java, and then bailing. C could be a show-stopper as I have zero experience of coding desktop apps in C and would have to learn from scratch. I can try to do it with Qt maybe based on this... http://code.google.com/p/stacked-crooked/source/browse/trunk/PlayGroundCpp/VideoPlayer/ ? Would that be worth trying? Alternatively is anyone else out there who can easily create a C app to load a playbin2 showing video and just throw volume changes at it. It could take me a really long time from my current starting point.
Possibly a Python sample would also be sufficient to reproduce this. As a simple test, I just spammed Totem with volume changes (both the native control and by modifying the stream volume in pavucontrol), and there was no crash.
Already created a python example to prove the error was in gstreamer before posting it here (was maybe a bit hidden in the penultimate post to the gstreamer-java thread). http://pastebin.com/MWg7dGu8 From what I can gather (also discussed in the gstreamer-java thread) the segfault happens in Ubuntu Lucid, and doesn't happen in Fedora, if that helps track it down.
How long does it take for this crash to happen? And does this happen on all files? I cannot reproduce this here with core 0.10.31, base 0.10.31 and good 0.10.23.
You're lucky to make it through 10 seconds of frequent volume changes before a segfault is triggered in either Python or Java on Ubuntu Lucid.
I speculate this is the same as the bug in Banshee reported against Meego, which was eliminated by avoiding making a Gstreamer volume change call https://bugs.meego.com/show_bug.cgi?id=6966 Can anyone tell me why this is NEEDINFO? What info can I give you? I can recreate here using both pygst and gstreamer-java. Happy to gather data from a crash if you tell me what you want.
> I speculate this is the same as the bug in Banshee reported against Meego, > which was eliminated by avoiding making a Gstreamer volume change call > https://bugs.meego.com/show_bug.cgi?id=6966 That's quite possible. Sadly that bug report doesn't contain much useful information either. > Can anyone tell me why this is NEEDINFO? What info can I give you? I can > recreate here using both pygst and gstreamer-java. Happy to gather data from a > crash if you tell me what you want. I haven't been able to re-create the crash so far, neither has Arun (as I understand it). A proper stack trace with full debugging symbols would be nice for starters. What's your glib version? (dpkg -l libglib2.0-0)
My glib is... cefn@cefn-ubuntu-dell:~$ dpkg -l libglib2.0-0 Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============-==============-============================================ ii libglib2.0-0 2.24.1-0ubuntu The GLib library of C routines There's now a test case in C written up in a separate bug - the maintainer of gstreamer-java has decided to help track it down... https://bugzilla.gnome.org/show_bug.cgi?id=640872 So hopefully there's all the info you need there. I'm happy for this bug to be rolled up into that one, at least until a fix is found against Andres' build. If the fix doesn't work I'll re-report, but I'm pretty sure it'll be the same problem. *** This bug has been marked as a duplicate of bug 640872 ***
Ok, thanks for your help. I suspect the problem is a well-known GLib bug (notify not thread safe) which is fixed in newer versions (>=2.26 or >=2.28, don't remember which exactly).
That's really useful to know. I can't see any way to upgrade libglib2.0.0 through apt, either from repositories, PPAs or just .deb files. Is that the right package to try and upgrade? Do you have any other suggestions or do I have no chance but to reinstall Ubuntu to get a later Glib?