https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109882
Bug ID: 109882 Summary: -fsanitize=thread #include <memory> transitively includes sanitizer/common_interface_defs.h Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: ed at catmur dot uk Target Milestone: --- Since 12.3.0, when compiled under tsan (-fsanitize=thread), #include <memory> transitively includes sanitizer/common_interface_defs.h: #include <memory> #if defined SANITIZER_COMMON_INTERFACE_DEFS_H #error :( #endif This is problematic for us because sanitizer/common_interface_defs.h has #define __has_feature(x) 0 https://github.com/gcc-mirror/gcc/blame/5d85b5d649fff675ff00adcc99371bccf4ef5944/libsanitizer/include/sanitizer/common_interface_defs.h#L20 which makes our sanitizer detector incorrectly believe that __has_feature is available and that tsan is not in fact present since __has_feature(thread_sanitizer) evaluates to 0. We will fix the order of checks to put `#ifdef __SANITIZE_THREAD__` first but thought we should probably report this to help other users.