Open Bug 1620478 Opened 4 years ago Updated 1 month ago

ubuntu1804 - gst_object_unref: assertion '((GObject *) object)->ref_count > 0' failed

Categories

(Firefox Build System :: Task Configuration, defect, P4)

defect

Tracking

(Not tracked)

People

(Reporter: egao, Unassigned)

References

Details

In every mochitest suite, the harness runs a check of the available media devices:

    # Feed it a frame of output so it has something to display
    gst01 = spawn.find_executable("gst-launch-0.1")
    gst010 = spawn.find_executable("gst-launch-0.10")
    gst10 = spawn.find_executable("gst-launch-1.0")
    if gst01:
        gst = gst01
    if gst010:
        gst = gst010
    else:
        gst = gst10
    subprocess.check_call([gst, 'videotestsrc',
                           'pattern=green', 'num-buffers=1', '!',
                           'v4l2sink', 'device=%s' % device])
    info['video'] = name

(from https://searchfox.org/mozilla-central/source/testing/mochitest/runtests.py#793-806)

On ubuntu1804 systems this causes an error to be printed in the logs:

[task 2020-03-05T23:19:49.485Z] 23:19:49     INFO - Running manifest: browser/components/protocolhandler/test/mochitest.ini
[task 2020-03-05T23:19:49.570Z] 23:19:49     INFO -  error: XDG_RUNTIME_DIR not set in the environment.
[task 2020-03-05T23:19:50.032Z] 23:19:50     INFO -  Setting pipeline to PAUSED ...
[task 2020-03-05T23:19:50.032Z] 23:19:50     INFO -  Pipeline is PREROLLING ...
[task 2020-03-05T23:19:50.033Z] 23:19:50     INFO -  Pipeline is PREROLLED ...
[task 2020-03-05T23:19:50.033Z] 23:19:50     INFO -  Setting pipeline to PLAYING ...
[task 2020-03-05T23:19:50.033Z] 23:19:50     INFO -  New clock: GstSystemClock
[task 2020-03-05T23:19:50.069Z] 23:19:50     INFO -  Got EOS from element "pipeline0".
[task 2020-03-05T23:19:50.069Z] 23:19:50     INFO -  Execution ended after 0:00:00.033419100
[task 2020-03-05T23:19:50.069Z] 23:19:50     INFO -  Setting pipeline to PAUSED ...
[task 2020-03-05T23:19:50.069Z] 23:19:50     INFO -  Setting pipeline to READY ...
[task 2020-03-05T23:19:50.069Z] 23:19:50     INFO -  (gst-launch-1.0:824): GStreamer-CRITICAL **: 23:19:50.065: gst_object_unref: assertion '((GObject *) object)->ref_count > 0' failed
[task 2020-03-05T23:19:50.069Z] 23:19:50     INFO -  Setting pipeline to NULL ...
[task 2020-03-05T23:19:50.069Z] 23:19:50     INFO -  Freeing pipeline ...
[task 2020-03-05T23:19:50.250Z] 23:19:50     INFO -  pk12util: PKCS12 IMPORT SUCCESSFUL

This error is not observed on ubuntu1604 systems, so it has to do with either the newer version of gstreamer, installed packages on the ubuntu1804 system, or something else entirely that is unknown.

I've been taking a look at this failure and making several pushes to no avail.

  1. install gstreamer1.0-pulseaudio
    https://hg.mozilla.org/try/rev/3c8ece53f2081d647d3914d8870559306674b6c1

  2. log variables that are being called
    https://hg.mozilla.org/try/rev/8ed35b5e208145973583982904195784bd2d7968

[task 2020-03-05T01:09:43.360Z] 01:09:43     INFO - ['/usr/bin/gst-launch-1.0', 'videotestsrc', 'pattern=green', 'num-buffers=1', '!', 'v4l2sink', 'device=/dev/video0']
[task 2020-03-05T01:09:43.421Z] 01:09:43     INFO -  error: XDG_RUNTIME_DIR not set in the environment.
[task 2020-03-05T01:09:43.542Z] 01:09:43     INFO -  (gst-launch-1.0:1170): GStreamer-CRITICAL **: 01:09:43.541: gst_object_unref: assertion '((GObject *) object)->ref_count > 0' failed
[task 2020-03-05T01:09:43.545Z] 01:09:43     INFO - Setting pipeline to PAUSED ...
[task 2020-03-05T01:09:43.545Z] 01:09:43     INFO - Pipeline is PREROLLING ...
[task 2020-03-05T01:09:43.545Z] 01:09:43     INFO - Pipeline is PREROLLED ...
[task 2020-03-05T01:09:43.546Z] 01:09:43     INFO - Setting pipeline to PLAYING ...
[task 2020-03-05T01:09:43.546Z] 01:09:43     INFO - New clock: GstSystemClock
[task 2020-03-05T01:09:43.547Z] 01:09:43     INFO - Got EOS from element "pipeline0".
[task 2020-03-05T01:09:43.547Z] 01:09:43     INFO - Execution ended after 0:00:00.033390623
[task 2020-03-05T01:09:43.547Z] 01:09:43     INFO - Setting pipeline to PAUSED ...
[task 2020-03-05T01:09:43.547Z] 01:09:43     INFO - Setting pipeline to READY ...
[task 2020-03-05T01:09:43.548Z] 01:09:43     INFO - Setting pipeline to NULL ...
[task 2020-03-05T01:09:43.548Z] 01:09:43     INFO - Freeing pipeline ...
[task 2020-03-05T01:09:43.548Z] 01:09:43     INFO - 
[task 2020-03-05T01:09:43.549Z] 01:09:43     INFO - Dummy video device (0x0000)
[task 2020-03-05T01:09:43.564Z] 01:09:43     INFO - Monitor of Null Output
[task 2020-03-05T01:09:43.565Z] 01:09:43     INFO - {'audio': 'Monitor of Null Output', 'video': 'Dummy video device (0x0000)'}
[task 2020-03-05T01:09:43.733Z] 01:09:43     INFO -  pk12util: PKCS12 IMPORT SUCCESSFUL

The second attempt shows that perhaps this issue also has to do with bug 1611075.

See Also: → 1611075

After some investigation this look like an issue with gst-launch-1.0, not ubuntu1804.

I have cross-verified with the deprecated ubuntu1604 based system running mochitest-plain-e10s-1 and have been able to reproduce this same 'error'.

For reference, ubuntu1604 used to have both gst-launch-0.10 and gst-launch-1.0 installed. The way the mochitest harness was designed means it always used the lowest version of the gst-launch that was installed on the system. For ubuntu1604, this means 0.10.

On ubuntu1804 however, the lowest available version of gst-launch is 1.0, which has this issue.

To prove the scenario I ran the mochitest-plain-e10s-1 chunk on ubuntu1604 system, but forced it to use gst-launch 1.0:
https://hg.mozilla.org/try/rev/9b0fcbb34e3f35f6f7c50741f6dcf54f5b7d428d

Excerpt from the log:

[task 2020-03-06T18:38:36.296Z] 18:38:36     INFO - Running manifest: browser/components/protocolhandler/test/mochitest.ini
[task 2020-03-06T18:38:36.296Z] 18:38:36     INFO -  Setting pipeline to PAUSED ...
[task 2020-03-06T18:38:36.296Z] 18:38:36     INFO -  Pipeline is PREROLLING ...
[task 2020-03-06T18:38:36.296Z] 18:38:36     INFO -  Pipeline is PREROLLED ...
[task 2020-03-06T18:38:36.296Z] 18:38:36     INFO -  Setting pipeline to PLAYING ...
[task 2020-03-06T18:38:36.296Z] 18:38:36     INFO -  New clock: GstSystemClock
[task 2020-03-06T18:38:36.296Z] 18:38:36     INFO -  Got EOS from element "pipeline0".
[task 2020-03-06T18:38:36.297Z] 18:38:36     INFO -  Execution ended after 0:00:00.041737160
[task 2020-03-06T18:38:36.297Z] 18:38:36     INFO -  Setting pipeline to PAUSED ...
[task 2020-03-06T18:38:36.297Z] 18:38:36     INFO -  Setting pipeline to READY ...
[task 2020-03-06T18:38:36.297Z] 18:38:36     INFO -  (gst-launch-1.0:1058): GStreamer-CRITICAL **: gst_object_unref: assertion '((GObject *) object)->ref_count > 0' failed
[task 2020-03-06T18:38:36.297Z] 18:38:36     INFO -  Setting pipeline to NULL ...
[task 2020-03-06T18:38:36.297Z] 18:38:36     INFO -  Freeing pipeline ...
[task 2020-03-06T18:38:36.619Z] 18:38:36     INFO -  pk12util: PKCS12 IMPORT SUCCESSFUL

As it stands, this is an annoyance but does not look related to bug 1611075.

Priority: -- → P4
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.