[vlc-devel] [PATCH] darwin/thread: Ignore vlc_mutex_unlock failures

Rémi Denis-Courmont remi at remlab.net
Mon Oct 28 18:46:40 CET 2019

Le maanantaina 28. lokakuuta 2019, 19.24.44 EET Marvin Scholz a écrit :
> macOS pthread implementation for pthread_cond_wait is buggy, causing
> sometimes the mutex to not be locked when running thread cancellation
> cleanup handlers.
> This causes random failures of vlc_mutex_unlock, as the cancellation
> cleanup handler does not hold a lock on the mutex in rare cases.

This won't work:

1) Darwin does not define unlocking a mutex by a thread that did not lock it:
"Calling pthread_mutex_unlock with a mutex that the calling thread does not 
hold will result in undefined behavior." So you cannot simply assume that it 
will return an error and have no side effects; it probably only works that way 
on sunny day cases.

2) Even if Darwin did provide that guarantee, this would cause data races if 
the calling thread actually relied on the mutex being locked to access lock-
protected data.

Rémi Denis-Courmont

More information about the vlc-devel mailing list