When suppressing errors from uninstrumented MPI libraries, sanitizer runtime calls Die(), because some of the suppressed libraries are unloaded during execution.
This patch is to remove the hard failure and change the message to a verbose message.
Differential D44881
[sanitizer_common] Ignore unloading of suppressed library protze.joachim on Mar 25 2018, 2:15 PM. Authored by
Details
When suppressing errors from uninstrumented MPI libraries, sanitizer runtime calls Die(), because some of the suppressed libraries are unloaded during execution. This patch is to remove the hard failure and change the message to a verbose message.
Diff Detail Event TimelineComment Actions I added a testcase. I added it just for Linux, because I have no machine ready to test dl-loading on other OS. The test succeeds with the patch, but "Die"s when replacing the clang calls with release clang. Comment Actions LGTM Comment Actions There are several reasons:
Nobody runs tsan with verbosity flag, so that message won't be helpful. We either need to resolve the problems, or at the very least do what we do with multithreaded fork -- fail loudly unless an explicit flag a-la enable_ignored_library_unloading_yes_I_know_what_I_am_doing_and_taking_full_responsibility is given. Comment Actions @dvyukov thanks for the detailed reasoning. I found the newly documented flag ignore_noninstrumented_module and guess that this would be the better option than listing all the MPI libraries in the suppression file. |