Hi,


On Sun, 4 Jan 2015 14:54:56, Bernd Edlinger wrote:
>
> Hi Jakub,
>
>
> I think I have found a reasonable test case, see the attached patch file.
> The use case is: a class that destroys an owned thread in the destructor.
> The destructor sets the vptr again to thread::vptr but this should
> _not_ trigger a diagnostic message, when the vptr does not really change.
>
> Jakub, this is another test case where the TREE_READONLY prevents
> the tsan instrumentation.  So I had first to install your patch:
>
> https://gcc.gnu.org/ml/gcc-patches/2014-12/msg01432.html
>
> ... to see the test case fail without my patch.
>

that has been installed in the meantime.

> The patch installs cleanly on 4.9 and 4.8, however the 4.8 branch
> has no tsan tests, so I would leave the test case away for 4.8.
>

I found, 4.8 does not have BT_FN_VOID_PTR_PTR, and no tsan tests
at all, so it is probably not worth the effort.

> Boot-strapped and regression-tested on x86_64-linux-gnu
> OK for trunk and 4.9 + 4.8 branches?
>
>
> Thanks
> Bernd.
>
>

I found some test cases in the clang tree, about the __tsan_vptr_update.
So I thought I should use these instead of inventing new ones.

Attached you'll find an updated patch with one positive and one negative
test for vptr races.

Tested with x86_64-linux-gnu.
OK for trunk and 4.9 after a while?


Thanks
Bernd.
                                          
gcc/ChangeLog:
2015-01-11  Bernd Edlinger  <bernd.edlin...@hotmail.de>

        * sanititer.c (BUILT_IN_TSAN_VPTR_UPDATE): Fixed parameters.
        * tsan.c (instrument_expr): Fixed parameters of __tsan_vptr_update.

gcc/testsuite/ChangeLog
2015-01-11  Bernd Edlinger  <bernd.edlin...@hotmail.de>

        * g++.dg/tsan/vptr_benign_race.C: New testcase.
        * g++.dg/tsan/vptr_harmful_race.C: New testcase.

Attachment: patch-tsan-vptr.diff
Description: Binary data

Reply via email to