GNOME Bugzilla – Bug 102563
`GST_DATA_REFCOUNT_VALUE (data) > 0' failed
Last modified: 2004-12-22 21:47:04 UTC
This is easy to reproduce. joshua@emit:~/gst/gst-plugins/examples/indexing$ ./indexmpeg -q 1 /local/aleader/original/AlienSong.mpg INFO ( 2830: 0) Initializing GStreamer Core Library version 0.5.0.1 INFO ( 2830: 0) CPU features: (0081813f) MMX registry: loaded user_registry in 0.226414 seconds (/home/joshua/.gstreamer/registry.xml) registry: loaded global_registry in 0.031504 seconds (/home/joshua/gst/gstreamer/registry.xml) /pipeline/src.src: active = TRUE /pipeline/demux.sink: active = TRUE indexing /local/aleader/original/AlienSong.mpg... /pipeline/demux: streaminfo = (GstCaps *) { application/x-gst-streaminfo; mpegversion=(int) 1; bitrate=(int) 600000 } /pipeline/src.src: caps = (GstCaps *) { video/mpeg; mpegversion=(int) 1; systemstream=(boolean) TRUE; parsed=(boolean) TRUE } /pipeline/demux.sink: caps = (GstCaps *) { video/mpeg; mpegversion=(int) 1; systemstream=(boolean) TRUE; parsed=(boolean) TRUE } /pipeline/src.src: active = FALSE /pipeline/demux.sink: active = FALSE /pipeline/demux.video_00: caps = (GstCaps *) { video/mpeg; mpegversion=(int) 1; systemstream=(boolean) FALSE } /pipeline/src.src: active = TRUE /pipeline/demux.sink: active = TRUE /pipeline/demux.audio_00: active = TRUE /pipeline/demux.video_00: active = TRUE /pipeline/demux.video_00: caps = (GstCaps *) { video/mpeg; mpegversion=(int) 1; systemstream=(boolean) FALSE } /pipeline/video_bin/video_decoder.sink: caps = (GstCaps *) { video/mpeg; mpegversion=(int) 1; systemstream=(boolean) FALSE } /pipeline/video_bin/video_decoder.sink: active = TRUE /pipeline/video_bin/video_decoder.src: active = TRUE /pipeline/video_bin/video_decoder.user_data: active = TRUE /pipeline/video_bin/video_decoder.src: caps = (GstCaps *) { video/raw; format=(fourcc) 'I420'; width=(int) 320; height=(int) 240; pixel_width=(int) 1; pixel_height=(int) 1 } /pipeline/video_bin/video_decoder: streaminfo = (GstCaps *) { application/x-gst-streaminfo; bitrate=(int) 480000; framerate=(float) 24.000000 } /pipeline/src.src: active = FALSE /pipeline/video_bin/video_decoder.sink: active = FALSE /pipeline/video_bin/video_decoder.src: active = FALSE /pipeline/video_bin/video_decoder.user_data: active = FALSE /pipeline/demux.sink: active = FALSE /pipeline/demux.audio_00: active = FALSE /pipeline/demux.video_00: active = FALSE /pipeline/demux.video_00: caps = (GstCaps *) { video/mpeg; mpegversion=(int) 1; systemstream=(boolean) FALSE } /pipeline/video_bin/video_decoder.sink: caps = (GstCaps *) { video/mpeg; mpegversion=(int) 1; systemstream=(boolean) FALSE } seeking /local/aleader/original/AlienSong.mpg... /pipeline/src.src: active = TRUE /pipeline/demux.sink: active = TRUE /pipeline/demux.audio_00: active = TRUE /pipeline/demux.video_00: active = TRUE /pipeline/video_bin/video_decoder.sink: active = TRUE /pipeline/video_bin/video_decoder.src: active = TRUE /pipeline/video_bin/video_decoder.user_data: active = TRUE /pipeline/sink.sink: active = TRUE /pipeline/demux: streaminfo = (GstCaps *) { application/x-gst-streaminfo; mpegversion=(int) 1; bitrate=(int) 600000 } /pipeline/src.src: caps = (GstCaps *) { video/mpeg; mpegversion=(int) 1; systemstream=(boolean) TRUE; parsed=(boolean) TRUE } /pipeline/demux.sink: caps = (GstCaps *) { video/mpeg; mpegversion=(int) 1; systemstream=(boolean) TRUE; parsed=(boolean) TRUE } /pipeline/sink.sink: caps = (GstCaps *) { video/raw; format=(fourcc) 'YV12'; width=(int) 320; height=(int) 240; pixel_width=(int) 1; pixel_height=(int) 1 } /pipeline/video_bin/video_decoder.src: caps = (GstCaps *) { video/raw; format=(fourcc) 'YV12'; width=(int) 320; height=(int) 240; pixel_width=(int) 1; pixel_height=(int) 1 } /pipeline/video_bin/video_decoder: streaminfo = (GstCaps *) { application/x-gst-streaminfo; bitrate=(int) 480000; framerate=(float) 24.000000 } (process:2830): GStreamer-CRITICAL **: file gstdata.c: line 239 (gst_data_unref): assertion `GST_DATA_REFCOUNT_VALUE (data) > 0' failed /pipeline/src.src: active = FALSE /pipeline/sink.sink: active = FALSE /pipeline/video_bin/video_decoder.sink: active = FALSE /pipeline/video_bin/video_decoder.src: active = FALSE /pipeline/video_bin/video_decoder.user_data: active = FALSE /pipeline/demux.sink: active = FALSE /pipeline/demux.audio_00: active = FALSE /pipeline/demux.video_00: active = FALSE i also did "b g_log" in gdb and got a stack trace: Breakpoint 1, 0x404fdd8b in g_log () from /usr/lib/libglib-2.0.so.0 (gdb) where
+ Trace 32310
606 else { 607 gst_pad_push (mpeg2dec->srcpad, outbuf); 608 } 609 } 610 if (info->discard_fbuf && info->discard_fbuf->id) { 611 gst_buffer_unref ((GstBuffer *)info->discard_fbuf->id); 612 } 613 break; 614 } 615 /* need more data */
just tried this myself, same options, same file, no problems. Is this still an issue ?
This is some problem in libmpeg2, it hands out the same buffer twice.
Mailed Walken about this bug.
This is a known issue on the libmpeg2 mailing list. Can everyone interested just send email again to the list, just to remind walken that people are interested and waiting on a fix?
Do you still have this? I.e., is libmpeg2 fixed now? And even if you do, can I please close this? It's not a GStreamer bug. ;).
libmpeg2 just released a new version. I think that means this one can be closed.