[Ffmpeg-devel] random crashes decoding MP3s

Jacob Meuser jakemsr
Mon Apr 3 14:20:27 CEST 2006


On Mon, Apr 03, 2006 at 08:50:03AM +0100, M?ns Rullg?rd wrote:
> Jacob Meuser <jakemsr at jakemsr.com> writes:
> 
> > On Sun, Apr 02, 2006 at 03:09:07AM -0400, Rich Felker wrote:
> >> On Sat, Apr 01, 2006 at 08:31:43PM -0800, Jacob Meuser wrote:
> >> > > > I tried to build ffmpeg on OpenBSD myself, and it turns out it's not
> >> > > > as easy as it should be.  What exactly have you done to your source to
> >> > > > make it build?
> >> > > 
> >> > > OK, now it builds, but only with --enable-memalign-hack.  Did you use
> >> > > this option or disable mmx/sse?  OpenBSD appears to be missing
> >> > > memalign() so one or the other is required.  Forcing mmx/sse without a
> >> > > proper memalign() can very well result in random crashes.
> >> > 
> >> > yes, there is no memlign() on OpenBSD.
> >> > 
> >> > quoting malloc(3)
> >> > 
> >> >     The allocated space is suitably aligned (after possible
> >> >     pointer coercion) for storage of any type of object.  If the
> >> >     space is of pagesize or larger, the memory returned will be
> >> >     page-aligned.
> >> 
> >> This text is not meaningful to what we're talking about. ISO C
> >> requires that the return value of malloc be "suitably aligned for
> >> storage of any type of object", but "object" is defined as in ISO C,
> >> and this has nothing to do with the alignment requirements of various
> >> asm constructs. A true memalign is needed..
> >
> > I have always disabled MEMALIGN_HACK and never had any problems.
> 
> Maybe OpenBSD malloc() aligns more than is required.

not sure what you mean here.

but anyway, that wouldn't explain why FFmpeg sources from a year ago
work consistently, but current ones don't.

it looks like the only change in huffman_decode() that could matter
was the get_vlc -> get_vlc2 change.  this is consistent with gdb
giving line 1656 as the crash point, no?

hmmm, that seems to be the problem.  putting the old get_vlc() back
into bitstream.h and changing the get_vlc2() to get_vlc() on line
1653 of mpegaudiodec.c make the crashes stop.

-- 
<jakemsr at jakemsr.com>





More information about the ffmpeg-devel mailing list