[Ffmpeg-devel] Random crashes when using libavcodec in different threads

Bernhard Prell bernhard.prell
Mon Jul 25 13:57:56 CEST 2005


Dear ffmpeg-Gurus,

I'm trying too integrate/use libavcodec in my own program and got it working 
as long it's running "alone". That means I'm using multiple threads to encode 
different movies (to *.vob) on a smp system. (I'm _not_ interested in 
accelerating the encoding of a _single_ movie by using the 
multi-thread-capabilities of ffmpeg!)

Problem: My program crashes randomly at the beginning when I'm for example 
using libav* in two threads. Then one of the threads dies in 
"ff_estimate_p_frame_motion" and the other was for example in 
"MPV_common_init_mmx" or "ff_dct_sse2" or "dsputil_init_pix_mmx".
Maybe it's somehow mmx, sse*- register-save/restore related?
The threads are of course completely independent of each other, everyone has 
it's own set of context-variables etc. It should be comparable to starting to 
processes of ffmpeg at nearly the same time. The crash seems to get  
extremely more unlikely if the threads don't start at the "same" time but for 
example 500 ms later. But I don't think that's a real solution, it just makes 
it less likely to crash. (Although I haven't seen a crash since this 
delay-workaround.)

My question: Is there anything that I can/should lock before calling a certain 
av_* function? Can somebody explain what might be a problem? Sorry, if I gave 
you too few info.

Thank you very much in advance,

Bernhard





More information about the ffmpeg-devel mailing list