summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike McLaughlin <mikem@microsoft.com>2015-03-05 17:06:03 -0800
committerMike McLaughlin <mikem@microsoft.com>2015-03-06 14:33:12 -0800
commitc3a5f9be4d0d3247070759db911426d72f862df3 (patch)
treea61b5bec027b3db04f92b373d30d27839d61235a
parent7c15a531e0d9a111bc084d78df58983b059e4568 (diff)
downloadcoreclr-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.cpp32
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;