std::string dacSymLink(tmpPath);
dacSymLink.append(NETCORE_DAC_DLL_NAME_A);
- int error = symlink(dacModulePath.c_str(), dacSymLink.c_str());
- if (error == 0)
+ // Check if the DAC file already exists in the temp directory because
+ // of a "loadsymbols" command which downloads everything.
+ if (access(dacSymLink.c_str(), F_OK) == 0)
{
dacModulePath.assign(dacSymLink);
}
else
{
- ExtErr("symlink(%s, %s) FAILED %s\n", dacModulePath.c_str(), dacSymLink.c_str(), strerror(errno));
+ int error = symlink(dacModulePath.c_str(), dacSymLink.c_str());
+ if (error == 0)
+ {
+ dacModulePath.assign(dacSymLink);
+ }
+ else
+ {
+ ExtErr("symlink(%s, %s) FAILED %s\n", dacModulePath.c_str(), dacSymLink.c_str(), strerror(errno));
+ }
}
}
#endif
ExtOut("ClassLoader: %p\n", SOS_PTR(pAssembly->ClassLoader));
if ((ULONG64)pAssembly->AssemblySecDesc != NULL)
ExtOut("SecurityDescriptor: %p\n", SOS_PTR(pAssembly->AssemblySecDesc));
- ExtOut(" Module Name\n");
+ ExtOut(" Module\n");
ArrayHolder<CLRDATA_ADDRESS> Modules = new CLRDATA_ADDRESS[pAssembly->ModuleCount];
if (Modules == NULL
return;
}
- for (UINT n=0;n<pAssembly->ModuleCount;n++)
+ for (UINT n = 0; n < pAssembly->ModuleCount; n++)
{
if (IsInterrupt())
{
return;
}
-
CLRDATA_ADDRESS ModuleAddr = Modules[n];
- DMLOut("%s " WIN86_8SPACES, DMLModule(ModuleAddr));
+ DMLOut(" %s " WIN86_8SPACES, DMLModule(ModuleAddr));
DacpModuleData moduleData;
- if (moduleData.Request(g_sos,ModuleAddr)==S_OK)
+ if (moduleData.Request(g_sos, ModuleAddr) == S_OK)
{
WCHAR fileName[MAX_LONGPATH];
FileNameForModule (&moduleData, fileName);
ExtOut("%S\n", (moduleData.bIsReflection) ? W("Dynamic Module") : W("Unknown Module"));
}
}
+ else
+ {
+ ExtOut("Request module data FAILED\n");
+ }
}
}
*numModule = 0;
DacpAppDomainStoreData adsData;
- if (adsData.Request(g_sos)!=S_OK)
+ if (adsData.Request(g_sos) != S_OK)
return NULL;
ArrayHolder<CLRDATA_ADDRESS> pAssemblyArray = NULL;
return NULL;
}
ArrayHolder<CLRDATA_ADDRESS> pArray = new CLRDATA_ADDRESS[arrayLength];
-
- if (pArray==NULL)
+ if (pArray == NULL)
{
ReportOOM();
return NULL;
{
pArray[1] = adsData.sharedDomain;
}
- if (g_sos->GetAppDomainList(adsData.DomainCount, pArray.GetPtr()+numSpecialDomains, NULL)!=S_OK)
+ if (g_sos->GetAppDomainList(adsData.DomainCount, pArray.GetPtr() + numSpecialDomains, NULL) != S_OK)
{
ExtOut("Unable to get array of AppDomains\n");
return NULL;
int maxList = arrayLength; // account for system and shared domains
if (maxList <= 0 || !ClrSafeInt<size_t>::multiply(maxList, sizeof(PVOID), AllocSize))
{
- ExtOut("Integer overflow error.\n");
+ ExtOut("<integer overflow>\n");
return NULL;
}
}
DacpAppDomainData appDomain;
- if (FAILED(appDomain.Request(g_sos,pArray[n])))
+ if (FAILED(appDomain.Request(g_sos, pArray[n])))
{
// Don't print a failure message here, there is a very normal case when checking
// for modules after clr is loaded but before any AppDomains or assemblies are created
if (FAILED(g_sos->GetAssemblyList(appDomain.AppDomainPtr, appDomain.AssemblyCount, pAssemblyArray, NULL)))
{
- ExtOut("Unable to get array of Assemblies for the given AppDomain..\n");
+ ExtOut("Unable to get array of Assemblies for the given AppDomain\n");
goto Failure;
}
DacpAssemblyData assemblyData;
if (FAILED(assemblyData.Request(g_sos, pAssemblyArray[nAssem])))
{
- ExtOut("Failed to request assembly.\n");
+ ExtOut("Failed to request assembly\n");
goto Failure;
}
pModules = new CLRDATA_ADDRESS[assemblyData.ModuleCount];
if (FAILED(g_sos->GetAssemblyModuleList(assemblyData.AssemblyPtr, assemblyData.ModuleCount, pModules, NULL)))
{
- ExtOut("Failed to get the modules for the given assembly.\n");
+ ExtOut("Failed to get the modules for the given assembly\n");
goto Failure;
}
CLRDATA_ADDRESS ModuleAddr = pModules[nModule];
DacpModuleData ModuleData;
- if (FAILED(ModuleData.Request(g_sos,ModuleAddr)))
+ if (FAILED(ModuleData.Request(g_sos, ModuleAddr)))
{
- ExtOut("Failed to request Module data from assembly.\n");
- goto Failure;
+ ExtDbgOut("Failed to request module data from assembly at %p\n", ModuleAddr);
+ continue;
}
if (mName != NULL)