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 12
12
13
13
namespace ur_sanitizer_layer {
14
14
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 );
18
29
}
19
30
20
31
llvm::symbolize::PrinterConfig GetPrinterConfig () {
You can’t perform that action at this time.
0 commit comments