Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/videolan/dav1d.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJanne Grunau <janne-vlc@jannau.net>2018-11-20 00:52:13 +0300
committerJanne Grunau <janne-vlc@jannau.net>2018-11-20 00:52:13 +0300
commitacee43456b37211e78dc98f59a17995614e64f74 (patch)
treef4bdbad116962ed80c4cc84e44d8f42e60d43400
parentb3c522d5c060b98bdd6a164df95c891cd7f6b985 (diff)
frame mt: mark frame as failed in dav1d_close()
Fixes a deadlock on teardown with clusterfuzz-testcase-minimized-dav1d_fuzzer_mt-5636065151418368. Credits to oss-fuzz.
-rw-r--r--src/lib.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/lib.c b/src/lib.c
index d1ae730..4a52aef 100644
--- a/src/lib.c
+++ b/src/lib.c
@@ -286,6 +286,10 @@ void dav1d_close(Dav1dContext **const c_out) {
// clean-up threading stuff
if (c->n_fc > 1) {
+ if (f->frame_hdr.refresh_context)
+ dav1d_cdf_thread_signal(&f->out_cdf);
+ dav1d_thread_picture_signal(&f->sr_cur, FRAME_ERROR,
+ PLANE_TYPE_ALL);
pthread_mutex_lock(&f->frame_thread.td.lock);
f->frame_thread.die = 1;
pthread_cond_signal(&f->frame_thread.td.cond);