Hi,

On Thu, Feb 25, 2016 at 9:18 PM, Wan-Teh Chang <wtc-at-google....@ffmpeg.org
> wrote:

> Although not documented, |state| is guarded by either |mutex| or
> |progress_mutex|. In several places |state| is read without mutex
> protection, often as a double-checked locking style performance
> optimization. Fix the data races by reading |state| under mutex
> protection.
>
[..]

> -        if (p->state != STATE_INPUT_READY) {
> -            pthread_mutex_lock(&p->progress_mutex);
> -            while (p->state != STATE_INPUT_READY)
> -                pthread_cond_wait(&p->output_cond, &p->progress_mutex);
> -            pthread_mutex_unlock(&p->progress_mutex);
> -        }
> +        pthread_mutex_lock(&p->progress_mutex);
> +        while (p->state != STATE_INPUT_READY)
> +            pthread_cond_wait(&p->output_cond, &p->progress_mutex);
> +        pthread_mutex_unlock(&p->progress_mutex);


This will be slower, right? Is this an actual issue? Like, can you point to
cases like [1] (i.e. a real-world race condition with real-world
consequences) that were fixed with your patch?

Ronald

https://blogs.gnome.org/rbultje/2014/01/12/brute-force-thread-debugging/
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to