mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-24 08:12:44 +00:00
ffmpeg: fix deadlock regression in threading error handing
Commit fc9c857c
introduced deadlock regression when processing too many inputs:
ffmpeg $(seq -f " -f lavfi -i aevalsrc=0:d=%.0f" 70) -vf concat=n=70:v=0:a=1 -f null -
Happens for different number of inputs, depending on available memory size,
overcommit settings, ulimits, etc. Easily noticeable for 32-bit builds,
that exhaust address space allocating 8-10 MB stack for each thread.
Earlier ffmpeg versions exited with unhelpful "Conversion failed!" message.
This patch fixes both problems: it frees the queue to prevent deadlock
and adds a meaningful error message if pthread_create() fails.
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
263932c084
commit
6d2df3c00a
5
ffmpeg.c
5
ffmpeg.c
@ -3237,8 +3237,11 @@ static int init_input_threads(void)
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if ((ret = pthread_create(&f->thread, NULL, input_thread, f)))
|
||||
if ((ret = pthread_create(&f->thread, NULL, input_thread, f))) {
|
||||
av_log(NULL, AV_LOG_ERROR, "pthread_create failed: %s. Try to increase `ulimit -v` or decrease `ulimit -s`.\n", strerror(ret));
|
||||
av_thread_message_queue_free(&f->in_thread_queue);
|
||||
return AVERROR(ret);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user