From 2a388bdee406feb6f2b45a38c6286047a28d3fd3 Mon Sep 17 00:00:00 2001 From: Ryan Macnak Date: Tue, 15 Apr 2025 15:46:59 -0700 Subject: [PATCH] [vm] At least give module+offset when symbols are missing on Windows. TEST=manually added crash Change-Id: I73c8a9417a52efb1c9a1fd0fbe913c60637f9613 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/422541 Reviewed-by: Alexander Aprelev Commit-Queue: Ryan Macnak --- runtime/vm/native_symbol_win.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/runtime/vm/native_symbol_win.cc b/runtime/vm/native_symbol_win.cc index ec1fbcd35b5..1f55ab1e4c7 100644 --- a/runtime/vm/native_symbol_win.cc +++ b/runtime/vm/native_symbol_win.cc @@ -95,7 +95,22 @@ void NativeSymbolResolver::FreeSymbolName(const char* name) { bool NativeSymbolResolver::LookupSharedObject(uword pc, uword* dso_base, const char** dso_name) { +#ifdef DART_TARGET_OS_WINDOWS_UWP return false; +#else + IMAGEHLP_MODULE64 info = {}; + info.SizeOfStruct = sizeof(info); + if (!SymGetModuleInfo64(GetCurrentProcess(), pc, &info)) { + return false; + } + if (dso_base != nullptr) { + *dso_base = info.BaseOfImage; + } + if (dso_name != nullptr) { + *dso_name = Utils::StrDup(info.ImageName); + } + return true; +#endif // ifdef DART_TARGET_OS_WINDOWS_UWP } void NativeSymbolResolver::AddSymbols(const char* dso_name,