[PATCH] [libcxx] Fix bug in shared_timed_mutex that could cause a program to hang.

Jonathan Roelofs jonathan at codesourcery.com
Thu Apr 2 11:20:30 PDT 2015



On 4/1/15 10:09 PM, Eric Fiselier wrote:
> Hi mclow.lists,
>
> The summary of the bug, provided by STL:
>
> In shared_timed_mutex::try_lock_until() (line 195 in 3.6.0), you need to deliver a notification.  The scenario is:
>
> * There are N threads holding the shared lock.
> * One thread calls try_lock_until() to attempt to acquire the exclusive lock.  It sets the "I want to write" bool/bit, then waits for the N readers to drain away.
> * K more threads attempt to acquire the shared lock, but they notice that someone said "I want to write", so they block on a condition_variable.
> * At least one of the N readers is stubborn and doesn't release the shared lock.
> * The wannabe-writer times out, gives up, and unsets the "I want to write" bool/bit.
>
> At this point, a notification (it needs to be notify_all) must be delivered to the condition_variable that the K wannabe-readers are waiting on.  Otherwise, they can block forever without waking up.
>
> http://reviews.llvm.org/D8796
>
> Files:
>    include/shared_mutex
>    test/std/thread/thread.mutex/thread.mutex.requirements/thread.sharedtimedmutex.requirements/thread.sharedtimedmutex.class/stl_bug.pass.cpp
Because the initialism for Stefan's name and that of the Standard 
Template Library are the same, I'd rather see this named something 
reflecting what the bug was, instead of the initials of the guy who 
reported it. This avoids the confused question of "isn't every libc++ 
bug an STL bug?", despite him having made a big name for himself in the 
community.

In either case, putting a reference to his name in the comments would 
probably be useful. Also, did he file a PR for this?


Cheers,

Jon
>
> EMAIL PREFERENCES
>    http://reviews.llvm.org/settings/panel/emailpreferences/
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>

-- 
Jon Roelofs
jonathan at codesourcery.com
CodeSourcery / Mentor Embedded



More information about the cfe-commits mailing list