[Bug 688116] New: Some H.264 MP4 files don't show the video or crash the player

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Sun Nov 11 13:45:28 PST 2012


https://bugzilla.gnome.org/show_bug.cgi?id=688116
  GStreamer | don't know | 1.0.2

           Summary: Some H.264 MP4 files don't show the video or crash the
                    player
    Classification: Platform
           Product: GStreamer
           Version: 1.0.2
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: don't know
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: nekohayo at gmail.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=228737)
 --> (https://bugzilla.gnome.org/attachment.cgi?id=228737)
sample file

Attached is a sample file. I have many files with the same characteristics
(that were grabbed from the web a while ago). These used to play fine with some
version of gstreamer 0.10.x, but I recently started noticing (with 0.10.36 and
such) that they wouldn't play anymore in totem: they would show a black screen,
sometimes wouldn't seek, and their properties would say the resolution is 0x0.

Testing with GStreamer 1.0.2 through pitivi's built-in video player, I get a
segfault/crash that takes down pitivi entirely. Here is a backtrace:


(gdb) set pagination 0
(gdb) run bin/pitivi
Starting program: /usr/bin/python bin/pitivi
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
process 10454 is executing new program: /usr/bin/env
process 10454 is executing new program: /usr/bin/python2.7
Missing separate debuginfos, use: debuginfo-install coreutils-8.15-7.fc17.i686
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
warning: the debug information found in
"/usr/lib/debug//lib/libdbus-1.so.3.5.6.debug" does not match
"/lib/libdbus-1.so.3" (CRC mismatch).

warning: the debug information found in
"/usr/lib/debug/usr/lib/libfreebl3.so.debug" does not match
"/lib/libfreebl3.so" (CRC mismatch).

warning: the debug information found in
"/usr/lib/debug//lib/libcom_err.so.2.1.debug" does not match
"/lib/libcom_err.so.2" (CRC mismatch).

[New Thread 0xb6472b40 (LWP 10457)]
[New Thread 0xb5ad9b40 (LWP 10458)]
[Thread 0xb5ad9b40 (LWP 10458) exited]
[New Thread 0xb5ad9b40 (LWP 10459)]
[Thread 0xb5ad9b40 (LWP 10459) exited]
Detaching after fork from child process 10460.
[New Thread 0xb5ad9b40 (LWP 10462)]
[New Thread 0xaf311b40 (LWP 10463)]
[New Thread 0xae97ab40 (LWP 10464)]
[New Thread 0xad23cb40 (LWP 10465)]
[New Thread 0xaca3bb40 (LWP 10466)]
[New Thread 0xac23ab40 (LWP 10467)]
[New Thread 0xaba39b40 (LWP 10468)]
[New Thread 0xab0ffb40 (LWP 10469)]
[New Thread 0xaa8feb40 (LWP 10470)]
[Thread 0xaca3bb40 (LWP 10466) exited]
[Thread 0xaba39b40 (LWP 10468) exited]
[Thread 0xac23ab40 (LWP 10467) exited]
[Thread 0xad23cb40 (LWP 10465) exited]
[Thread 0xab0ffb40 (LWP 10469) exited]
[Thread 0xaf311b40 (LWP 10463) exited]
[Thread 0xb6472b40 (LWP 10457) exited]
[Thread 0xae97ab40 (LWP 10464) exited]
[Thread 0xb5ad9b40 (LWP 10462) exited]
[New Thread 0xae97ab40 (LWP 10471)]
[New Thread 0xb5ad9b40 (LWP 10472)]
[New Thread 0xb6472b40 (LWP 10473)]
[New Thread 0xaf311b40 (LWP 10474)]
[New Thread 0xad23cb40 (LWP 10475)]
[New Thread 0xaca3bb40 (LWP 10476)]
[New Thread 0xac23ab40 (LWP 10477)]
[New Thread 0xab0ffb40 (LWP 10478)]
[New Thread 0xa9cffb40 (LWP 10479)]
[Thread 0xad23cb40 (LWP 10475) exited]
[Thread 0xac23ab40 (LWP 10477) exited]
[Thread 0xaf311b40 (LWP 10474) exited]
[Thread 0xaca3bb40 (LWP 10476) exited]
[New Thread 0xac23ab40 (LWP 10480)]
[New Thread 0xaca3bb40 (LWP 10481)]
[New Thread 0xad23cb40 (LWP 10482)]
[New Thread 0xaf311b40 (LWP 10483)]
[New Thread 0xa94feb40 (LWP 10484)]
[New Thread 0xa8cfdb40 (LWP 10485)]
[New Thread 0xa44fbb40 (LWP 10486)]
[New Thread 0xa3cfab40 (LWP 10487)]
[New Thread 0xa34f9b40 (LWP 10488)]
[New Thread 0xa2cf8b40 (LWP 10489)]
[New Thread 0xa24f7b40 (LWP 10490)]
[New Thread 0xa1cf6b40 (LWP 10491)]
[New Thread 0xa14f5b40 (LWP 10492)]
[New Thread 0xa0cf4b40 (LWP 10493)]
[New Thread 0xa04f3b40 (LWP 10494)]
[New Thread 0x9fcf2b40 (LWP 10495)]
[Thread 0xa0cf4b40 (LWP 10493) exited]
[Thread 0xa14f5b40 (LWP 10492) exited]
[Thread 0xa24f7b40 (LWP 10490) exited]
[Thread 0xa1cf6b40 (LWP 10491) exited]
[New Thread 0xa0cf4b40 (LWP 10496)]
[New Thread 0xa14f5b40 (LWP 10497)]
[New Thread 0xa1cf6b40 (LWP 10498)]
[New Thread 0xa24f7b40 (LWP 10499)]
[New Thread 0x9f4f1b40 (LWP 10500)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb6472b40 (LWP 10473)]
magazine_chain_pop_head (magazine_chunks=0xb4f1d740) at gslice.c:532
532          (*magazine_chunks)->data = chunk->next;
Missing separate debuginfos, use: debuginfo-install
dbus-libs-1.4.10-6.fc17.i686 gtk2-2.24.13-1.fc17.i686
libcom_err-1.42.3-3.fc17.i686 libv4l-0.8.8-2.fc17.i686
nss-softokn-freebl-3.13.6-1.fc17.i686 openssl-1.0.0j-2.fc17.i686
(gdb) bt full
#0  magazine_chain_pop_head (magazine_chunks=0xb4f1d740) at gslice.c:532
        chunk = 0x1010101
#1  thread_memory_magazine1_alloc (ix=<optimized out>, tmem=<optimized out>) at
gslice.c:835
        mag = 0xb4f1d740
#2  g_slice_alloc (mem_size=mem_size at entry=88) at gslice.c:994
        ix = 10
        tmem = 0x1010101
        chunk_size = 88
        mem = <optimized out>
        acat = 2876635664
#3  0xb7a2fa66 in g_slice_alloc0 (mem_size=mem_size at entry=88) at gslice.c:1029
        mem = <optimized out>
#4  0xb72d5d99 in gst_iterator_new (size=size at entry=88,
type=type at entry=135697864, lock=lock at entry=0x0,
master_cookie=master_cookie at entry=0xb7378970, copy=copy at entry=0xb72d5a90
<gst_single_object_iterator_copy>, next=next at entry=0xb72d5a20
<gst_single_object_iterator_next>, item=item at entry=0,
resync=resync at entry=0xb72d58c0 <gst_single_object_iterator_resync>,
free=free at entry=0xb72d5940 <gst_single_object_iterator_free>) at
gstiterator.c:165
        result = <optimized out>
        __PRETTY_FUNCTION__ = "gst_iterator_new"
#5  0xb72d66f4 in gst_iterator_new_single (type=135697864,
object=object at entry=0xb64712cc) at gstiterator.c:809
        result = <optimized out>
#6  0xb72d1100 in gst_proxy_pad_iterate_internal_links_default (pad=0xb4f1fa88,
parent=0xaea04880) at gstghostpad.c:100
        res = 0x0
        internal = 0xaea04880
        v = {g_type = 135697864, data = {{v_int = -1365227392, v_uint =
2929739904, v_long = -1365227392, v_ulong = 2929739904, v_int64 = 2929739904,
v_uint64 = 2929739904, v_float = -7.2888362e-11, v_double =
1.4474838378166316e-314, v_pointer = 0xaea04880}, {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}}}
        __PRETTY_FUNCTION__ = "gst_proxy_pad_iterate_internal_links_default"
#7  0xb72e4ad7 in gst_pad_iterate_internal_links (pad=pad at entry=0xb4f1fa88) at
gstpad.c:2613
        res = 0x0
        parent = 0xaea04880
        __PRETTY_FUNCTION__ = "gst_pad_iterate_internal_links"
#8  0xb72e4ba9 in gst_pad_forward (pad=pad at entry=0xb4f1fa88,
forward=forward at entry=0xb72e7fc0 <event_forward_func>,
user_data=user_data at entry=0xb64713e4) at gstpad.c:2652
        result = 0
        iter = <optimized out>
        done = 0
        item = {g_type = 0, 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}}}
        pushed_pads = 0x0
        __PRETTY_FUNCTION__ = "gst_pad_forward"
#9  0xb72e55c3 in gst_pad_event_default (pad=0xb4f1fa88, parent=0xaea04880,
event=0x9501300) at gstpad.c:2770
        data = {event = 0x9501300, result = 0, dispatched = 0}
        result = <optimized out>
        forward = <optimized out>
        __PRETTY_FUNCTION__ = "gst_pad_event_default"
#10 0xb72de194 in gst_pad_send_event_unchecked (pad=pad at entry=0xb4f1fa88,
event=event at entry=0x9501300,
type=type at entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at gstpad.c:4821
        ret = <optimized out>
        event_type = GST_EVENT_STREAM_START
        serialized = <optimized out>
        need_unlock = 1
        sticky = 1
        eventfunc = 0xb72e5500 <gst_pad_event_default>
        parent = 0xaea04880
        __PRETTY_FUNCTION__ = "gst_pad_send_event_unchecked"
#11 0xb72dea46 in gst_pad_push_event_unchecked (pad=pad at entry=0xae028888,
event=0x9501300, type=<optimized out>,
type at entry=GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM) at gstpad.c:4514
        ret = <optimized out>
        peerpad = 0xb4f1fa88
        event_type = 2919401620
        __PRETTY_FUNCTION__ = "gst_pad_push_event_unchecked"
#12 0xb72def58 in push_sticky (pad=pad at entry=0xae028888,
ev=ev at entry=0xb6471598, user_data=user_data at entry=0xb6471608) at gstpad.c:3285
        data = 0xb6471608
        event = 0x9501300
        __PRETTY_FUNCTION__ = "push_sticky"
#13 0xb72dc80f in events_foreach (pad=pad at entry=0xae028888,
func=func at entry=0xb72dee90 <push_sticky>, user_data=user_data at entry=0xb6471608)
at gstpad.c:514
        ev = 0xb4f1b588
        ev_ret = {received = 0, event = 0x9501300}
        i = <optimized out>
        len = 2
        events = 0xb4f07b40
        ret = <optimized out>
        cookie = 3
#14 0xb72e7ea7 in check_sticky (pad=0xae028888) at gstpad.c:3333
        data = {ret = GST_FLOW_OK, was_eos = 0}
#15 gst_pad_push_event (pad=0xae028888, event=0x9501300) at gstpad.c:4635
        res = 0
        type = GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM
        sticky = 1
        serialized = 1
        __PRETTY_FUNCTION__ = "gst_pad_push_event"
#16 0xb711eaea in gst_video_decoder_push_event
(decoder=decoder at entry=0xae026870, event=<optimized out>) at
gstvideodecoder.c:897
        __PRETTY_FUNCTION__ = "gst_video_decoder_push_event"
#17 0xb7125971 in gst_video_decoder_prepare_finish_frame
(decoder=decoder at entry=0xae026870, frame=frame at entry=0xb5b45600,
dropping=dropping at entry=0) at gstvideodecoder.c:2119
        priv = 0xae026aa8
        l = 0xb4f11dd0
        events = 0xb4f1b420
        __PRETTY_FUNCTION__ = "gst_video_decoder_prepare_finish_frame"
#18 0xb7128378 in gst_video_decoder_finish_frame (decoder=0xae026870,
frame=frame at entry=0xb5b45600) at gstvideodecoder.c:2368
        ret = GST_FLOW_OK
        priv = 0xae026aa8
        output_buffer = <optimized out>
        __PRETTY_FUNCTION__ = "gst_video_decoder_finish_frame"
#19 0xad2a5391 in gst_ffmpegviddec_video_frame
(ffmpegdec=ffmpegdec at entry=0xae026870, data=<optimized out>,
size=size at entry=13567, frame=frame at entry=0xb5b45600, ret=ret at entry=0xb6471b48)
at gstavviddec.c:1205
        len = 13567
        have_data = 256
        mode_switch = 0
        decode = -1246472704
        skip_frame = 0
        out_frame = 0xb5b45600
        out_dframe = <optimized out>
        packet = {pts = 0, dts = 0, data = 0xaea5ba60 "", size = 13567,
stream_index = 0, flags = 0, side_data = 0x0, side_data_elems = 0, duration =
0, destruct = 0, priv = 0x0, pos = 0, convergence_duration = 0}
        __FUNCTION__ = "gst_ffmpegviddec_video_frame"
#20 0xad2a57ba in gst_ffmpegviddec_frame (ffmpegdec=ffmpegdec at entry=0xae026870,
data=data at entry=0xaea5ba60 "", size=size at entry=13567,
got_data=got_data at entry=0xb6471b44, frame=frame at entry=0xb5b45600,
ret=ret at entry=0xb6471b48) at gstavviddec.c:1262
        oclass = 0xae023d68
        have_data = 0
        len = 0
        __FUNCTION__ = "gst_ffmpegviddec_frame"
#21 0xad2a5e84 in gst_ffmpegviddec_handle_frame (decoder=0xae026870,
frame=0xb5b45600) at gstavviddec.c:1379
        tmp_padding = "\bA\257\267\360", <incomplete sequence \364\242\267>
        ffmpegdec = 0xae026870
        bdata = 0xaea5ba60 ""
        len = <optimized out>
        have_data = <optimized out>
        bsize = 13567
        minfo = {memory = 0xaea5ba08, flags = GST_MAP_READ, data = 0xaea5ba60
"", size = 13567, maxsize = 13578, user_data = {0xe1046c80, 0x5, 0x0,
0xb7af4108}, _gst_reserved = {0xb5b45600, 0x0, 0xae026aa8, 0xb7a0ff7a}}
        ret = GST_FLOW_OK
        do_padding = <optimized out>
        __FUNCTION__ = "gst_ffmpegviddec_handle_frame"
#22 0xb711e7c7 in gst_video_decoder_decode_frame
(decoder=decoder at entry=0xae026870, frame=0xb5b45600) at gstvideodecoder.c:2665
        priv = 0xae026aa8
        decoder_class = 0xae023d68
        ret = GST_FLOW_OK
        __PRETTY_FUNCTION__ = "gst_video_decoder_decode_frame"
#23 0xb712192c in gst_video_decoder_chain_forward
(decoder=decoder at entry=0xae026870, buf=buf at entry=0xa9f23168,
at_eos=at_eos at entry=0) at gstvideodecoder.c:1697
        priv = 0xae026aa8
        klass = 0xae023d68
        ret = GST_FLOW_OK
        __PRETTY_FUNCTION__ = "gst_video_decoder_chain_forward"
#24 0xb71230cc in gst_video_decoder_chain (pad=0xae028750, parent=0xae026870,
buf=0xa9f23168) at gstvideodecoder.c:1957
        decoder = 0xae026870
        ret = GST_FLOW_OK
        __PRETTY_FUNCTION__ = "gst_video_decoder_chain"
#25 0xb72e035a in gst_pad_chain_data_unchecked (data=0xa9f23168,
type=(GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_PUSH), pad=0xae028750) at
gstpad.c:3654
        chainfunc = 0xb7122ba0 <gst_video_decoder_chain>
        ret = <optimized out>
        parent = 0xae026870
#26 gst_pad_push_data (pad=0xb4f1cc30, pad at entry=0xa9f23168,
type=type at entry=(GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_PUSH),
data=0xa9f23168) at gstpad.c:3871
        peer = 0xae028750
        ret = <optimized out>
        __PRETTY_FUNCTION__ = "gst_pad_push_data"
#27 0xb72e72c7 in gst_pad_push (pad=0xa9f23168, buffer=0xa9f23168) at
gstpad.c:3974
        __PRETTY_FUNCTION__ = "gst_pad_push"
#28 0xb7186c74 in gst_base_transform_chain (pad=0xb4f1c618, parent=0xb4f22bd8,
buffer=0xa9f23168) at gstbasetransform.c:2203
        position_out = <optimized out>
        trans = 0xb4f22bd8
        klass = <optimized out>
        priv = 0xb4f22d48
        ret = <optimized out>
        position = 83333333
        timestamp = <optimized out>
        duration = 83333333
        outbuf = 0xa9f23168
        __PRETTY_FUNCTION__ = "gst_base_transform_chain"
#29 0xb72e035a in gst_pad_chain_data_unchecked (data=0xa9f23168,
type=(GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_PUSH), pad=0xb4f1c618) at
gstpad.c:3654
        chainfunc = 0xb7186b20 <gst_base_transform_chain>
        ret = <optimized out>
        parent = 0xb4f22bd8
#30 gst_pad_push_data (pad=0xb5b36ea8, pad at entry=0xa9f23168,
type=type at entry=(GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_PUSH),
data=0xa9f23168) at gstpad.c:3871
        peer = 0xb4f1c618
        ret = <optimized out>
        __PRETTY_FUNCTION__ = "gst_pad_push_data"
#31 0xb72e72c7 in gst_pad_push (pad=0xa9f23168, buffer=buffer at entry=0xa9f23168)
at gstpad.c:3974
        __PRETTY_FUNCTION__ = "gst_pad_push"
#32 0xb71613c8 in gst_base_parse_push_frame (parse=parse at entry=0xaea1e460,
frame=frame at entry=0xb6472090) at gstbaseparse.c:2121
        ret = <optimized out>
        last_start = <optimized out>
        last_stop = 83333333
        klass = 0xb4f1d1f0
        buffer = 0xa9f23168
        size = 13567
        __PRETTY_FUNCTION__ = "gst_base_parse_push_frame"
#33 0xb71623c3 in gst_base_parse_chain (pad=0xb5b36278, parent=0xaea1e460,
buffer=0xa9f23168) at gstbaseparse.c:2593
        frame = {buffer = 0x0, out_buffer = 0x0, flags = 0, offset = 0,
overhead = 0, size = 0, _gst_reserved_i = {0, 0}, _gst_reserved_p = {0x0, 0x0},
_private_flags = 1}
        bclass = 0xb4f1d1f0
        parse = 0xaea1e460
        ret = GST_FLOW_OK
        tmpbuf = 0x0
        skip = -1
        data = <optimized out>
        min_size = <optimized out>
        av = <optimized out>
        pts = <optimized out>
        dts = <optimized out>
        __PRETTY_FUNCTION__ = "gst_base_parse_chain"
#34 0xb72e035a in gst_pad_chain_data_unchecked (data=0xa9f23168,
type=(GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_PUSH), pad=0xb5b36278) at
gstpad.c:3654
        chainfunc = 0xb71620e0 <gst_base_parse_chain>
        ret = <optimized out>
        parent = 0xaea1e460
#35 gst_pad_push_data (pad=0x8cb0140, pad at entry=0xa9f23168,
type=type at entry=(GST_PAD_PROBE_TYPE_BUFFER | GST_PAD_PROBE_TYPE_PUSH),
data=0xa9f23168) at gstpad.c:3871
        peer = 0xb5b36278
        ret = <optimized out>
        __PRETTY_FUNCTION__ = "gst_pad_push_data"
#36 0xb72e72c7 in gst_pad_push (pad=0xa9f23168, buffer=buffer at entry=0xa9f23168)
at gstpad.c:3974
        __PRETTY_FUNCTION__ = "gst_pad_push"
#37 0xb5c3deac in gst_single_queue_push_one (object=0xa9f23168, sq=0xaea0ca18,
mq=0x8f54da8) at gstmultiqueue.c:1057
        buffer = 0xa9f23168
        timestamp = 0
        duration = <optimized out>
        result = GST_FLOW_OK
#38 gst_multi_queue_loop (pad=0x8cb0140) at gstmultiqueue.c:1303
        sq = 0xaea0ca18
        item = <optimized out>
        sitem = 0xb4f024a0
        mq = 0x8f54da8
        object = <optimized out>
        newid = 14
        result = GST_FLOW_OK
        next_time = <optimized out>
        is_buffer = 1
        __PRETTY_FUNCTION__ = "gst_multi_queue_loop"
#39 0xb7311630 in gst_task_func (task=task at entry=0xa9f235c8) at gsttask.c:316
        lock = 0x8cb0184
        tself = 0xae025060
        priv = 0xa9f23640
        __PRETTY_FUNCTION__ = "gst_task_func"
#40 0xb7312838 in default_func (tdata=0xaea09ec0, pool=0x81d8378) at
gsttaskpool.c:70
        func = 0xb73113d0 <gst_task_func>
        user_data = 0xa9f235c8
#41 0xb7a39378 in g_thread_pool_thread_proxy (data=0x80f2a38) at
gthreadpool.c:309
        task = 0xaea09ec0
        pool = 0x80f2a38
#42 0xb7a38993 in g_thread_proxy (data=0xae025060) at gthread.c:797
        thread = 0xae025060
#43 0x45ad6adf in start_thread (arg=0xb6472b40) at pthread_create.c:309
        __res = <optimized out>
        pd = 0xb6472b40
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {1169059828, 0, 4001536,
-1236851608, 1836202699, -1176474324}, mask_was_saved = 0}}, priv = {pad =
{0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = 0
        pagesize_m1 = <optimized out>
        sp = <optimized out>
        freesize = <optimized out>
#44 0x45a103ce in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133
No locals.
(gdb)

-- 
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