1
Fork 0

Disable stack probe when thread sanitizer is enabled

When thread sanitizer instrumentation is enabled during compilation of
stack probe function, the function will be miscompiled and trigger
segmentation fault at runtime. Disable stack probes when tsan is
enabled.
This commit is contained in:
Tomasz Miąsko 2019-10-04 00:00:00 +00:00
parent 9e35a2811d
commit 6c9f218f3e

View file

@ -96,10 +96,12 @@ pub fn set_probestack(cx: &CodegenCx<'ll, '_>, llfn: &'ll Value) {
} }
// Currently stack probes seem somewhat incompatible with the address // Currently stack probes seem somewhat incompatible with the address
// sanitizer. With asan we're already protected from stack overflow anyway // sanitizer and thread sanitizer. With asan we're already protected from
// so we don't really need stack probes regardless. // stack overflow anyway so we don't really need stack probes regardless.
if let Some(Sanitizer::Address) = cx.sess().opts.debugging_opts.sanitizer { match cx.sess().opts.debugging_opts.sanitizer {
return Some(Sanitizer::Address) |
Some(Sanitizer::Thread) => return,
_ => {},
} }
// probestack doesn't play nice either with `-C profile-generate`. // probestack doesn't play nice either with `-C profile-generate`.