[SERVER-25689] Add Memory Sanitizer builds to Evergreen Created: 18/Aug/16 Updated: 02/Feb/24 |
|
| Status: | Backlog |
| Project: | Core Server |
| Component/s: | Build |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Task | Priority: | Major - P3 |
| Reporter: | Mark Benvenuto | Assignee: | Unassigned |
| Resolution: | Unresolved | Votes: | 1 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
||||||||||||
| Issue Links: |
|
||||||||||||
| Assigned Teams: |
Build
|
||||||||||||
| Participants: | |||||||||||||
| Description |
|
Memory Sanitizer sort of works on Ubuntu 16.04. At this point, we have three options for how we want to use it: While #3 gives us the most coverage, it requires us to recompile all the third-party libraries we use (SSL, Cyrus SASL, Kerberos, Ldap, Curl, etc), and I do not think OpenSSL will work. At the minimum, we need to build our own version of libc++, and install it on the builders we use for compiling and testing. Background Do you really need to recompile all the libraries? Yes, if you do not recompile the libraries for an enterprise build, you get a lot of false positives. Some of these show up in our code:
Now if you do recompile say openssl with memory sanitizer, you hit this instead,
Chromium and LLVM are big users of Memory Sanitizer. Chromium uses NSS for SSL support, not OpenSSL. |
| Comments |
| Comment by Eric Milkie [ 18/Aug/16 ] |
|
OpenSSL used to have a build flag to make it work without false positives when used with Valgrind Memcheck. Perhaps that could work for Memory Sanitizer as well? |
| Comment by Mark Benvenuto [ 18/Aug/16 ] |
|
Here are some sample files to to build MSAN enabled libc++, and openssl enabled msan. |