[gst-devel] crashing on some mp3s

Ronald Bultje rbultje at ronald.bitfreak.net
Thu Apr 11 09:35:56 CEST 2002


Hi Jorn,

On Thu, 2002-04-11 at 17:51, Jorn Baayen wrote:
> gst-launch filesrc location="broken.mp3" ! mad ! osssink
> 
> #0  0x80499d7 in __udivdi3 (n=0, d=0)

sounds like a division through zero. Shouldn't that give an arithmetic
exception instead of a segfault?

> #1  0x404652e2 in gst_mad_chain ()
>    from /stuff/gnome/head/INSTALL/lib/gst/libgstmad.so

gst-plugins/ext/mad/gstmad.c, line 464:
[..]
      if (mad->frame.header.layer == MAD_LAYER_I)
        N = ((12 * mad->frame.header.bitrate /
mad->frame.header.samplerate) + pad_slot) * 4;
      else {
        unsigned int slots_per_frame;

        slots_per_frame = (mad->frame.header.layer == MAD_LAYER_III &&
                           (mad->frame.header.flags & MAD_FLAG_LSF_EXT))
? 72 : 144;

        N = (slots_per_frame * mad->frame.header.bitrate /
mad->frame.header.samplerate) + pad_slot;
      }
[..]
gst-plugins/ext/mad/gstmad.c, line 492:
[..]
      GST_BUFFER_TIMESTAMP (outbuffer) = mad->sync_point + 
	      				 mad->total_samples * 1000000LL /
mad->frame.header.samplerate;
[..]

this is suspicious, it's the only divisions in this function ;-). The
former one didn't use to be there, amd it's outcome (N) isn't used
anywhere, it seems. Try commenting this out and try again.

Ronald

-- 
-   .-.
-   /V\    | Ronald Bultje <rbultje at ronald.bitfreak.net>
-  // \\   | Running: Linux 2.4.18-XFS and OpenBSD 3.0
- /(   )\  | http://ronald.bitfreak.net/
-  ^^-^^





More information about the gstreamer-devel mailing list