[FFmpeg-devel] Multithreaded svq3 decoding gives segfault

Thorsten Jordan tjordan
Wed Apr 23 15:06:02 CEST 2008


when using 2 or more threads with avcodec_thread_init() and SVQ3 video
it gives a segfault, may be a known problem, but here is a stack trace:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xa3f4eb90 (LWP 5482)]
0xa7c8238a in frame_start (h=0x817f790) at libavcodec/h264.c:2252
2252            if(!h->thread_context[i]->s.obmc_scratchpad)
Current language:  auto; currently c
(gdb) bt
#0  0xa7c8238a in frame_start (h=0x817f790) at libavcodec/h264.c:2252
#1  0xa7ca63a8 in svq3_decode_frame (avctx=0x8054e80, data=0x8061820,
    buf=0xa3fe1008 "<REMOVEDTEXT>"..., buf_size=5162) at
#2  0xa7ac679f in avcodec_decode_video (avctx=0x8054e80,
picture=0xa3fe1008, got_picture_ptr=0xa3f4e254, buf=0x5 <Address 0x5 out
of bounds>,
    buf_size=5162) at libavcodec/utils.c:945

(application related from here on)

#3  0xa782bb69 in mpeg_decoder_avcodec::stream_in (this=0x8061618,
    data=0xa3fe1008 "<REMOVEDTEXT>"..., length=5162, pts=0) at
#4  0xa797bc7b in DEC_MPGV::stream_data_to_decoder (this=0x80aded8) at
#5  0xa797c8b0 in DEC_MPGV::loop (this=0x80aded8) at src/decmpgv.cc:593
#6  0xa7568d69 in os_thread::run (this=0x80aded8) at src/os_thread.cpp:338
#7  0xa756e48d in os_thread::thread_entry (arg=0x80aded8) at
#8  0xa71244fb in start_thread () from /lib/i686/cmov/libpthread.so.0
#9  0xa765bd7e in clone () from /lib/i686/cmov/libc.so.6

(some infos)

(gdb) print h
$1 = (H264Context *) 0x817f790
(gdb) print h->thread_context[i]
$2 = (struct H264Context *) 0x0
(gdb) print i
$3 = 1

It is obviously that H264Context.thread_context[1] is unexpectedly NULL
here. It seems that the multithreaded h264 decoding just ignored the
fact that svq3 decoding is done with the same code.

Regards, Thorsten

More information about the ffmpeg-devel mailing list