python - 使用调用 (ntdll.dll) 时 Python 崩溃
问题描述
我有一个脚本,它使用外部程序组合了大约 1000 个文件。它通过将第一个文件复制到combined.sym
然后将该文件与所有其他文件一个接一个地组合来实现。代码如下:
# gets all .sym files
symfiles = []
onlyfiles = [f for f in listdir(myPath) if isfile(join(myPath, f))]
for f in onlyfiles:
if '.sym' == splitext(f)[1]:
symfiles.append(f)
# copies one initial combined file (point to start from)
combinedFileName = "combined.sym"
copyfile(myPath + symfiles[0], myPath + combinedFileName)
for sym in symfiles:
print("processing " + str(sym))
cmdString = combinedFileName + " "
cmdString += sym
cmdString += " -a " + combinedFileName
finalCmdString = r'cmd.exe /C fuseFiles.bat "' + myPath + '" "' + cmdString + '"'
call(finalCmdString)
print("done")
我正在调用的批处理文件看起来像这样,但这不是问题:
@set PATH=\path\to\executable\;%PATH%
@cd %1
@FusingProgram "%2"
现在,当我运行这个脚本时,它会运行大约 15 分钟,然后才停止并返回到 CMD。
processing onefile.sym
processing anotherfile.sym
processing evenmorefiles.sym
processing yougetit.sym
C:\Users\test\>
如您所见,它错过了“完成”打印,并且没有处理所有文件。由其他文件combined.sym
创建和扩展.sym
在检查 Windows 事件时,我可以看到,它将 python 记录为崩溃并列 ntdll.dll
为错误模块(对于德语日志感到抱歉):
Name der fehlerhaften Anwendung: python.exe, Version: 0.0.0.0, Zeitstempel: 0x53787196
Name des fehlerhaften Moduls: ntdll.dll, Version: ****, Zeitstempel: 0x5b6db230
Ausnahmecode: 0xc0000005
Fehleroffset: 0x0002e2eb
ID des fehlerhaften Prozesses: 0x6224
Startzeit der fehlerhaften Anwendung: 0x01d454e0ff20377c
Pfad der fehlerhaften Anwendung: C:\pat\to\python\python.exe
Pfad des fehlerhaften Moduls: C:\WINDOWS\SysWOW64\ntdll.dll
Berichtskennung: 8b4254f0-c0d5-11e8-9a6f-901b0e5a6206
我做了一些研究,看来我必须通过更新 ntdll.dll 文件来解决这个问题,但是我的系统都是最新的,所以我对此无能为力(除了从一些不值得信赖的网站,我不会这样做)
说了这么多,你有没有遇到过类似的问题,或者这只是我犯的一个愚蠢的错误?