<p dir="ltr"><br>
On Feb 1, 2013 7:55 AM, "Dmitry Vyukov" <<a href="mailto:dvyukov@google.com">dvyukov@google.com</a>> wrote:<br>
><br>
> Author: dvyukov<br>
> Date: Fri Feb  1 09:52:35 2013<br>
> New Revision: 174184<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=174184&view=rev">http://llvm.org/viewvc/llvm-project?rev=174184&view=rev</a><br>
> Log:<br>
> tsan: catch races on fd in more cases</p>
<p dir="ltr">I haven't actually been looking at the *San changes in detail, but is this sort of thing testable?</p>
<p dir="ltr">> Modified:<br>
>     compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc<br>
><br>
> Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc?rev=174184&r1=174183&r2=174184&view=diff">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc?rev=174184&r1=174183&r2=174184&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc (original)<br>
> +++ compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc Fri Feb  1 09:52:35 2013<br>
> @@ -595,6 +595,8 @@ TSAN_INTERCEPTOR(void*, mmap, void *addr<br>
>      return MAP_FAILED;<br>
>    void *res = REAL(mmap)(addr, sz, prot, flags, fd, off);<br>
>    if (res != MAP_FAILED) {<br>
> +    if (fd > 0)<br>
> +      FdAccess(thr, pc, fd);<br>
>      MemoryResetRange(thr, pc, (uptr)res, sz);<br>
>    }<br>
>    return res;<br>
> @@ -607,6 +609,8 @@ TSAN_INTERCEPTOR(void*, mmap64, void *ad<br>
>      return MAP_FAILED;<br>
>    void *res = REAL(mmap64)(addr, sz, prot, flags, fd, off);<br>
>    if (res != MAP_FAILED) {<br>
> +    if (fd > 0)<br>
> +      FdAccess(thr, pc, fd);<br>
>      MemoryResetRange(thr, pc, (uptr)res, sz);<br>
>    }<br>
>    return res;<br>
> @@ -1150,21 +1154,29 @@ TSAN_INTERCEPTOR(int, lstat64, const cha<br>
><br>
>  TSAN_INTERCEPTOR(int, __fxstat, int version, int fd, void *buf) {<br>
>    SCOPED_TSAN_INTERCEPTOR(__fxstat, version, fd, buf);<br>
> +  if (fd > 0)<br>
> +    FdAccess(thr, pc, fd);<br>
>    return REAL(__fxstat)(version, fd, buf);<br>
>  }<br>
><br>
>  TSAN_INTERCEPTOR(int, fstat, int fd, void *buf) {<br>
>    SCOPED_TSAN_INTERCEPTOR(__fxstat, 0, fd, buf);<br>
> +  if (fd > 0)<br>
> +    FdAccess(thr, pc, fd);<br>
>    return REAL(__fxstat)(0, fd, buf);<br>
>  }<br>
><br>
>  TSAN_INTERCEPTOR(int, __fxstat64, int version, int fd, void *buf) {<br>
>    SCOPED_TSAN_INTERCEPTOR(__fxstat64, version, fd, buf);<br>
> +  if (fd > 0)<br>
> +    FdAccess(thr, pc, fd);<br>
>    return REAL(__fxstat64)(version, fd, buf);<br>
>  }<br>
><br>
>  TSAN_INTERCEPTOR(int, fstat64, int fd, void *buf) {<br>
>    SCOPED_TSAN_INTERCEPTOR(__fxstat64, 0, fd, buf);<br>
> +  if (fd > 0)<br>
> +    FdAccess(thr, pc, fd);<br>
>    return REAL(__fxstat64)(0, fd, buf);<br>
>  }<br>
><br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</p>