about summary refs log tree commit diff
path: root/src/liballoc/lib.rs
diff options
context:
space:
mode:
authorTomasz Miąsko <tomasz.miasko@gmail.com>2020-03-20 00:00:00 +0000
committerTomasz Miąsko <tomasz.miasko@gmail.com>2020-03-20 00:18:44 +0100
commitfd0e15bbcda4b1674f22e8db5fd81a63d671c996 (patch)
treecfa5e209839d407fefde566dc52da3889dba5e21 /src/liballoc/lib.rs
parentf4c675c476c18b1a11041193f2f59d695b126bc8 (diff)
downloadrust-fd0e15bbcda4b1674f22e8db5fd81a63d671c996.tar.gz
rust-fd0e15bbcda4b1674f22e8db5fd81a63d671c996.zip
Make std::sync::Arc compatible with ThreadSanitizer
The memory fences used previously in Arc implementation are not properly
understood by ThreadSanitizer as synchronization primitives. This had
unfortunate effect where running any non-trivial program compiled with
`-Z sanitizer=thread` would result in numerous false positives.

Replace acquire fences with acquire loads when using ThreadSanitizer to
address the issue.
Diffstat (limited to 'src/liballoc/lib.rs')
-rw-r--r--src/liballoc/lib.rs1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/liballoc/lib.rs b/src/liballoc/lib.rs
index ffa4176cc79..d877ac6ac5c 100644
--- a/src/liballoc/lib.rs
+++ b/src/liballoc/lib.rs
@@ -80,6 +80,7 @@
 #![feature(box_into_raw_non_null)]
 #![feature(box_patterns)]
 #![feature(box_syntax)]
+#![feature(cfg_sanitize)]
 #![feature(cfg_target_has_atomic)]
 #![feature(coerce_unsized)]
 #![feature(const_generic_impls_guard)]