Skip to content

Commit 5a78565

Browse files
committed
Merge branch 'yc-test/1024-devasan-bug-symbolizer-destruct-too-early' into yc/1024-devasan-bug-symbolizer-destruct-too-early
2 parents 6b5534c + c6dbdfe commit 5a78565

File tree

3 files changed

+9
-27
lines changed

3 files changed

+9
-27
lines changed

source/loader/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,6 @@ if(UR_ENABLE_SANITIZER)
171171
PRIVATE
172172
${CMAKE_CURRENT_SOURCE_DIR}/layers/sanitizer/linux/symbolizer.cpp
173173
)
174-
target_compile_definitions(ur_loader PRIVATE UR_ENABLE_SYMBOLIZER)
175174
target_include_directories(ur_loader PRIVATE ${LLVM_INCLUDE_DIRS})
176175
target_link_libraries(ur_loader PRIVATE LLVMSupport LLVMSymbolize)
177176
# In in-tree build, if LLVM is built with libc++, we also need to build

source/loader/layers/sanitizer/linux/symbolizer.cpp

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,10 @@
77
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
88
*
99
*/
10-
11-
#include "ur_sanitizer_layer.hpp"
12-
1310
#include "llvm/DebugInfo/Symbolize/DIPrinter.h"
1411
#include "llvm/DebugInfo/Symbolize/Symbolize.h"
1512

16-
namespace ur_sanitizer_layer {
17-
18-
llvm::symbolize::PrinterConfig GetPrinterConfig() {
13+
static llvm::symbolize::PrinterConfig GetPrinterConfig() {
1914
llvm::symbolize::PrinterConfig Config;
2015
Config.Pretty = false;
2116
Config.PrintAddress = false;
@@ -25,36 +20,32 @@ llvm::symbolize::PrinterConfig GetPrinterConfig() {
2520
return Config;
2621
}
2722

28-
} // namespace ur_sanitizer_layer
29-
3023
extern "C" {
3124

3225
void SymbolizeCode(const char *ModuleName, uint64_t ModuleOffset,
3326
char *ResultString, size_t ResultSize, size_t *RetSize) {
3427
std::string Result;
3528
llvm::raw_string_ostream OS(Result);
3629
llvm::symbolize::Request Request{ModuleName, ModuleOffset};
37-
llvm::symbolize::PrinterConfig Config =
38-
ur_sanitizer_layer::GetPrinterConfig();
30+
llvm::symbolize::PrinterConfig Config = GetPrinterConfig();
3931
llvm::symbolize::ErrorHandler EH = [&](const llvm::ErrorInfoBase &ErrorInfo,
4032
llvm::StringRef ErrorBanner) {
4133
OS << ErrorBanner;
4234
ErrorInfo.log(OS);
4335
OS << '\n';
4436
};
45-
auto Printer =
46-
std::make_unique<llvm::symbolize::LLVMPrinter>(OS, EH, Config);
37+
llvm::symbolize::LLVMSymbolizer Symbolizer;
38+
llvm::symbolize::LLVMPrinter Printer(OS, EH, Config);
4739

48-
auto ResOrErr =
49-
ur_sanitizer_layer::getContext()->symbolizer.symbolizeInlinedCode(
50-
ModuleName,
51-
{ModuleOffset, llvm::object::SectionedAddress::UndefSection});
40+
auto ResOrErr = Symbolizer.symbolizeInlinedCode(
41+
ModuleName,
42+
{ModuleOffset, llvm::object::SectionedAddress::UndefSection});
5243

5344
if (!ResOrErr) {
5445
return;
5546
}
56-
Printer->print(Request, *ResOrErr);
57-
ur_sanitizer_layer::getContext()->symbolizer.pruneCache();
47+
Printer.print(Request, *ResOrErr);
48+
Symbolizer.pruneCache();
5849
if (RetSize) {
5950
*RetSize = Result.size() + 1;
6051
}

source/loader/layers/sanitizer/ur_sanitizer_layer.hpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616
#include "ur/ur.hpp"
1717
#include "ur_proxy_layer.hpp"
1818

19-
#ifdef UR_ENABLE_SYMBOLIZER
20-
#include "llvm/DebugInfo/Symbolize/Symbolize.h"
21-
#endif // UR_ENABLE_SYMBOLIZER
22-
2319
#define SANITIZER_COMP_NAME "sanitizer layer"
2420

2521
namespace ur_sanitizer_layer {
@@ -42,10 +38,6 @@ class __urdlllocal context_t : public proxy_layer_context_t,
4238
std::unique_ptr<SanitizerInterceptor> interceptor;
4339
SanitizerType enabledType = SanitizerType::None;
4440

45-
#ifdef UR_ENABLE_SYMBOLIZER
46-
llvm::symbolize::LLVMSymbolizer symbolizer;
47-
#endif // UR_ENABLE_SYMBOLIZER
48-
4941
context_t();
5042
~context_t();
5143

0 commit comments

Comments
 (0)