Skip to content

Commit 4814e71

Browse files
authored
Merge pull request #1355 from yingcong-wu/yc/demangle-kernelname
[DeviceSanitizerLayer] Demangle the kernel name in error reporting
2 parents 3fd11f1 + 7490bc7 commit 4814e71

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

source/loader/layers/sanitizer/asan_interceptor.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,9 @@ void SanitizerInterceptor::postLaunchKernel(ur_kernel_handle_t Kernel,
281281
const char *Func = AH->Func[0] ? AH->Func : "<unknown func>";
282282
auto KernelName = getKernelName(Kernel);
283283

284+
// Try to demangle the kernel name
285+
KernelName = DemangleName(KernelName);
286+
284287
context.logger.always("\n====ERROR: DeviceSanitizer: {} on {}",
285288
DeviceSanitizerFormat(AH->ErrorType),
286289
DeviceSanitizerFormat(AH->MemoryType));

source/loader/layers/sanitizer/common.hpp

+3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
#include <cassert>
1919
#include <cstdint>
20+
#include <string>
2021

2122
namespace ur_sanitizer_layer {
2223

@@ -107,4 +108,6 @@ bool DestroyShadowMem();
107108

108109
void *GetMemFunctionPointer(const char *);
109110

111+
std::string DemangleName(const std::string &name);
112+
110113
} // namespace ur_sanitizer_layer

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

+13
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
#include "ur_sanitizer_layer.hpp"
1616

1717
#include <asm/param.h>
18+
#include <cxxabi.h>
1819
#include <dlfcn.h>
1920
#include <gnu/lib-names.h>
21+
#include <string>
2022
#include <sys/mman.h>
2123

2224
extern "C" __attribute__((weak)) void __asan_init(void);
@@ -84,4 +86,15 @@ void *GetMemFunctionPointer(const char *FuncName) {
8486
return ptr;
8587
}
8688

89+
std::string DemangleName(const std::string &name) {
90+
std::string result = name;
91+
char *demangled =
92+
abi::__cxa_demangle(name.c_str(), nullptr, nullptr, nullptr);
93+
if (demangled) {
94+
result = demangled;
95+
free(demangled);
96+
}
97+
return result;
98+
}
99+
87100
} // namespace ur_sanitizer_layer

0 commit comments

Comments
 (0)