File tree Expand file tree Collapse file tree 1 file changed +14
-3
lines changed
source/loader/layers/sanitizer/linux Expand file tree Collapse file tree 1 file changed +14
-3
lines changed Original file line number Diff line number Diff line change 1212
1313namespace ur_sanitizer_layer {
1414
15- llvm::symbolize::LLVMSymbolizer *GetSymbolizer () {
16- static llvm::symbolize::LLVMSymbolizer Symbolizer;
17- return &Symbolizer;
15+ llvm::symbolize::LLVMSymbolizer *GetSymbolizer (bool destruct = false ) {
16+ static auto *Instance = new llvm::symbolize::LLVMSymbolizer{};
17+ if (destruct) {
18+ Instance = nullptr ;
19+ delete Instance;
20+ }
21+ return Instance;
22+ }
23+
24+ // Let's destruct the symbolizer at the very end of exit process, at least
25+ // should be after the destructors of the SanitizerLayer since we may print
26+ // some symbolized information in the SanitizerLayer destructor.
27+ __attribute__ ((destructor(101 ))) void DestructSymbolizer () {
28+ GetSymbolizer (true );
1829}
1930
2031llvm::symbolize::PrinterConfig GetPrinterConfig () {
You can’t perform that action at this time.
0 commit comments