[libcxx-commits] [PATCH] D64299: Make ~mutex and ~condition_variable trivial with Bionic pthreads
Evgenii Stepanov via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Jul 17 12:17:14 PDT 2019
eugenis added a comment.
In D64299#1588931 <https://reviews.llvm.org/D64299#1588931>, @dvyukov wrote:
> In D64299#1588251 <https://reviews.llvm.org/D64299#1588251>, @eugenis wrote:
>
> > This feels like the right trade-off.
> >
> > TSan should be fine with a mutex that is never destroyed, but it will not be able to catch lock-after-destroy bugs on such mutex obviously.
> > @dvyukov
>
>
> Effectively pthread_mutex_destroy is not trivial under tsan so, yes, there will be a number of negative consequences:
>
> - no lock-after-destroy races
> - no races between lock/unlock and a subsequent destory
> - no racy use-after-free detection for destroy vs free
> - incorrect stack trace for a mutex that happened to reuse the address later
> - resource leaks for mutexes
> - no reporting of unlock of locked mutex
> - no auto-unlock for destroyed mutexes, which will look like the thread is taking infinite number of locks recursively, which will quickly check-fail in deadlock detector
Why is that not an issue for pthread mutexes with static initialization and no destruction?
Repository:
rCXX libc++
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D64299/new/
https://reviews.llvm.org/D64299
More information about the libcxx-commits
mailing list