Сбой Python при использовании вызова (ntdll.dll) - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть скрипт, который объединяет около 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, но моя система обновлена, поэтому я ничего не могуможет с этим поделать (за исключением загрузки другой версии с какого-нибудь ненадежного сайта, чего я не собираюсь делать)

Все это, как говорится, вы когда-нибудь сталкивались с подобной проблемой или это просто глупая ошибка, которую я сделал

...