diff options
author | Mike McLaughlin <mikem@microsoft.com> | 2015-03-05 17:06:03 -0800 |
---|---|---|
committer | Mike McLaughlin <mikem@microsoft.com> | 2015-03-06 14:33:12 -0800 |
commit | c3a5f9be4d0d3247070759db911426d72f862df3 (patch) | |
tree | a61b5bec027b3db04f92b373d30d27839d61235a | |
parent | 7c15a531e0d9a111bc084d78df58983b059e4568 (diff) | |
download | coreclr-c3a5f9be4d0d3247070759db911426d72f862df3.tar.gz coreclr-c3a5f9be4d0d3247070759db911426d72f862df3.tar.bz2 coreclr-c3a5f9be4d0d3247070759db911426d72f862df3.zip |
Fixed that IP2MD stopped working after using it, continuing the target and then trying to use it again. Needed to always recreate the IXCLRDataProcess instance each time a command is run.
-rw-r--r-- | src/ToolBox/SOS/Strike/util.cpp | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/src/ToolBox/SOS/Strike/util.cpp b/src/ToolBox/SOS/Strike/util.cpp index ea8d3324ec..7adba2f960 100644 --- a/src/ToolBox/SOS/Strike/util.cpp +++ b/src/ToolBox/SOS/Strike/util.cpp @@ -65,7 +65,7 @@ IXCLRDataProcess *g_clrData = NULL; ISOSDacInterface *g_sos = NULL; #ifdef FEATURE_PAL -BOOL g_palInitialized = FALSE; +PFN_CLRDataCreateInstance g_pCLRDataCreateInstance = NULL; #else ICorDebugProcess * g_pCorDebugProcess = NULL; #endif // FEATURE_PAL @@ -3334,7 +3334,7 @@ void DumpMDInfoFromMethodDescData(DacpMethodDescData * pMethodDescData, DacpReJi if (!fStackTraceFormat) { - ExtOut("Method Name: %S\n", wszNameBuffer); + ExtOut("Method Name: %ls\n", wszNameBuffer); DacpMethodTableData mtdata; if (SUCCEEDED(mtdata.Request(g_sos, pMethodDescData->MethodTablePtr))) @@ -3360,7 +3360,7 @@ void DumpMDInfoFromMethodDescData(DacpMethodDescData * pMethodDescData, DacpReJi { if (!bFailed) { - ExtOut("%S", wszNameBuffer); + ExtOut("%ls", wszNameBuffer); } else { @@ -4154,39 +4154,33 @@ void ResetGlobals(void) HRESULT LoadClrDebugDll(void) { #ifdef FEATURE_PAL - if (!g_palInitialized) + if (g_pCLRDataCreateInstance == NULL) { int err = PAL_Initialize(0, NULL); if(err != 0) { return E_FAIL; } - g_palInitialized = TRUE; - } - if (g_clrData == NULL) - { // Assumes that LD_LIBRARY_PATH (or DYLD_LIBRARY_PATH on OSx) is set to runtime binaries path HMODULE hdac = LoadLibraryA(MAKEDLLNAME_A("mscordaccore")); if (hdac == NULL) { return E_FAIL; } - PFN_CLRDataCreateInstance pCLRDataCreateInstance = (PFN_CLRDataCreateInstance)GetProcAddress(hdac, "CLRDataCreateInstance"); - if (pCLRDataCreateInstance == NULL) + g_pCLRDataCreateInstance = (PFN_CLRDataCreateInstance)GetProcAddress(hdac, "CLRDataCreateInstance"); + if (g_pCLRDataCreateInstance == NULL) { FreeLibrary(hdac); return E_FAIL; } - ICLRDataTarget *target = new DataTarget(); - HRESULT hr = pCLRDataCreateInstance(__uuidof(IXCLRDataProcess), target, reinterpret_cast<void**>(&g_clrData)); - if (FAILED(hr)) - { - FreeLibrary(hdac); - g_clrData = NULL; - return hr; - } } - g_clrData->AddRef(); + ICLRDataTarget *target = new DataTarget(); + HRESULT hr = g_pCLRDataCreateInstance(__uuidof(IXCLRDataProcess), target, reinterpret_cast<void**>(&g_clrData)); + if (FAILED(hr)) + { + g_clrData = NULL; + return hr; + } #else WDBGEXTS_CLR_DATA_INTERFACE Query; |