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 784972 - omx: Possible deadlock in gstomxvideoenc.c
omx: Possible deadlock in gstomxvideoenc.c
Product: GStreamer
Classification: Platform
Component: gst-omx
Other All
: Normal critical
: 1.12.3
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Reported: 2017-07-15 08:34 UTC by Satya Prakash Gupta
Modified: 2017-07-25 08:50 UTC
See Also:
GNOME target: ---
GNOME version: ---

Patch file is attached. (771 bytes, patch)
2017-07-17 10:21 UTC, Satya Prakash Gupta
committed Details | Review

Description Satya Prakash Gupta 2017-07-15 08:34:26 UTC
Hello All,

There is possible deadlock in gstomxvideoenc.c

File  : gst-omx/omx/gstomxvideoenc.c

In function "gst_omx_video_enc_drain" at line: 1752

There if  g_mutex_lock (&self->drain_lock) at line: 1743 but incase of fails of "gst_omx_port_release_buffer"

There is no unlock of "self->drain_lock".

below are snippet
  if (err != OMX_ErrorNone) {
    GST_ERROR_OBJECT (self, "Failed to drain component: %s (0x%08x)",
        gst_omx_error_to_string (err), err);
    return GST_FLOW_ERROR;
Solution: There should be g_mutex_unlock (&self->drain_lock) in failure case;

Please check and provide your feedback.
Comment 1 Nicolas Dufresne (ndufresne) 2017-07-15 16:12:00 UTC
Ok, same as bug #784967 but for video encoding, must have been copy pasted. Do you want to provide a patch ?
Comment 2 Satya Prakash Gupta 2017-07-17 10:21:14 UTC
Created attachment 355743 [details] [review]
Patch file is attached.

Dear Sir,

Please review attached file and provide your feedback.
Comment 3 Sebastian Dröge (slomo) 2017-07-17 12:40:36 UTC
commit 45eaf9cfc6977c10fb81ddad21f4090909126793 (HEAD -> master)
Author: Satya Prakash Gupta <>
Date:   Mon Jul 17 15:48:44 2017 +0530

    omxvideoenc: Fix deadlock in error case when draining