[Gstreamer-bugs] [Bug 137448] New - mpegaudioparse: crash (bus error)
bugzilla-daemon at widget.gnome.org
bugzilla-daemon at widget.gnome.org
Tue Mar 16 18:09:07 PST 2004
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
http://bugzilla.gnome.org/show_bug.cgi?id=137448
Changed by t.i.m at zen.co.uk.
--- shadow/137448 Tue Mar 16 21:09:06 2004
+++ shadow/137448.tmp.5554 Tue Mar 16 21:09:07 2004
@@ -0,0 +1,98 @@
+Bug#: 137448
+Product: GStreamer
+Version: HEAD CVS
+OS: Linux
+OS Details:
+Status: NEW
+Resolution:
+Severity: normal
+Priority: Normal
+Component: gst-plugins
+AssignedTo: gstreamer-maint at bugzilla.gnome.org
+ReportedBy: t.i.m at zen.co.uk
+QAContact: gstreamer-maint at bugzilla.gnome.org
+TargetMilestone: HEAD
+URL:
+Summary: mpegaudioparse: crash (bus error)
+
+This is with gstreamer/gst-plugins 0.8.0.1:
+
+
+sceptic [tim] - ~ ---> gst-launch-0.8 filesrc location="foo.mp3" !
+mp3parse ! fakesink
+RUNNING pipeline ...
+Bus error
+
+
+
+sceptic [tim] - ~ ---> valgrind --num-callers=10 gst-launch-0.8 filesrc
+location="foo.mp3" ! mp3parse ! fakesink
+==23066== Using valgrind-2.1.1, a program supervision framework for
+x86-linux. (snip)
+==23066== warning: Valgrind's pthread_getschedparam is incomplete
+==23066== your program may misbehave as a result
+RUNNING pipeline ...
+==23066==
+==23066== Process terminating with default action of signal 7 (SIGBUS):
+dumping core
+==23066== Non-existent physical address at address 0x3CE54000
+==23066== at 0x3C8D4685: gst_mp3parse_chain (gstmpegaudioparse.c:333)
+==23066== by 0x3C8DD3DF: gst_opt_scheduler_chain_wrapper
+(gstoptimalscheduler.c:1325)
+==23066== by 0x3C0728A7: gst_pad_push (gstpad.c:3034)
+==23066== by 0x3C8DC9FA: get_group_schedule_function
+(gstoptimalscheduler.c:1138)
+==23066== by 0x3C8DC4A1: schedule_group (gstoptimalscheduler.c:1007)
+==23066== by 0x3C8DC565: gst_opt_scheduler_schedule_run_queue
+(gstoptimalscheduler.c:1050)
+==23066== by 0x3C8DC7A9: schedule_chain (gstoptimalscheduler.c:1092)
+==23066== by 0x3C8DFAB4: gst_opt_scheduler_iterate
+(gstoptimalscheduler.c:2279)
+==23066== by 0x3C07D8E8: gst_scheduler_iterate (gstscheduler.c:712)
+==23066== by 0x3C052C43: gst_bin_iterate_func (gstbin.c:1109)
+==23066==
+==23066== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 49 from 2)
+==23066== malloc/free: in use at exit: 401744 bytes in 6566 blocks.
+==23066== malloc/free: 108386 allocs, 101820 frees, 8176280 bytes
+allocated.
+==23066== For a detailed leak analysis, rerun with: --leak-check=yes
+==23066== For counts of detected errors, rerun with: -v
+Bus error
+
+
+
+Given the (re-)indenting going on currently, I'll paste the relevant
+lines from gst-plugins/gst/mpegaudioparse/gstmpegaudioparse.c as well
+(sorry for the flood):
+
+ 326 /* while we still have bytes left -4 for the header */
+ 327 while (offset < size - 4) {
+ 328 int skipped = 0;
+ 329
+ 330 GST_DEBUG ("mp3parse: offset %ld, size %ld ", offset, size);
+ 331
+ 332 /* search for a possible start byte */
+ 333 for (; ((data[offset] != 0xff) && (offset < size)); offset++)
+ 334 skipped++;
+ 335 if (skipped && !mp3parse->in_flush) {
+ 336 GST_DEBUG ("mp3parse: **** now at %ld skipped %d bytes",
+offset, skipped);
+ 337 }
+ 338 /* construct the header word */
+ 339 header = GUINT32_FROM_BE (*((guint32 *) (data + offset)));
+ 340 /* if it's a valid header, go ahead and send off the frame */
+ 341 if (head_check (header)) {
+ 342 /* calculate the bpf of the frame */
+ 343 bpf = bpf_from_header (mp3parse, header);
+
+
+
+
+The offending mp3 file can be found here:
+
+ http://www.zen18864.zen.co.uk/tmp/gst-mp3parse-bug-foo.bz2
+
+I'll attach the gstreamer debug output.
+
+Cheers
+-Tim
More information about the Gstreamer-bugs
mailing list