我首先在您的转储上运行 analyze -v。不幸的是,这并没有发现任何有用的东西。
接下来的尝试是使用(~*) 查看所有堆栈。这确实出现在有趣的堆栈之后。
10 TID:1a08 kb kbn kbnL kn knL kpn kPn
# ChildEBP RetAddr
00 0668f128 77c7b230 ntdll!RtlLookupFunctionTable+0x85
01 0668f178 77c7b3f5 ntdll!RtlIsValidHandler+0x26
02 0668f1f8 77c30133 ntdll!RtlDispatchException+0x10e
03 0668f1f8 0668f7b1 ntdll!KiUserExceptionDispatcher+0xf
WARNING: Frame IP not in any known module. Following frames may be wrong.
04 0668f6c0 77c7b499 0x668f7b1
05 0668f6e4 77c7b46b ntdll!ExecuteHandler2+0x26
06 0668f708 77c7b40e ntdll!ExecuteHandler+0x24
07 0668f794 77c30133 ntdll!RtlDispatchException+0x127
08 0668f794 7632c99e ntdll!KiUserExceptionDispatcher+0xf
09 0668fc84 76335d00 ole32!CStdMarshal::Disconnect+0x223
0a 0668fc98 76335ce1 ole32!DisconnectSwitch+0x16
0b 0668fcb0 76335d3f ole32!CStdMarshal::DisconnectAndRelease+0x44
0c 0668fe60 76368f82 ole32!COIDTable::ThreadCleanup+0xcb
0d 0668fea4 76368ec3 ole32!FinishShutdown+0x9d
0e 0668fec4 7635bac3 ole32!ApartmentUninitialize+0x96
0f 0668fedc 763688e8 ole32!wCoUninitialize+0x153
10 0668fef8 6ef2314a ole32!CoUninitialize+0x72
11 0668ff00 764943c0 NetworkItemFactory!FDBackgroundThreadHandler+0x21
12 0668ff88 7662338a shlwapi!WrapperThreadProc+0x1b5
13 0668ff94 77c59f72 kernel32!BaseThreadInitThunk+0xe
14 0668ffd4 77c59f45 ntdll!__RtlUserThreadStart+0x70
15 0668ffec 00000000 ntdll!_RtlUserThreadStart+0x1b
至少,这证实了我们最初的怀疑,即它与 COM/system 相关,而不是 Delphi。深入堆栈寻找有用的字符串出现在字符串之后
d:\w7rtm\com\ole32\com\class\compobj.cxx
现在我们要搜索一些新内容:w7rtm compobj
这导致 SO 上的以下线程(注意 相同的堆栈跟踪)
Crashes in ole32!COIDTable::ThreadCleanup … NetworkItemFactory!FDBackgroundThreadHandler
Thomas W 提出了这个问题,Hans Pasant 对此进行了评论,并且两者都使用 WinDbg 或 Windows Internals 知识渊博,但没有找到明确的解决方案(至少,没有发布解决方案)所以恐怕你只剩下汉斯给托马斯的以下建议了
你被埋在 COM 管道中,清楚地暗示它
内部状态已损坏。这是一个环境问题,有些
一种被注入进程并搞砸的DLL。
早在崩溃发生之前,你就几乎没有希望了
用调试器诊断它。找出问题的共同根源
从模块列表中。怀疑任何外壳扩展、反恶意软件、任何
类似于 Dropbox 的实用程序。使用 SysInternals 的 AutoRuns 禁用
他们。 (Hans Pasant)
假设故障出在注入到您的进程中的 dll 中,我已经从您的转储和我的计算机上运行的应用程序中获取了已加载 dll 的横截面(它不会在我的计算机上崩溃) 留下以下可疑 dll 的
ATL90 EhStorAPI EhStorShell FWPUCLNT GROOVEEX_64a40000 GrooveIntlResource_63d20000 MsftEdit OFFICE RpcRtRemote TortoiseSVN32 TortoiseStub32
WMASF WMVCore WSHTCPIP WcnApi Wldap32 atl atl100 audiodev cfgmgr32 crypt32 cryptsp
davhlpr devobj dnsapi dui70 duser fdWNet fundisc gdiplus gdiplus ieframe ieproxy
iertutil imm32 intl3_tsvn32 kernel32 libapr_tsvn32 libaprutil_tsvn32 libsasl32 libsvn_tsvn32 linkinfo lpk mpr
msasn1 msctf msls31 msvcp100 msvcp110 msvcp90 msvcr100 msvcr110 msvcr90 msxml6 netmsg
normaliz nsi ntmarta psapi rpcrt4 secur32 setupapi shdocvw shlwapi slc sspicli
userenv usp10 wininet winmm winnsi winsta wintrust wpdshext wpdshext ws2_32 wship6 xmllite
api_ms_win_downlevel_advapi32_l1_1_0
api_ms_win_downlevel_normaliz_l1_1_0
api_ms_win_downlevel_shell32_l1_1_0
api_ms_win_downlevel_shlwapi_l1_1_0
api_ms_win_downlevel_shlwapi_l2_1_0
api_ms_win_downlevel_user32_l1_1_0
api_ms_win_downlevel_version_l1_1_0
如果我们省略所有 Microsoft 和 Unloaded dll,则以下 dll 将保留
TortoiseSVN32
TortoiseStub32
intl3_tsvn32
libapr_tsvn32
libaprutil_tsvn32
libsasl32
libsvn_tsvn32
所以我在您的系统上的第一次尝试是卸载或禁用加载(使用自动运行) TortoiseSVN 插件,看看是否能解决您的问题。