After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 623469 - Unit test failures with CK_FORK=no make check
Unit test failures with CK_FORK=no make check
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
git master
Other Linux
: Normal major
: 1.9.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2010-07-03 12:49 UTC by Tim-Philipp Müller
Modified: 2016-04-11 09:48 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
checks: rewrite gsttagsetter test to use fewer g_usleep() (2.72 KB, patch)
2010-07-06 09:51 UTC, Tim-Philipp Müller
none Details | Review

Description Tim-Philipp Müller 2010-07-03 12:49:58 UTC
$ CK_FORK=no make check
(...)

Running suite(s): GstObject
/bin/bash: line 5: 19382 Segmentation fault      STATE_IGNORE_ELEMENTS="" GST_REGISTRY=../../tests/check/test-registry.reg GST_PLUGIN_SCANNER=../../libs/gst/helpers/gst-plugin-scanner GST_PLUGIN_SYSTEM_PATH= GST_PLUGIN_PATH=../../plugins ${dir}$tst
FAIL: gst/gstobject

(...)


Running suite(s): Gst
Unexpected critical/warning: gst_object_unref: assertion `object != NULL' failed
Unexpected critical/warning: gst_object_unref: assertion `object != NULL' failed
66%: Checks: 6, Failures: 2, Errors: 0
gstcheck.c:72:F:gst tests:test_new_pipeline:0: Unexpected critical/warning: gst_object_unref: assertion `object != NULL' failed
gstcheck.c:72:F:gst tests:test_new_fakesrc:0: Unexpected critical/warning: gst_object_unref: assertion `object != NULL' failed
FAIL: gst/gst

(...)

Running suite(s): GstElement
83%: Checks: 6, Failures: 1, Errors: 0
gst/gstelement.c:181:F:element tests:test_class:0: Failure 'type != 0' occured
FAIL: gst/gstelement

(...)

Running suite(s): fakesrc
40%: Checks: 5, Failures: 3, Errors: 0
elements/fakesrc.c:114:F:general:test_sizetype_empty:0: Assertion 'g_list_length (buffers) == 100' failed
elements/fakesrc.c:152:F:general:test_sizetype_fixed:0: Assertion 'g_list_length (buffers) == 100' failed
elements/fakesrc.c:191:F:general:test_sizetype_random:0: Assertion 'g_list_length (buffers) == 100' failed
FAIL: elements/fakesrc

(...)

Running suite(s): GstBaseTransform
/bin/bash: line 5: 20482 Segmentation fault      STATE_IGNORE_ELEMENTS="" GST_REGISTRY=../../tests/check/test-registry.reg GST_PLUGIN_SCANNER=../../libs/gst/helpers/gst-plugin-scanner GST_PLUGIN_SYSTEM_PATH= GST_PLUGIN_PATH=../../plugins ${dir}$tst
FAIL: libs/transform1
==========================================================================
5 of 62 tests failed
Please report to http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer
==========================================================================


I was trying this only because I noticed that make check-valgrind in -base leads to NULL-pointer crashes in the pipelines/theoraenc test (also happens in the gdb target).
Comment 1 Tim-Philipp Müller 2010-07-03 13:13:26 UTC
This fixes the Gst and GstElement checks:


commit 95a520be76991948f7091e6f573d5f4f28286039
Author: Tim-Philipp Müller <tim.muller@collabora.co.uk>
Date:   Sat Jul 3 14:09:36 2010 +0100

    checks: run tests calling gst_deinit() last so things work with CK_FORK=no
    
    Because gst_init() will fail once gst_deinit() has been called.
    
    See #623469.

commit 9b1bf88d7df91983ea9edceda6b993e5713fc2e4
Author: Tim-Philipp Müller <tim.muller@collabora.co.uk>
Date:   Sat Jul 3 14:04:32 2010 +0100

    checks: don't assume element factory is not loaded yet
    
    It may already be loaded if check is being run with CK_FORK=no.
    
    See #623469.
Comment 2 Tim-Philipp Müller 2010-07-03 14:16:19 UTC
One more:

commit 694f4d90f82d29fc386075b419dc1f23e9bda556
Author: Tim-Philipp Müller <tim.muller@collabora.co.uk>
Date:   Sat Jul 3 15:13:14 2010 +0100

    checks: make fakesrc check work in a CK_FORK=no environment
    
    Reset have_eos at the beginning of each test.
    
    See #623469.

2 left.
Comment 3 Tim-Philipp Müller 2010-07-03 15:41:07 UTC
commit 9db5a93ed87628cfec979ba8c1c5e9e5c7a7559a
Author: Tim-Philipp Müller <tim.muller@collabora.co.uk>
Date:   Sat Jul 3 16:39:40 2010 +0100

    check: skip silly test that segfaults when in a CK_FORK=no environment
    
    See #623469.
Comment 4 Tim-Philipp Müller 2010-07-03 18:18:40 UTC
Fun fact: in CK_FORK=no mode fail_if() and fail_unless() don't actually seem to do anything when they fail..
Comment 5 Tim-Philipp Müller 2010-07-06 09:51:42 UTC
Created attachment 165340 [details] [review]
checks: rewrite gsttagsetter test to use fewer g_usleep() 

Does this work better?

(Not quite sure why it times out after 4 seconds already on your machine, btw. If I make it spin endlessly, I have a much longer timeout here. )
Comment 6 Tim-Philipp Müller 2010-07-06 09:52:13 UTC
Comment on attachment 165340 [details] [review]
checks: rewrite gsttagsetter test to use fewer g_usleep() 

Wrong bug.
Comment 7 Tim-Philipp Müller 2010-07-06 10:14:40 UTC
This is not really a blocker, downgrading severity.
Comment 8 Tim-Philipp Müller 2016-04-11 09:48:30 UTC
commit 86c0058ae50ee633beaef4b177ede9529bdb9f16
Author: Tim-Philipp Müller <tim@centricular.com>
Date:   Mon Apr 11 10:44:22 2016 +0100

    tests: baseparse: make work with CK_FORK=no
    
    https://bugzilla.gnome.org/show_bug.cgi?id=623469

commit 1fa64722d0c69158872e744eaf9c8e38381bb574
Author: Tim-Philipp Müller <tim@centricular.com>
Date:   Mon Apr 11 10:27:56 2016 +0100

    tests: transform1: make test work with CK_FORK=no
    
    We need to clear some global state and register a new test
    basetransform subclass for each test because we do things
    in class_init base on global state.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=623469

commit f9eb3b98f1858e2273696895827af2b9d86bfde1
Author: Tim-Philipp Müller <tim@centricular.com>
Date:   Sun Apr 10 20:45:24 2016 +0100

    tests: collectpads: fix for CK_FORK=no
    
    Reset global state when done, and unref sink pads too
    in teardown function to make it valgrind clean.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=623469

commit 71f554009d549ebf9e6aec4d876714f92fe10c9e
Author: Tim-Philipp Müller <tim@centricular.com>
Date:   Sun Apr 10 20:25:44 2016 +0100

    tests: streamiddemux: fix with CK_FORK=no
    
    Clear global state when done.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=623469

commit 4b9f2966fbf8e374725e67276d33cda752ce4439
Author: Tim-Philipp Müller <tim@centricular.com>
Date:   Sun Apr 10 20:04:07 2016 +0100

    tests: bufferpool: fix wrong assumptions about pointers and object lifecycles
    
    The test assumed that if a buffer has the same pointer address as
    before it is in fact the same mini object and has been re-used by
    the pool. This seems to be mostly true, but not always. The buffer
    might be destroyed and when a new buffer is created the allocator
    might return the same memory that we just freed.
    
    Instead attach a qdata with destroy notify function to buffer
    instances we want to track to make sure the buffer actually
    gets finalized rather than resurrected and put back into the pool.