summaryrefslogtreecommitdiff
path: root/src/debug/ee
diff options
context:
space:
mode:
authorMike McLaughlin <mikem@microsoft.com>2015-04-22 21:27:10 -0700
committerMike McLaughlin <mikem@microsoft.com>2015-04-23 09:20:47 -0700
commit82573010c7eae37b40253eb777224d528087d426 (patch)
tree815b90741f756bb1774595694892068542e105de /src/debug/ee
parent194eca22bb6629ba3747275e523ca12c938270e3 (diff)
downloadcoreclr-82573010c7eae37b40253eb777224d528087d426.tar.gz
coreclr-82573010c7eae37b40253eb777224d528087d426.tar.bz2
coreclr-82573010c7eae37b40253eb777224d528087d426.zip
Fixed the dac table file problem. The file name used isn't unique if there is more than one process running managed code. As a temporary fix (using a file is very temporary anyway), use the CLR module base address in the file name. Even if there is more than one process with managed code/coreclr running if the base address is the same the dac table address will be the same. Moved the dac table initialization to be sooner in the EE initialization because SOS/DAC can need it even before the EE debugger support is started. Also fixed the dac table file cleanup. We can't actually remove the dac file now that the base address is part of the name because multiple processes could be using it.
Diffstat (limited to 'src/debug/ee')
-rw-r--r--src/debug/ee/dactable.cpp2
-rw-r--r--src/debug/ee/debugger.cpp8
2 files changed, 1 insertions, 9 deletions
diff --git a/src/debug/ee/dactable.cpp b/src/debug/ee/dactable.cpp
index 28ae0eaa42..c7cf64e186 100644
--- a/src/debug/ee/dactable.cpp
+++ b/src/debug/ee/dactable.cpp
@@ -58,7 +58,7 @@ void DacGlobals::Initialize()
#ifdef FEATURE_SVR_GC
g_dacTable.InitializeSVREntries(baseAddress);
#endif
- PAL_PublishDacTableAddress(&g_dacTable, sizeof(g_dacTable));
+ PAL_PublishDacTableAddress((PVOID)baseAddress, &g_dacTable, sizeof(g_dacTable));
}
// Initializes the non-SVR table entries
diff --git a/src/debug/ee/debugger.cpp b/src/debug/ee/debugger.cpp
index 87cccf8653..ce72f276e8 100644
--- a/src/debug/ee/debugger.cpp
+++ b/src/debug/ee/debugger.cpp
@@ -1996,10 +1996,6 @@ HRESULT Debugger::Startup(void)
DebuggerLockHolder dbgLockHolder(this);
-#ifdef FEATURE_PAL
- DacGlobals::Initialize();
-#endif
-
// Stubs in Stacktraces are always enabled.
g_EnableSIS = true;
@@ -2548,10 +2544,6 @@ void Debugger::StopDebugger(void)
}
CONTRACTL_END;
-#ifdef FEATURE_PAL
- PAL_CleanupDacTableAddress();
-#endif
-
// Leak almost everything on process exit. The OS will clean it up anyways and trying to
// clean it up ourselves is just one more place we may AV / deadlock.