I'm using fsnotify for a project where I set up recursive watches using the usual directory walking song and dance. I noticed that on Mac OS fsnotify would quickly get into a bad state where I'd stop receiving any events.
It turned out that fsnotify was deadlocking because mutexes weren't always properly released.
The removeWatch routine could return without releasing the lock on w.bufmut. This change unlocks the mutex before checking for errors.
I'm using fsnotify for a project where I set up recursive watches using the usual directory walking song and dance. I noticed that on Mac OS fsnotify would quickly get into a bad state where I'd stop receiving any events.
It turned out that fsnotify was deadlocking because mutexes weren't always properly released.
The
removeWatch
routine could return without releasing the lock onw.bufmut
. This change unlocks the mutex before checking for errors.