You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When we run our build2 program built on Linux with GCC 9.1.0 with UndefinedBehaviorSanitizer and ThreadSanitizer enabled (both -fsanitize=thread -fsanitize=undefined options are passed to the compile/link commands), then the following diagnostics is produced, that suggests that ThreadSanitizer complains on itself:
Note that if we build our program with only one sanitizer enabled (either -fsanitize=thread or -fsanitize=undefined option is used), then no diagnostics is issued.
The text was updated successfully, but these errors were encountered:
Thanks for the report.
It seems that the problem is in ubsan, or more precisely in IsAccessibleMemoryRange. It should not use pipe call as is, but instead use internal_pipe just like it uses internal_write/internal_close/etc. Pipe is getting intercepted by tsan can causes false positives because the rest of ubsan is not instrumented.
internal_pipe does not exist yet, so one would need to add it first to fix this.
dvyukov
changed the title
ThreadSanitizer complains on itself
ubsan IsAccessibleMemoryRange use of pipe causes tsan false positives
Jun 7, 2019
When we run our build2 program built on Linux with GCC 9.1.0 with UndefinedBehaviorSanitizer and ThreadSanitizer enabled (both -fsanitize=thread -fsanitize=undefined options are passed to the compile/link commands), then the following diagnostics is produced, that suggests that ThreadSanitizer complains on itself:
Note that if we build our program with only one sanitizer enabled (either -fsanitize=thread or -fsanitize=undefined option is used), then no diagnostics is issued.
The text was updated successfully, but these errors were encountered: