|
ASAN can now integrate better with application defined signal handlers. It's no longer necessary to disable our SIG_ABRT handler when sanitizers are active. It appears that allowing sanitizers to use default handlers for everything but SIG_ABRT allows all failures to produce reasonable looking coredumps and logs. The SIG_ABRT handler is necessary for catching the abort signals raised by LSAN on error.
I propose removing our weird logic to disable SIG_ABRT when running sanitizers, and making the following modification to our sanitizer options in etc/evergreen.yml:
- san_options: UBSAN_OPTIONS="print_stacktrace=1:handle_abort=0:handle_segv=0:handle_sigbus=0:handle_sigill=0:handle_sigfpe=0" LSAN_OPTIONS="suppressions=etc/lsan.suppressions:report_objects=1" ASAN_OPTIONS=detect_leaks=1:check_initialization_order=true:strict_init_order=true:abort_on_error=1:disable_coredump=0:handle_abort=0:handle_segv=0:handle_sigbus=0:handle_sigill=0:handle_sigfpe=0
|
+ san_options: UBSAN_OPTIONS="print_stacktrace=1" LSAN_OPTIONS="suppressions=etc/lsan.suppressions:report_objects=1" ASAN_OPTIONS=detect_leaks=1:check_initialization_order=true:strict_init_order=true:abort_on_error=1:disable_coredump=0:handle_abort=1
|
I've attached a file containing examples of the resulting output.
|