[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-bugs] #27272 [- Select a component]: ASan is incompatible with Rust's jemalloc on Travis



#27272: ASan is incompatible with Rust's jemalloc on Travis
--------------------------------------+--------------------
     Reporter:  alexcrichton          |      Owner:  (none)
         Type:  defect                |     Status:  new
     Priority:  Medium                |  Milestone:
    Component:  - Select a component  |    Version:
     Severity:  Normal                |   Keywords:
Actual Points:                        |  Parent ID:
       Points:                        |   Reviewer:
      Sponsor:                        |
--------------------------------------+--------------------
 In helping to debug https://trac.torproject.org/projects/tor/ticket/25386
 I've found that many of the segfaults at runtime are attributable to Rust
 pulling in jemalloc by default for tests, which apparently doesn't play
 well with ASan when linked in.

 I've found that using code like:

 {{{
 #[global_allocator]
 static ALLOCATOR: std::alloc::System = std::alloc::System;
 }}}

 is enough to solve the problem. This tells Rust that it should use the
 system allocator (e.g. the malloc/free symbols) instead of jemalloc. This
 was stabilized very recently in Rust, though, so using it may not be so
 trivial!

 In some local testing I was able to get away with adding the above
 declaration to the `tor_allocate` crate for the most part, but crates like
 `crypto`, `external`, and `smartlist` don't already link to `tor_allocate`
 and needed the above declaration with a `#[cfg(test)]` as well. Once this
 was all added though I mostly no longer saw segfaults related to jemalloc
 and ASan

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/27272>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
_______________________________________________
tor-bugs mailing list
tor-bugs@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs