Displaying 2 results from an estimated 2 matches for "call_once_callback_wrapp".
Did you mean:
  call_once_callback_wrapper
  
2016 Sep 02
2
call_once and TSan
...acquire in thread B will have no effect, and the stores from the callback to func(arg) will not be synchronized to thread B.
Anyway, I just realized that we can wrap "func" into our own callback, which will perform the (extra) __tsan_release...  Do you think that would work?  E.g.:
void call_once_callback_wrapper(...) {
  orig_func(orig_arg);
  __tsan_release(flag);
}
INTERCEPTOR(call_once, o, func, arg) {
  REAL(call_once)(flag, ..., call_once_callback_wrapper);
}
Kuba
> On 2 Sep 2016, at 13:42, Dmitry Vyukov <dvyukov at google.com> wrote:
> 
> INTERCEPTOR(call_once, o) {
>    __tsan...
2016 Sep 02
2
call_once and TSan
> On 2 Sep 2016, at 12:11, Dmitry Vyukov <dvyukov at google.com> wrote:
> 
> On Fri, Sep 2, 2016 at 12:09 PM, Kuba Brecka <kuba.brecka at gmail.com> wrote:
>> 
>>> On 2 Sep 2016, at 11:18, Dmitry Vyukov via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>>> 
>>> On Thu, Sep 1, 2016 at 2:30 PM, Kuba Brecka <kuba.brecka at gmail.com>