[TSan] fix crash when symbolize on darwin platforms (#99441)
The `dli_sname` filed in `Dl_info` may be `NULL`, which could cause a crash
This commit is contained in:
@@ -30,7 +30,7 @@ namespace __sanitizer {
|
||||
bool DlAddrSymbolizer::SymbolizePC(uptr addr, SymbolizedStack *stack) {
|
||||
Dl_info info;
|
||||
int result = dladdr((const void *)addr, &info);
|
||||
if (!result) return false;
|
||||
if (!result || !info.dli_sname) return false;
|
||||
|
||||
// Compute offset if possible. `dladdr()` doesn't always ensure that `addr >=
|
||||
// sym_addr` so only compute the offset when this holds. Failure to find the
|
||||
@@ -51,7 +51,7 @@ bool DlAddrSymbolizer::SymbolizePC(uptr addr, SymbolizedStack *stack) {
|
||||
bool DlAddrSymbolizer::SymbolizeData(uptr addr, DataInfo *datainfo) {
|
||||
Dl_info info;
|
||||
int result = dladdr((const void *)addr, &info);
|
||||
if (!result) return false;
|
||||
if (!result || !info.dli_sname) return false;
|
||||
const char *demangled = DemangleSwiftAndCXX(info.dli_sname);
|
||||
if (!demangled)
|
||||
demangled = info.dli_sname;
|
||||
|
||||
Reference in New Issue
Block a user