[MPlayer-users] Segfault in init_video_codec with OpenDivX files

Matthew Stephenson matthew at mainmast.org.uk
Mon Jan 7 20:17:02 CET 2002

I am experiencing a segfault playing OpenDivX files (including those
encoded by mencoder) I enclose the information requested in appendix C of
the mplayer docs.

The bug is reproducible with -vo anything (xv, x11, null, etc), and I have
tried -vc divx4 and -vc odivx, neither of which make any difference.

Any other file format that I have tested plays OK. The bug occurs in v0.6,
and also occured in v0.5, and a CVS version that I compiled between these
two versions.

I have also tried disabling sse, as recommended in a similar bug-report on
the mplayer-users list (although this bug was not opendivx-specific). This
did not work either.

Linux Distribution: Linux from Scratch
Kernel Version: 2.4.16
libc Version: 2.2.1
X Version: 4.1.0
gcc Version:
ld Version: 2.11
binutils Version: 2.11

CPU Info: Pentium III 800MHz (Coppermine)
Video Card: 3dfx Voodoo III 2000
Video Driver: DRI from X 4.1.0
Sound Card: Creative SBLive! with emu10k1 driver from kernel

Output of gdb:

(gdb) run -v -vo x11 test.avi
Starting program: /usr/bin/mplayer -v -vo x11 test.avi
(no debugging symbols found)...(no debugging symbols found)...[New Thread
1024 (LWP 28080)]

MPlayer 0.60- (C) 2000-2002 Arpad Gereoffy (see DOCS!)

CPU vendor name: GenuineIntel  max cpuid level: 2
CPU: Intel Celeron 2/Pentium III Coppermine,Geyserville (Type: 6,
Stepping: 6)
Testing OS support for SSE... yes.
Testing OS support for SSE unmasked exceptions... yes.
Tests of OS support for SSE passed.
CPUflags: Type: 6 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 0
Compiled for x86 CPU with features: MMX MMX2
vo: X11 color mask:  FFFF  (R:F800 G:7E0 B:1F)
vo: X11 running at 1024x768 with depth 16 and 16 bits/pixel (":0.0" =>
local display)
Reading /home/matthew/.mplayer/codecs.conf: 18 audio & 40 video codecs
CommandLine: '-v' '-vo' 'x11' 'test.avi'
num_filenames: 1
get_path('font/font.desc') -> '/home/matthew/.mplayer/font/font.desc'
font: can't open file: /home/matthew/.mplayer/font/font.desc
Font /usr/share/mplayer/font/font.desc loaded successfully! (206 chars)
get_path('Skin') -> '/home/matthew/.mplayer/Skin'
SKIN dir 1: '/home/matthew/.mplayer/Skin'
SKIN dir 2: '/usr/share/mplayer/Skin'
[ws] Display name: :0.0 => local display.
[ws] Screen depth: 16
[ws]  size: 1024x768
[ws]  red mask: 0xf800
[ws]  green mask: 0x7e0
[ws]  blue mask: 0x1f
[ws] XShm version is 1.1
[ws] XShape version is 1.0
[ws] Initialized converter: rgb32 to rgb16
[ws] atomname: _VIDEO_REMOTE
[ws] window is created. ( ViDEO ).
[ws] atomname: _MPLAYER_REMOTE
[ws] window is created. ( MPlayer ).
[ws] atomname: _MPLAYER_MENU_REMOTE
[ws] window is created. ( MPlayer menu ).
[menu.h] menu: 0x1a00013
[main] Depth on screen: 16
[main] parent: 0x1a0000b
[main] sub: 0x1a00004
Setting up lirc support...
mplayer_lirc: could not connect to socket
mplayer_lirc: Connection refused
Failed opening lirc support!
You won't be able to use your remote control
Linux RTC init: ioctl (rtc_pie_on): Permission denied
Using usleep() timing
Playing test.avi
get_path('sub/') -> '/home/matthew/.mplayer/sub/'
Not an URL!
File size is 1230512 bytes
Detected AVI file format!
======= AVI Header =======
us/frame: 40000  (fps=25.000)
max bytes/sec: 0
padding: 0
frames  total: 517   initial: 0
streams: 2
Suggested BufferSize: 0
Size:  240 x 178
==> Found video stream: 0
======= STREAM Header =======
Type: vids   FCC:  (0)
Flags: 0
Priority: 0   Language: 0
InitialFrames: 0
Rate: 250000/10000 = 25.000
Start: 0   Len: 517
Suggested BufferSize: 9027
Quality 0
Sample size: 0
found 'bih', 40 bytes of 40
======= VIDEO Format ======
   biSize 40
   biWidth 240
   biHeight 178
   biPlanes 1
   biBitCount 24
   biCompression 2021026148='divx'
   biSizeImage 128160
Regenerating keyframe table for DIVX 4 video
==> Found audio stream: 1
======= STREAM Header =======
Type: auds   FCC:  (0)
Flags: 0
Priority: 0   Language: 0
InitialFrames: 0
Rate: 44100/1152 = 38.281
Start: 0   Len: 810
Suggested BufferSize: 626
Quality 0
Sample size: 0
found 'wf', 30 bytes of 20
======= WAVE Format =======
Format Tag: 85 (0x55)
Channels: 2
Samplerate: 44100
avg byte/sec: 13603
Block align: 1152
bits/sample: 0
cbSize: 12
Found movie at 0x80C - 0x1273B8
Reading INDEX block, 1327 chunks for 517 frames
AVI index offset: 2056
Auto-selected AVI audio ID = 1
Auto-selected AVI video ID = 0
AVI: Searching for audio stream (id:1)
AVI video length=1195786
VIDEO:  [divx]  240x178  24bpp  25.00 fps  462.6 kbps (56.5 kbyte/s)
[V] filefmt:3  fourcc:0x78766964  size:240x178  fps:25.00  ftime:=0.0400
Detected audio codec: [mp3] drv:1 (MPEG layer-2, layer-3)
Initializing audio codec...
dec_audio: Allocating 4608 + 65536 = 70144 bytes for output buffer
mp3lib: Processor ID: 686
mp3lib: Using Pentium-MMX optimized decore.
AUDIO: srate=44100  chans=2  bps=2  sfmt=0x10  ratio: 4000->176400
Detected video codec: [odivx] drv:3 prio:0 (OpenDivX (MPEG-4 v2))
OpenDivX video codec

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (LWP 28080)]
0x4025c731 in initbits () at getbits.c:106
106       ld->rdptr = ld->rdbfr + 2048;
(gdb) bt
#0  0x4025c731 in initbits () at getbits.c:106
#1  0x4025c6b5 in decore_frame (stream=0xb2 <Address 0xb2 out of bounds>,
     bmp=0xf0 <Address 0xf0 out of bounds>, render_flag=0) at decore.c:205
#2  0x4025c547 in decore (handle=291, dec_opt=1, param1=0xbfffe4bc,
param2=0x0) at decore.c:129
#3  0x0806986e in init_video ()
#4  0x0806420d in main ()
#5  0x404d70ea in __libc_start_main (main=0x806262c <main>, argc=5,
     init=0x8060040 <_init>, fini=0x8130140 <_fini>, rtld_fini=0x4000da44
     stack_end=0xbffffb9c) at ../sysdeps/generic/libc-start.c:129
(gdb) disass $eip-32 $eip+32
Dump of assembler code from 0x4025c711 to 0x4025c751:
0x4025c711 <Letext+12>: sbb    $0x24,%al
0x4025c713 <Letext+14>: ret
0x4025c714 <initbits>:  push   %ebp
0x4025c715 <initbits+1>:        mov    %esp,%ebp
0x4025c717 <initbits+3>:        push   %ebx
0x4025c718 <initbits+4>:        call   0x4025c710 <Letext+11>
0x4025c71d <initbits+9>:        add    $0xbd17,%ebx
0x4025c723 <initbits+15>:       mov    0x16c(%ebx),%eax
0x4025c729 <initbits+21>:       mov    (%eax),%eax
0x4025c72b <initbits+23>:       lea    0x804(%eax),%edx
0x4025c731 <initbits+29>:       mov    %edx,0x808(%eax)
0x4025c737 <initbits+35>:       mov    0x140(%ebx),%edx
0x4025c73d <initbits+41>:       movl   $0x0,0x81c(%eax)
0x4025c747 <initbits+51>:       movl   $0x0,0x820(%eax)
End of assembler dump.

More information about the MPlayer-users mailing list