[Bug 666028] New: exception may cause test pipeline to be shut down from streaming thread

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Mon Dec 12 12:49:38 PST 2011


https://bugzilla.gnome.org/show_bug.cgi?id=666028
  GStreamer | gst-qa-system | git

           Summary: exception may cause test pipeline to be shut down from
                    streaming thread
    Classification: Platform
           Product: GStreamer
           Version: git
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gst-qa-system
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: t.i.m at zen.co.uk
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


If an exception occurs in python code called from a streaming thread (e.g. in a
pad probe callback), the self.stop() will lead to a pipeline
set_state(gst.STATE_NULL) being done from the streaming thread, which will
dead-lock in the best case scenario, and crash in the worst case scenario.

Example stacktrace, for illustrative purposes:

[New LWP 22566]
[New LWP 22563]
[New LWP 22567]
[New LWP 22569]
[New LWP 22571]
[New LWP 22565]

warning: Can't read pathname for load map: Input/output error.
[Thread debugging using libthread_db enabled]
Core was generated by `/usr/bin/python
/home/tpm/gst/releases/gst-qa-system/bin/insanity-pythondbusrun'.
Program terminated with signal 5, Trace/breakpoint trap.
#0  g_logv (log_domain=0x7fa3128c7d38 "GStreamer", log_level=<optimized out>,
format=0x7fa316169b32 "%s: assertion `%s' failed", args1=0x7fa30f986b98) at
/tmp/buildd/glib2.0-2.30.2/./glib/gmessages.c:577
577    /tmp/buildd/glib2.0-2.30.2/./glib/gmessages.c: No such file or
directory.
    in /tmp/buildd/glib2.0-2.30.2/./glib/gmessages.c
  Id   Target Id         Frame 
  6    Thread 0x7fa31018a700 (LWP 22565) pthread_cond_wait@@GLIBC_2.3.2 () at
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
  5    Thread 0x7fa2ffb7e700 (LWP 22571) pthread_cond_timedwait@@GLIBC_2.3.2 ()
at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:216
  4    Thread 0x7fa307188700 (LWP 22569) pthread_cond_timedwait@@GLIBC_2.3.2 ()
at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:216
  3    Thread 0x7fa30eac7700 (LWP 22567) pthread_cond_wait@@GLIBC_2.3.2 () at
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
  2    Thread 0x7fa31867f700 (LWP 22563) 0x00007fa31827b17d in read () at
../sysdeps/unix/syscall-template.S:82
* 1    Thread 0x7fa30f989700 (LWP 22566) g_logv (log_domain=0x7fa3128c7d38
"GStreamer", log_level=<optimized out>, format=0x7fa316169b32 "%s: assertion
`%s' failed", args1=0x7fa30f986b98) at
/tmp/buildd/glib2.0-2.30.2/./glib/gmessages.c:577
#0  g_logv (log_domain=0x7fa3128c7d38 "GStreamer", log_level=<optimized out>,
format=0x7fa316169b32 "%s: assertion `%s' failed", args1=0x7fa30f986b98) at
/tmp/buildd/glib2.0-2.30.2/./glib/gmessages.c:577
        depth = 0
        domain = 0x0
        data = 0x0
        log_func = 0x7fa3128460e0 <debug_log_handler>
        domain_fatal_mask = <optimized out>
        masquerade_fatal = <optimized out>
        test_level = <optimized out>
        was_fatal = 0
        was_recursion = 0
        i = <optimized out>
#1  0x00007fa316124c02 in g_log (log_domain=<optimized out>,
log_level=<optimized out>, format=<optimized out>) at
/tmp/buildd/glib2.0-2.30.2/./glib/gmessages.c:591
        args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area =
0x7fa30f986c70, reg_save_area = 0x7fa30f986bb0}}
#2  0x00007fa30ed6f877 in gst_buffer_unref (buf=<optimized out>) at
/home/tpm/gst/releases/gstreamer/gst/gstbuffer.h:367
No locals.
#3  gst_base_video_codec_free_frame (frame=0x1aa88f0) at
gstbasevideocodec.c:192
        __PRETTY_FUNCTION__ = "gst_base_video_codec_free_frame"
#4  0x00007fa30ed71046 in gst_base_video_decoder_reset
(base_video_decoder=0x1a85fd0, full=1) at gstbasevideodecoder.c:968
        __FUNCTION__ = "gst_base_video_decoder_reset"
#5  0x00007fa30ed74322 in gst_base_video_decoder_change_state
(element=<optimized out>, transition=GST_STATE_CHANGE_PAUSED_TO_READY) at
gstbasevideodecoder.c:1331
        base_video_decoder = 0x1a85fd0
        base_video_decoder_class = 0x1a85640
        ret = GST_STATE_CHANGE_SUCCESS
#6  0x00007fa3128638fc in gst_element_change_state (element=0x1a85fd0,
transition=<optimized out>) at gstelement.c:2761
        oclass = <optimized out>
        ret = GST_STATE_CHANGE_SUCCESS
        __PRETTY_FUNCTION__ = "gst_element_change_state"
#7  0x00007fa312864252 in gst_element_set_state_func (element=0x1a85fd0,
state=GST_STATE_READY) at gstelement.c:2717
        current = GST_STATE_PAUSED
        next = <optimized out>
        old_pending = <optimized out>
        ret = <optimized out>
        transition = GST_STATE_CHANGE_PAUSED_TO_READY
        old_ret = <optimized out>
        __PRETTY_FUNCTION__ = "gst_element_set_state_func"
#8  0x00007fa3128509ea in gst_bin_element_set_state (next=GST_STATE_READY,
current=GST_STATE_PAUSED, start_time=19588354000, base_time=14903892000,
element=0x1a85fd0, bin=0x1a00310) at gstbin.c:2209
        child_current = GST_STATE_PAUSED
        found = <optimized out>
        ret = <optimized out>
        locked = <optimized out>
        pending = <optimized out>
        child_pending = GST_STATE_VOID_PENDING
#9  gst_bin_change_state_func (element=0x1a00310,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstbin.c:2518
        child = 0x1a85fd0
        data = 0x1a85fd0
        bin = 0x1a00310
        ret = <optimized out>
        current = GST_STATE_PAUSED
        next = GST_STATE_READY
        have_async = 0
        have_no_preroll = <optimized out>
        base_time = 14903892000
        start_time = 19588354000
        it = 0x7fa3080a68d0
        done = 0
        __PRETTY_FUNCTION__ = "gst_bin_change_state_func"
#10 0x00007fa310c4d120 in gst_decode_bin_change_state (element=0x1a00310,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstdecodebin2.c:4026
        bret = <optimized out>
        ret = GST_STATE_CHANGE_SUCCESS
        dbin = 0x1a00310
        __PRETTY_FUNCTION__ = "gst_decode_bin_change_state"
#11 0x00007fa3128638fc in gst_element_change_state (element=0x1a00310,
transition=<optimized out>) at gstelement.c:2761
        oclass = <optimized out>
        ret = GST_STATE_CHANGE_SUCCESS
        __PRETTY_FUNCTION__ = "gst_element_change_state"
#12 0x00007fa312864252 in gst_element_set_state_func (element=0x1a00310,
state=GST_STATE_READY) at gstelement.c:2717
        current = GST_STATE_PAUSED
        next = <optimized out>
        old_pending = <optimized out>
        ret = <optimized out>
        transition = GST_STATE_CHANGE_PAUSED_TO_READY
        old_ret = <optimized out>
        __PRETTY_FUNCTION__ = "gst_element_set_state_func"
#13 0x00007fa3128509ea in gst_bin_element_set_state (next=GST_STATE_READY,
current=GST_STATE_PAUSED, start_time=19588354000, base_time=14903892000,
element=0x1a00310, bin=0x1a000e0) at gstbin.c:2209
        child_current = GST_STATE_PAUSED
        found = <optimized out>
        ret = <optimized out>
        locked = <optimized out>
        pending = <optimized out>
        child_pending = GST_STATE_VOID_PENDING
#14 gst_bin_change_state_func (element=0x1a000e0,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstbin.c:2518
        child = 0x1a00310
        data = 0x1a00310
        bin = 0x1a000e0
        ret = <optimized out>
        current = GST_STATE_PAUSED
        next = GST_STATE_READY
        have_async = 0
        have_no_preroll = <optimized out>
        base_time = 14903892000
        start_time = 19588354000
        it = 0x7fa3080a6810
        done = 0
        __PRETTY_FUNCTION__ = "gst_bin_change_state_func"
#15 0x00007fa310c54c00 in gst_uri_decode_bin_change_state (element=0x1a000e0,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gsturidecodebin.c:2500
        ret = <optimized out>
        decoder = 0x1a000e0
        __PRETTY_FUNCTION__ = "gst_uri_decode_bin_change_state"
#16 0x00007fa3128638fc in gst_element_change_state (element=0x1a000e0,
transition=<optimized out>) at gstelement.c:2761
        oclass = <optimized out>
        ret = GST_STATE_CHANGE_SUCCESS
        __PRETTY_FUNCTION__ = "gst_element_change_state"
#17 0x00007fa312864252 in gst_element_set_state_func (element=0x1a000e0,
state=GST_STATE_READY) at gstelement.c:2717
        current = GST_STATE_PAUSED
        next = <optimized out>
        old_pending = <optimized out>
        ret = <optimized out>
        transition = GST_STATE_CHANGE_PAUSED_TO_READY
        old_ret = <optimized out>
        __PRETTY_FUNCTION__ = "gst_element_set_state_func"
#18 0x00007fa3128509ea in gst_bin_element_set_state (next=GST_STATE_READY,
current=GST_STATE_PAUSED, start_time=19588354000, base_time=14903892000,
element=0x1a000e0, bin=0x19f45b0) at gstbin.c:2209
        child_current = GST_STATE_PAUSED
        found = <optimized out>
        ret = <optimized out>
        locked = <optimized out>
        pending = <optimized out>
        child_pending = GST_STATE_VOID_PENDING
#19 gst_bin_change_state_func (element=0x19f45b0,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstbin.c:2518
        child = 0x1a000e0
        data = 0x1a000e0
        bin = 0x19f45b0
        ret = <optimized out>
        current = GST_STATE_PAUSED
        next = GST_STATE_READY
        have_async = 0
        have_no_preroll = <optimized out>
        base_time = 14903892000
        start_time = 19588354000
        it = 0x1e26870
        done = 0
        __PRETTY_FUNCTION__ = "gst_bin_change_state_func"
#20 0x00007fa3128842c1 in gst_pipeline_change_state (element=0x19f45b0,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstpipeline.c:482
        result = GST_STATE_CHANGE_SUCCESS
        pipeline = 0x19f45b0
        clock = <optimized out>
        __PRETTY_FUNCTION__ = "gst_pipeline_change_state"
#21 0x00007fa310e70ec0 in gst_play_bin_change_state (element=0x19f45b0,
transition=GST_STATE_CHANGE_PAUSED_TO_READY) at gstplaybin2.c:3936
        ret = <optimized out>
        playbin = 0x19f45b0
        do_save = 0
        __PRETTY_FUNCTION__ = "gst_play_bin_change_state"
#22 0x00007fa3128638fc in gst_element_change_state (element=0x19f45b0,
transition=<optimized out>) at gstelement.c:2761
        oclass = <optimized out>
        ret = GST_STATE_CHANGE_SUCCESS
        __PRETTY_FUNCTION__ = "gst_element_change_state"
#23 0x00007fa31286397f in gst_element_change_state (element=0x19f45b0,
transition=<optimized out>) at gstelement.c:2798
        oclass = <optimized out>
        ret = <optimized out>
        __PRETTY_FUNCTION__ = "gst_element_change_state"
#24 0x00007fa312864252 in gst_element_set_state_func (element=0x19f45b0,
state=GST_STATE_NULL) at gstelement.c:2717
        current = GST_STATE_PLAYING
        next = <optimized out>
        old_pending = <optimized out>
        ret = <optimized out>
        transition = GST_STATE_CHANGE_PLAYING_TO_PAUSED
        old_ret = <optimized out>
        __PRETTY_FUNCTION__ = "gst_element_set_state_func"
#25 0x00007fa3133e497d in _wrap_gst_element_set_state (self=0x1398eb0,
args=<optimized out>, kwargs=<optimized out>) at gstelement.override:71
        _save = 0x1a78760
        kwlist = {0x7fa31340b98a "state", 0x0}
        py_state = <State at remote 0x193ef50>
        state = GST_STATE_NULL
        ret = <optimized out>
#26 0x00000000004b9589 in call_function (oparg=<optimized out>,
pp_stack=0x7fa30f9876a0) at ../Python/ceval.c:4021
        callargs = (<State at remote 0x193ef50>,)
        flags = <optimized out>
        tstate = <optimized out>
        func = <built-in method set_state of __main__.GstPlayBin2 object at
remote 0x1398eb0>
        w = <optimized out>
        na = <optimized out>
        nk = <optimized out>
        n = <optimized out>
        pfunc = 0x1aa7f78
        x = <optimized out>
#27 PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at
../Python/ceval.c:2666
        sp = 0x1aa7f80
        stack_pointer = <optimized out>
        next_instr = 0x14f6c29 "\001d\003"
        opcode = <optimized out>
        oparg = <optimized out>
        why = WHY_NOT
        err = 0
        x = <optimized out>
        v = <optimized out>
        w = <optimized out>
        u = <optimized out>
        t = <optimized out>
        stream = 0x0
        fastlocals = <optimized out>
        freevars = 0x1aa7f78
        retval = <optimized out>
        tstate = 0x1a78760
        co = 0x150b830
        instr_ub = -1
        instr_lb = 0
        instr_prev = -1
        first_instr = 0x14f6bc4 "t"
        names = ('PythonDBusTest', 'remoteTearDown', 'False', 'gst', 'log',
'_waitcb', 'gobject', 'source_remove', 'None', 'pipeline', 'set_state',
'STATE_NULL', 'validateStep', '_errors', 'range', 'len', 'extraInfo', '_tags',
'debug', 'iteritems', 'isinstance', 'int', 'long', '_elements', 'True')
        consts = (None, 'Tearing Down', 'set_state to NULL in
gstreamertest.py', 'set_state to NULL in gstreamertest.py DONE',
'no-errors-seen', 'errors.%d.domain', 'errors.%d.message', 'errors.%d.debug',
'Got tags %r', 2, 31, 'tags.%s', 'elements-used', 2147483648)
#28 0x00000000004b9d77 in fast_function (nk=<optimized out>, na=<optimized
out>, n=<optimized out>, pp_stack=0x7fa30f9877e0, func=<function at remote
0x16c9320>) at ../Python/ceval.c:4107
        retval = 0x0
        i = <optimized out>
        fastlocals = <optimized out>
        f = <optimized out>
        tstate = 0x1a78760
        stack = <optimized out>
        co = <optimized out>
        nd = 0
        globals = <optimized out>
        argdefs = <optimized out>
        d = 0x0
#29 call_function (oparg=<optimized out>, pp_stack=0x7fa30f9877e0) at
../Python/ceval.c:4042
        func = <function at remote 0x16c9320>
        w = <optimized out>
        na = <optimized out>
        nk = <optimized out>
        n = <optimized out>
        pfunc = 0x1aa7d48
        x = <optimized out>
#30 PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at
../Python/ceval.c:2666
        sp = 0x1aa7d50
        stack_pointer = <optimized out>
        next_instr = 0x14f939b "\001t\032"
        opcode = <optimized out>
        oparg = <optimized out>
        why = WHY_NOT
        err = 0
        x = <optimized out>
        v = <optimized out>
        w = <optimized out>
        u = <optimized out>
        t = <optimized out>
        stream = 0x0
        fastlocals = <optimized out>
        freevars = 0x1aa7d48
        retval = <optimized out>
        tstate = 0x1a78760
        co = 0x14fe530
        instr_ub = -1
        instr_lb = 0
        instr_prev = -1
        first_instr = 0x14f9164 "t"
        names = ('info', 'uuid', '_isproxy', 'callRemoteStop', '_testrun',
'_newremotetestsid', 'disconnect', '_testrunremovedtestsigid',
'_processpollid', 'gobject', 'source_remove', '_process', '_returncode',
'None', 'time', 'sleep', 'poll', 'os', 'kill', 'pid', 'signal', 'SIGTERM',
'SIGKILL', 'validateStep', 'extraInfo', 'remoteTearDown', 'Test', 'tearDown')
        consts = (None, 'uuid:%s proxy:%r', 0, 10, <float at remote 0x14c7e20>,
1, "Process isn't done yet, terminating it", 'Process did not terminate,
killing it', 'Process did not exit after SIGKILL', 'Process returned %d',
'subprocess-exited-normally', 'subprocess-return-code')
#31 0x00000000004b9d77 in fast_function (nk=<optimized out>, na=<optimized
out>, n=<optimized out>, pp_stack=0x7fa30f987920, func=<function at remote
0x1534b90>) at ../Python/ceval.c:4107
        retval = 0x0
        i = <optimized out>
        fastlocals = <optimized out>
        f = <optimized out>
        tstate = 0x1a78760
        stack = <optimized out>
        co = <optimized out>
        nd = 0
        globals = <optimized out>
        argdefs = <optimized out>
        d = 0x0
#32 call_function (oparg=<optimized out>, pp_stack=0x7fa30f987920) at
../Python/ceval.c:4042
        func = <function at remote 0x1534b90>
        w = <optimized out>
        na = <optimized out>
        nk = <optimized out>
        n = <optimized out>
        pfunc = 0x1aa7b70
        x = <optimized out>
#33 PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at
../Python/ceval.c:2666
        sp = 0x1aa7b78
        stack_pointer = <optimized out>
        next_instr = 0x14b455c "\001|"
        opcode = <optimized out>
        oparg = <optimized out>
        why = WHY_NOT
        err = 0
        x = <optimized out>
        v = <optimized out>
        w = <optimized out>
        u = <optimized out>
        t = <optimized out>
        stream = 0x0
        fastlocals = <optimized out>
        freevars = 0x1aa7b70
        retval = <optimized out>
        tstate = 0x1a78760
        co = 0x14fe5b0
        instr_ub = -1
        instr_lb = 0
        instr_prev = -1
        first_instr = 0x14b4524 "t"
        names = ('info', 'uuid', '_isproxy', 'Test', 'stop', 'tearDown',
'remoteStopSignal')
        consts = (None, 'uuid:%s proxy:%r')
#34 0x00000000004bfccd in PyEval_EvalCodeEx (co=0x14fe5b0, globals=<optimized
out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>,
kws=<optimized out>, kwcount=0, defs=0x0, defcount=0, closure=0x0) at
../Python/ceval.c:3253
        f = Frame 0x1aa79f0, for file
/home/tpm/gst/releases/gst-qa-system/insanity/dbustest.py, line 257, in stop
(self=<PlaybackTest(_PythonDBusTest__orig_excepthook=<built-in function
excepthook>, _running=False, _remotetimeoutid=0, rusage_start=(<float at remote
0x14c7da8>, <float at remote 0x14c7df0>, <float at remote 0x14c7dc0>),
_tags={'language-code': u'und', 'encoder-version': 0, 'application-name':
u'SUPER(C)   ', 'title': u'big_buck_bunny_1080p_surround.avi_006.AVI',
'bitrate': 96000, 'nominal-bitrate': 96000, 'encoder': u'Xiph.Org libVorbis I
20070622', 'container-format': u'Matroska', 'audio-codec': u'Vorbis',
'video-codec': u'VP8 video'}, _asynctimeouttime=0, _remote_tearing_down=True,
_outputfiles={}, _possiblechecklist={'correct-playback-rates': False,
'decoder-timestamp-interpolation': False, 'dbus-process-connected': False,
'half-speed-flushing-newsegment-seen': False, 'subprocess-exited-normally':
False, 'remote-instance-created': False, 'decoder-delta-unit-flag-handling':
False, 'dbus-process-spawned'...(truncated)
        retval = 0x0
        fastlocals = 0x1aa7b68
        freevars = <optimized out>
        tstate = <optimized out>
        x = <optimized out>
        u = <optimized out>
#35 0x000000000044b49f in function_call (func=<function at remote 0x1534c08>,
arg=(<PlaybackTest(_PythonDBusTest__orig_excepthook=<built-in function
excepthook>, _running=False, _remotetimeoutid=0, rusage_start=(<float at remote
0x14c7da8>, <float at remote 0x14c7df0>, <float at remote 0x14c7dc0>),
_tags={'language-code': u'und', 'encoder-version': 0, 'application-name':
u'SUPER(C)   ', 'title': u'big_buck_bunny_1080p_surround.avi_006.AVI',
'bitrate': 96000, 'nominal-bitrate': 96000, 'encoder': u'Xiph.Org libVorbis I
20070622', 'container-format': u'Matroska', 'audio-codec': u'Vorbis',
'video-codec': u'VP8 video'}, _asynctimeouttime=0, _remote_tearing_down=True,
_outputfiles={}, _possiblechecklist={'correct-playback-rates': False,
'decoder-timestamp-interpolation': False, 'dbus-process-connected': False,
'half-speed-flushing-newsegment-seen': False, 'subprocess-exited-normally':
False, 'remote-instance-created': False, 'decoder-delta-unit-flag-handling':
False, 'dbus-process-spawned': False, 'identical-timestamps': False,
'video-pad-exists': False, 'segment-done': False, 'no-timeout':
Fals...(truncated), kw=0x0) at ../Objects/funcobject.c:526
        result = <optimized out>
        argdefs = <optimized out>
        kwtuple = 0x0
        d = 0x0
        k = 0x0
        nk = 0
        nd = 0
#36 0x000000000041d42a in PyObject_Call (func=<function at remote 0x1534c08>,
arg=<optimized out>, kw=<optimized out>) at ../Objects/abstract.c:2529
        result = <optimized out>
        call = 0x44b440 <function_call>
#37 0x0000000000432d1b in instancemethod_call (func=<function at remote
0x1534c08>, arg=(<PlaybackTest(_PythonDBusTest__orig_excepthook=<built-in
function excepthook>, _running=False, _remotetimeoutid=0, rusage_start=(<float
at remote 0x14c7da8>, <float at remote 0x14c7df0>, <float at remote
0x14c7dc0>), _tags={'language-code': u'und', 'encoder-version': 0,
'application-name': u'SUPER(C)   ', 'title':
u'big_buck_bunny_1080p_surround.avi_006.AVI', 'bitrate': 96000,
'nominal-bitrate': 96000, 'encoder': u'Xiph.Org libVorbis I 20070622',
'container-format': u'Matroska', 'audio-codec': u'Vorbis', 'video-codec': u'VP8
video'}, _asynctimeouttime=0, _remote_tearing_down=True, _outputfiles={},
_possiblechecklist={'correct-playback-rates': False,
'decoder-timestamp-interpolation': False, 'dbus-process-connected': False,
'half-speed-flushing-newsegment-seen': False, 'subprocess-exited-normally':
False, 'remote-instance-created': False, 'decoder-delta-unit-flag-handling':
False, 'dbus-process-spawned': False, 'identical-timestamps': False,
'video-pad-exists': False, 'segment-done': False, 'no-timeout':
Fals...(truncated), kw=0x0) at ../Objects/classobject.c:2578
        self = <PlaybackTest(_PythonDBusTest__orig_excepthook=<built-in
function excepthook>, _running=False, _remotetimeoutid=0, rusage_start=(<float
at remote 0x14c7da8>, <float at remote 0x14c7df0>, <float at remote
0x14c7dc0>), _tags={'language-code': u'und', 'encoder-version': 0,
'application-name': u'SUPER(C)   ', 'title':
u'big_buck_bunny_1080p_surround.avi_006.AVI', 'bitrate': 96000,
'nominal-bitrate': 96000, 'encoder': u'Xiph.Org libVorbis I 20070622',
'container-format': u'Matroska', 'audio-codec': u'Vorbis', 'video-codec': u'VP8
video'}, _asynctimeouttime=0, _remote_tearing_down=True, _outputfiles={},
_possiblechecklist={'correct-playback-rates': False,
'decoder-timestamp-interpolation': False, 'dbus-process-connected': False,
'half-speed-flushing-newsegment-seen': False, 'subprocess-exited-normally':
False, 'remote-instance-created': False, 'decoder-delta-unit-flag-handling':
False, 'dbus-process-spawned': False, 'identical-timestamps': False,
'video-pad-exists': False, 'segment-done': False, 'no-timeout':
False...(truncated)
        klass = <optimized out>
        result = <optimized out>
#38 0x000000000041d42a in PyObject_Call (func=<instancemethod at remote
0x195ecd0>, arg=<optimized out>, kw=<optimized out>) at
../Objects/abstract.c:2529
        result = <optimized out>
        call = 0x432c90 <instancemethod_call>
#39 0x00000000004b9b9e in do_call (nk=<optimized out>, na=<optimized out>,
pp_stack=0x7fa30f987e50, func=<instancemethod at remote 0x195ecd0>) at
../Python/ceval.c:4239
        callargs = <optimized out>
        kwdict = 0x0
        result = 0x0
#40 call_function (oparg=<optimized out>, pp_stack=0x7fa30f987e50) at
../Python/ceval.c:4044
        func = <instancemethod at remote 0x195ecd0>
        w = <optimized out>
        na = <optimized out>
        nk = <optimized out>
        n = <optimized out>
        pfunc = 0x1aa6480
        x = <optimized out>
#41 PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at
../Python/ceval.c:2666
        sp = 0x1aa6488
        stack_pointer = <optimized out>
        next_instr = 0x15380fd "\001d"
        opcode = <optimized out>
        oparg = <optimized out>
        why = WHY_NOT
        err = 0
        x = <optimized out>
        v = <optimized out>
        w = <optimized out>
        u = <optimized out>
        t = <optimized out>
        stream = 0x0
        fastlocals = <optimized out>
        freevars = 0x1aa6480
        retval = <optimized out>
        tstate = 0x1a78760
        co = 0x15328b0
        instr_ub = -1
        instr_lb = 0
        instr_prev = -1
        first_instr = 0x15380e4 "t"
        names = ('gst', 'log', 'PythonDBusTest', 'stop')
        consts = (None, 'Stopping...')
#42 0x00000000004b9d77 in fast_function (nk=<optimized out>, na=<optimized
out>, n=<optimized out>, pp_stack=0x7fa30f987f90, func=<function at remote
0x16c9668>) at ../Python/ceval.c:4107
        retval = 0x0
        i = <optimized out>
        fastlocals = <optimized out>
        f = <optimized out>
        tstate = 0x1a78760
        stack = <optimized out>
        co = <optimized out>
        nd = 0
        globals = <optimized out>
        argdefs = <optimized out>
        d = 0x0
#43 call_function (oparg=<optimized out>, pp_stack=0x7fa30f987f90) at
../Python/ceval.c:4042
        func = <function at remote 0x16c9668>
        w = <optimized out>
        na = <optimized out>
        nk = <optimized out>
        n = <optimized out>
        pfunc = 0x1a78d58
        x = <optimized out>
#44 PyEval_EvalFrameEx (f=<optimized out>, throwflag=<optimized out>) at
../Python/ceval.c:2666
        sp = 0x1a78d60
        stack_pointer = <optimized out>
        next_instr = 0x14af1f9 "\001|"
        opcode = <optimized out>
        oparg = <optimized out>
        why = WHY_NOT
        err = 0
        x = <optimized out>
        v = <optimized out>
        w = <optimized out>
        u = <optimized out>
        t = <optimized out>
        stream = 0x0
        fastlocals = <optimized out>
        freevars = 0x1a78d58
        retval = <optimized out>
        tstate = 0x1a78760
        co = 0x15067b0
        instr_ub = -1
        instr_lb = 0
        instr_prev = -1
        first_instr = 0x14af1a4 "d\001"
        names = ('traceback', '_PythonDBusTest__exception_handled', 'True',
'format_exception', 'extraInfo', 'join', 'stop',
'_PythonDBusTest__orig_excepthook', 'sys', 'exit')
        consts = (None, -1, 'python-exception', '', 1)
#45 0x00000000004bfccd in PyEval_EvalCodeEx (co=0x15067b0, globals=<optimized
out>, locals=<optimized out>, args=<optimized out>, argcount=<optimized out>,
kws=<optimized out>, kwcount=0, defs=0x0, defcount=0, closure=0x0) at
../Python/ceval.c:3253
        f = Frame 0x1a78bb0, for file
/home/tpm/gst/releases/gst-qa-system/insanity/dbustest.py, line 595, in
__excepthook (self=<PlaybackTest(_PythonDBusTest__orig_excepthook=<built-in
function excepthook>, _running=False, _remotetimeoutid=0, rusage_start=(<float
at remote 0x14c7da8>, <float at remote 0x14c7df0>, <float at remote
0x14c7dc0>), _tags={'language-code': u'und', 'encoder-version': 0,
'application-name': u'SUPER(C)   ', 'title':
u'big_buck_bunny_1080p_surround.avi_006.AVI', 'bitrate': 96000,
'nominal-bitrate': 96000, 'encoder': u'Xiph.Org libVorbis I 20070622',
'container-format': u'Matroska', 'audio-codec': u'Vorbis', 'video-codec': u'VP8
video'}, _asynctimeouttime=0, _remote_tearing_down=True, _outputfiles={},
_possiblechecklist={'correct-playback-rates': False,
'decoder-timestamp-interpolation': False, 'dbus-process-connected': False,
'half-speed-flushing-newsegment-seen': False, 'subprocess-exited-normally':
False, 'remote-instance-created': False, 'decoder-delta-unit-flag-handling':
False, 'dbus-process-...(truncated)
        retval = 0x0
        fastlocals = 0x1a78d28
        freevars = <optimized out>
        tstate = <optimized out>
        x = <optimized out>
        u = <optimized out>
#46 0x000000000044b49f in function_call (func=<function at remote 0x1535de8>,
arg=(<PlaybackTest(_PythonDBusTest__orig_excepthook=<built-in function
excepthook>, _running=False, _remotetimeoutid=0, rusage_start=(<float at remote
0x14c7da8>, <float at remote 0x14c7df0>, <float at remote 0x14c7dc0>),
_tags={'language-code': u'und', 'encoder-version': 0, 'application-name':
u'SUPER(C)   ', 'title': u'big_buck_bunny_1080p_surround.avi_006.AVI',
'bitrate': 96000, 'nominal-bitrate': 96000, 'encoder': u'Xiph.Org libVorbis I
20070622', 'container-format': u'Matroska', 'audio-codec': u'Vorbis',
'video-codec': u'VP8 video'}, _asynctimeouttime=0, _remote_tearing_down=True,
_outputfiles={}, _possiblechecklist={'correct-playback-rates': False,
'decoder-timestamp-interpolation': False, 'dbus-process-connected': False,
'half-speed-flushing-newsegment-seen': False, 'subprocess-exited-normally':
False, 'remote-instance-created': False, 'decoder-delta-unit-flag-handling':
False, 'dbus-process-spawned': False, 'identical-timestamps': False,
'video-pad-exists': False, 'segment-done': False, 'no-timeout':
Fals...(truncated), kw=0x0) at ../Objects/funcobject.c:526
        result = <optimized out>
        argdefs = <optimized out>
        kwtuple = 0x0
        d = 0x0
        k = 0x0
        nk = 0
        nd = 0
#47 0x000000000041d42a in PyObject_Call (func=<function at remote 0x1535de8>,
arg=<optimized out>, kw=<optimized out>) at ../Objects/abstract.c:2529
        result = <optimized out>
        call = 0x44b440 <function_call>
#48 0x0000000000432d1b in instancemethod_call (func=<function at remote
0x1535de8>, arg=(<PlaybackTest(_PythonDBusTest__orig_excepthook=<built-in
function excepthook>, _running=False, _remotetimeoutid=0, rusage_start=(<float
at remote 0x14c7da8>, <float at remote 0x14c7df0>, <float at remote
0x14c7dc0>), _tags={'language-code': u'und', 'encoder-version': 0,
'application-name': u'SUPER(C)   ', 'title':
u'big_buck_bunny_1080p_surround.avi_006.AVI', 'bitrate': 96000,
'nominal-bitrate': 96000, 'encoder': u'Xiph.Org libVorbis I 20070622',
'container-format': u'Matroska', 'audio-codec': u'Vorbis', 'video-codec': u'VP8
video'}, _asynctimeouttime=0, _remote_tearing_down=True, _outputfiles={},
_possiblechecklist={'correct-playback-rates': False,
'decoder-timestamp-interpolation': False, 'dbus-process-connected': False,
'half-speed-flushing-newsegment-seen': False, 'subprocess-exited-normally':
False, 'remote-instance-created': False, 'decoder-delta-unit-flag-handling':
False, 'dbus-process-spawned': False, 'identical-timestamps': False,
'video-pad-exists': False, 'segment-done': False, 'no-timeout':
Fals...(truncated), kw=0x0) at ../Objects/classobject.c:2578
        self = <PlaybackTest(_PythonDBusTest__orig_excepthook=<built-in
function excepthook>, _running=False, _remotetimeoutid=0, rusage_start=(<float
at remote 0x14c7da8>, <float at remote 0x14c7df0>, <float at remote
0x14c7dc0>), _tags={'language-code': u'und', 'encoder-version': 0,
'application-name': u'SUPER(C)   ', 'title':
u'big_buck_bunny_1080p_surround.avi_006.AVI', 'bitrate': 96000,
'nominal-bitrate': 96000, 'encoder': u'Xiph.Org libVorbis I 20070622',
'container-format': u'Matroska', 'audio-codec': u'Vorbis', 'video-codec': u'VP8
video'}, _asynctimeouttime=0, _remote_tearing_down=True, _outputfiles={},
_possiblechecklist={'correct-playback-rates': False,
'decoder-timestamp-interpolation': False, 'dbus-process-connected': False,
'half-speed-flushing-newsegment-seen': False, 'subprocess-exited-normally':
False, 'remote-instance-created': False, 'decoder-delta-unit-flag-handling':
False, 'dbus-process-spawned': False, 'identical-timestamps': False,
'video-pad-exists': False, 'segment-done': False, 'no-timeout':
False...(truncated)
        klass = <optimized out>
        result = <optimized out>
#49 0x000000000041d42a in PyObject_Call (func=<instancemethod at remote
0x14a28c0>, arg=<optimized out>, kw=<optimized out>) at
../Objects/abstract.c:2529
        result = <optimized out>
        call = 0x432c90 <instancemethod_call>
#50 0x00000000004b8da6 in PyEval_CallObjectWithKeywords (func=<instancemethod
at remote 0x14a28c0>, arg=(<type at remote 0x83f400>,
exceptions.IndexError('list index out of range',), <traceback at remote
0x310bcf8>), kw=<optimized out>) at ../Python/ceval.c:3890
        result = <optimized out>
#51 0x00000000004e0a3d in PyErr_PrintEx (set_sys_last_vars=<optimized out>) at
../Python/pythonrun.c:1155
        args = (<type at remote 0x83f400>, exceptions.IndexError('list index
out of range',), <traceback at remote 0x310bcf8>)
        result = <optimized out>
        exception = <type at remote 0x83f400>
        v = exceptions.IndexError('list index out of range',)
        tb = <traceback at remote 0x310bcf8>
        hook = <instancemethod at remote 0x14a28c0>
#52 0x00007fa3133d6264 in data_probe_callback_marshal (pad=<optimized out>,
obj=<optimized out>, user_data=<optimized out>) at gstpad.override:906
        state = PyGILState_UNLOCKED
        callback = <instancemethod at remote 0x195ed20>
        args = (<type at remote 0x83f400>, exceptions.IndexError('list index
out of range',), <traceback at remote 0x310bcf8>)
        pret = 0x0
        py_user_data = <optimized out>
        ret = <optimized out>
        __PRETTY_FUNCTION__ = "data_probe_callback_marshal"
#53 0x00007fa3128c0ad8 in gst_marshal_BOOLEAN__POINTER (closure=0x1917b00,
return_value=0x7fa30f9886a0, n_param_values=<optimized out>,
param_values=0x7fa30f9887b8, invocation_hint=<optimized out>,
marshal_data=<optimized out>) at gstmarshal.c:586
        callback = 0x7fa3133d60f0 <data_probe_callback_marshal>
        cc = 0x1917b00
        data1 = 0x1a08c10
        data2 = <optimized out>
        v_return = <optimized out>
        __PRETTY_FUNCTION__ = "gst_marshal_BOOLEAN__POINTER"
#54 0x00007fa3167e9804 in g_closure_invoke (closure=0x1917b00,
return_value=0x7fa30f9886a0, n_param_values=2, param_values=0x7fa30f9887b8,
invocation_hint=<optimized out>) at
/tmp/buildd/glib2.0-2.30.2/./gobject/gclosure.c:774
        marshal = 0x7fa3128c0a40 <gst_marshal_BOOLEAN__POINTER>
        marshal_data = <optimized out>
        in_marshal = <optimized out>
        __PRETTY_FUNCTION__ = "g_closure_invoke"
#55 0x00007fa3167fb78a in signal_emit_unlocked_R (node=<optimized out>,
detail=212, instance=0x1a08c10, emission_return=0x7fa30f9887e8,
instance_and_params=0x7fa30f9887b8) at
/tmp/buildd/glib2.0-2.30.2/./gobject/gsignal.c:3272
        tmp = <optimized out>
        handler = 0x1b61440
        accumulator = 0x1701820
        emission = {next = 0x0, instance = 0x1a08c10, ihint = {signal_id = 14,
detail = 212, run_type = G_SIGNAL_RUN_FIRST}, state = EMISSION_RUN, chain_type
= 4}
        class_closure = 0x1701730
        hlist = 0x7fa3182776c0
        handler_list = 0x1b61440
        return_accu = 0x7fa30f9886a0
        accu = {g_type = 20, data = {{v_int = 0, v_uint = 0, v_long = 0,
v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer =
0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 =
0, v_float = 0, v_double = 0, v_pointer = 0x0}}}
        signal_id = 14
        max_sequential_handler_number = 132
        return_value_altered = 0
#56 0x00007fa316804420 in g_signal_emitv (instance_and_params=<optimized out>,
signal_id=<optimized out>, detail=212, return_value=0x7fa30f9887e8) at
/tmp/buildd/glib2.0-2.30.2/./gobject/gsignal.c:2907
        instance = <optimized out>
        node = 0x17017c0
        __PRETTY_FUNCTION__ = "g_signal_emitv"
#57 0x00007fa312845a5b in gst_pad_emit_have_data_signal (pad=<optimized out>,
obj=0x1e8f010) at gstpad.c:4167
        ret = {g_type = 20, data = {{v_int = 1, v_uint = 1, v_long = 1, v_ulong
= 1, v_int64 = 1, v_uint64 = 1, v_float = 1.40129846e-45, v_double =
4.9406564584124654e-324, v_pointer = 0x1}, {v_int = 0, v_uint = 0, v_long = 0,
v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer =
0x0}}}
        args = {{g_type = 24131520, data = {{v_int = 27298832, v_uint =
27298832, v_long = 27298832, v_ulong = 27298832, v_int64 = 27298832, v_uint64 =
27298832, v_float = 5.89756974e-38, v_double = 1.3487415062791688e-316,
v_pointer = 0x1a08c10}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0,
v_int64 = 0, v_uint64 = 0, v_float = 0, v_double = 0, v_pointer = 0x0}}},
{g_type = 196, data = {{v_int = 32043024, v_uint = 32043024, v_long = 32043024,
v_ulong = 32043024, v_int64 = 32043024, v_uint64 = 32043024, v_float =
8.55678132e-38, v_double = 1.5831357347266563e-316, v_pointer = 0x1e8f010},
{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0,
v_float = 0, v_double = 0, v_pointer = 0x0}}}}
        res = <optimized out>
        detail = <optimized out>
#58 0x00007fa31287cc33 in gst_pad_push_data (pad=0x1a08c10, is_buffer=1,
data=0x1e8f010, cache=0x0) at gstpad.c:4473
        peer = <optimized out>
        ret = <optimized out>
        caps = 0x0
        caps_changed = <optimized out>
        __PRETTY_FUNCTION__ = "gst_pad_push_data"
#59 0x00007fa312880a86 in gst_pad_push (pad=0x1a08c10, buffer=0x1e8f010) at
gstpad.c:4730
        scache = {peer = 0x0, caps = 0x0}
        cache = 0x0
        ret = <optimized out>
        cache_ptr = 0x1a08d88
        peer = <optimized out>
        caps = <optimized out>
        __PRETTY_FUNCTION__ = "gst_pad_push"
#60 0x00007fa30ed74f8f in gst_base_video_decoder_finish_frame
(base_video_decoder=0x1a85fd0, frame=0x1aa88f0) at gstbasevideodecoder.c:1668
        state = <optimized out>
        src_buffer = 0x1e8f010
        ret = GST_FLOW_OK
        __FUNCTION__ = "gst_base_video_decoder_finish_frame"
#61 0x00007fa30ef83151 in gst_vp8_dec_handle_frame (decoder=<optimized out>,
frame=<optimized out>) at gstvp8dec.c:484
        dec = <optimized out>
        ret = 960
        status = <optimized out>
        iter = 0x1a7ace0
        img = 0x1a7ace0
        decoder_deadline = <optimized out>
        deadline = <optimized out>
        __FUNCTION__ = "gst_vp8_dec_handle_frame"
#62 0x00007fa30ed700f1 in gst_base_video_decoder_have_frame_2
(base_video_decoder=0x1a85fd0) at gstbasevideodecoder.c:1857
        frame = 0x1aa88f0
        base_video_decoder_class = 0x1a85640
        ret = GST_FLOW_OK
        __PRETTY_FUNCTION__ = "gst_base_video_decoder_have_frame_2"
        __FUNCTION__ = "gst_base_video_decoder_have_frame_2"
#63 0x00007fa30ed738bd in gst_base_video_decoder_chain (pad=<optimized out>,
buf=0x7fa3082ecf20) at gstbasevideodecoder.c:1293
        base_video_decoder = 0x1a85fd0
        ret = GST_FLOW_OK
        __FUNCTION__ = "gst_base_video_decoder_chain"
#64 0x00007fa312880b9a in gst_pad_push (pad=0x1a08910, buffer=0x7fa3082ecf20)
at gstpad.c:4710
        cache = 0x1a972a0
        ret = <optimized out>
        cache_ptr = 0x1a08a88
        peer = 0x1a08a90
        caps = <optimized out>
        __PRETTY_FUNCTION__ = "gst_pad_push"
#65 0x00007fa310a1abd1 in gst_single_queue_push_one (object=0x7fa3082ecf20,
sq=0x19f6a50, mq=0x1a7f030) at gstmultiqueue.c:1087
        buffer = 0x7fa3082ecf20
        timestamp = <optimized out>
        duration = <optimized out>
        caps = 0x1a7c940
        result = GST_FLOW_OK
#66 gst_multi_queue_loop (pad=<optimized out>) at gstmultiqueue.c:1318
        sq = 0x19f6a50
        item = <optimized out>
        sitem = 0x1a8db20
        mq = 0x1a7f030
        object = <optimized out>
        newid = 2525
        result = 27773248
        next_time = <optimized out>
        __PRETTY_FUNCTION__ = "gst_multi_queue_loop"
#67 0x00007fa3128a8074 in gst_task_func (task=0x1a6a620) at gsttask.c:327
        lock = 0x1a7ccc0
        tself = 0x1a7c7b0
        priv = 0x1a6a6c0
        __PRETTY_FUNCTION__ = "gst_task_func"
#68 0x00007fa316143d08 in g_thread_pool_thread_proxy (data=<optimized out>) at
/tmp/buildd/glib2.0-2.30.2/./glib/gthreadpool.c:319
        task = 0x1a67460
        pool = 0x16e8520
#69 0x00007fa3161417e6 in g_thread_create_proxy (data=0x1a7c7b0) at
/tmp/buildd/glib2.0-2.30.2/./glib/gthread.c:1962
        thread = 0x1a7c7b0
        __PRETTY_FUNCTION__ = "g_thread_create_proxy"
#70 0x00007fa318273b40 in start_thread (arg=<optimized out>) at
pthread_create.c:304
        __res = <optimized out>
        pd = 0x7fa30f989700
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140338318055168,
-3525289488259991483, 140338326441712, 140338318055872, 140338466033728, 3,
3482893101007648837, 3482856656525867077}, mask_was_saved = 0}}, priv = {pad =
{0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
        freesize = <optimized out>
        __PRETTY_FUNCTION__ = "start_thread"
#71 0x00007fa31710636d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
No locals.
#72 0x0000000000000000 in ?? ()
No symbol table info available.


The exception handler should either unconditionally schedule the stop from the
main thread, or check if it is the main thread or not and marshal it into the
main thread if not.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list