GNOME Bugzilla – Bug 767859
discoverer: Don't crash when trying to serialize non-OK discoverer infos to a GVariant
Last modified: 2016-06-27 06:32:51 UTC
Architecture: Centos 7 64bit Architecture: Ubuntu 14.04 64bit Below are the log from Centos7 64bit =============================================================== GStreamer Base Plug-ins 1.8.2: tests/check/test-suite.log =============================================================== # TOTAL: 53 # PASS: 51 # SKIP: 0 # XFAIL: 0 # FAIL: 2 # XPASS: 0 # ERROR: 0 .. contents:: :depth: 2 FAIL: libs/discoverer ===================== Running suite(s): discoverer 85%: Checks: 7, Failures: 0, Errors: 1 libs/discoverer.c:68:E:general:test_disco_serializing:0: (after this point) Received signal 11 (Segmentation fault) FAIL: elements/playbin-complex ============================== Running suite(s): playbin_complex 92%: Checks: 14, Failures: 1, Errors: 0 elements/playbin-complex.c:862:F:general:test_autoplug_decoder_sink_combination:0: 'gst_element_get_state (playbin, NULL, NULL, -1)' (0) is not equal to 'GST_STATE_CHANGE_SUCCESS' (1)
Could you: $ cd tests/check and: 1) $ make libs/discoverer.gdb (gdb) run ... crash .. (gdb) thread apply all bt ... paste output (gdb) kill (gdb) quit 2) $ GST_DEBUG=*:6 GST_CHECKS=test_autoplug_decoder_sink_combination make elements/playbin-complex.check-norepeat 2>/tmp/dbg.log $ xz -9 /tmp/dbg.log attach /tmp/dbg.log.xz Thanks!
1) Reading symbols from /home/root/open_media/1.8.2/gst-plugins-base-1.8.2/tests/check/libs/.libs/lt-discoverer...done. (gdb) run Starting program: /home/root/open_media/1.8.2/gst-plugins-base-1.8.2/tests/check/libs/.libs/lt-discoverer [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". Running suite(s): discoverer [New Thread 0x7ffff4fcb700 (LWP 8944)] Program received signal SIGSEGV, Segmentation fault. gst_discoverer_info_to_variant_recurse (sinfo=sinfo@entry=0x0, flags=flags@entry=GST_DISCOVERER_SERIALIZE_ALL) at gstdiscoverer.c:1721 1721 GVariant *common_stream_variant = Missing separate debuginfos, use: debuginfo-install glib2-2.42.2-5.el7.x86_64 glibc-2.17-78.el7.x86_64 libffi-3.0.13-16.el7.x86_64 libselinux-2.2.2-6.el7.x86_64 pcre-8.32-15.el7.x86_64 xz-libs-5.1.2-12alpha.el7.x86_64 zlib-1.2.7-15.el7.x86_64 (gdb) thread apply all bt
+ Trace 236368
Thread 2 (Thread 0x7ffff4fcb700 (LWP 8944))
Thread 1 (Thread 0x7ffff7fd7740 (LWP 8940))
Created attachment 330054 [details] dbg.log.xz Attached dbg.log.xz
After install: The libtheora reference implementation provides the standard encoder and decoder under a BSD license. [libtheora-1.1.1.tar.bz2] The libtheora implementation depends on the following libraries... libogg-1.3.1 libvorbis-1.3.3 libSDL 1.2 or later for the playback example The test also passed in gst-plugins-base for "make check"
commit 26f63db498facc0c489503175463be53dec833b9 Author: Sebastian Dröge <sebastian@centricular.com> Date: Tue Jun 21 10:24:15 2016 +0300 discoverer: Only allow serializing OK discoverer infos to GVariants They will be incomplete otherwise and we can't generate the full serialized information, and instead will crash somewhere on the way. https://bugzilla.gnome.org/show_bug.cgi?id=767859
Question is should this happen at all in a unit test? (Or is it again because theora elements are not available?)
It happens because theora/vorbis elements are not available. The test should fail gracefully then instead of crashing probably :)
commit d3d2e8b94aea91865eb5489e6421fd45bb5e2c4b Author: Tim-Philipp Müller <tim@centricular.com> Date: Tue Jun 21 18:04:23 2016 +0100 tests: discoverer: handle missing ogg/codec plugins gracefully https://bugzilla.gnome.org/show_bug.cgi?id=767859
The discoverer part that actually causes the crash is in 1.8 now.