当我从 bash(来自 python)运行 ffmpeg 并尝试终止该进程时,我的计算机出现蓝屏(KERNEL_SECURITY_CHECK_FAILURE)(这是在带有适用于 Linux 的 Windows 子系统的 WINDOWS 上)。
subprocess.Popen
这些进程以 的形式从 python () 打开bash -c 'ffmpeg <args>'
,但是,当 python 程序尝试杀死它们 ( proc.kill()
) 或 python 意外退出 ( KeyboardInterrupt
) 时,python 命令行将关闭,而 bashes 保持打开状态,然后立即出现 BSoD。
代码示例如下:
formatted_command = ['bash', '-c', "'", 'ffmpeg', '-i', '<input file>',
'-vf', 'ass=<sub file>', '-strict', '-2', '<output file>', "'"]
process_list.append(sp.Popen(formatted_command, creationflags=sp.CREATE_NEW_CONSOLE,
stderr=sp.PIPE, universal_newlines=True))
然后杀死它:
[proc.kill() for proc in process_list]
请注意,仅当我尝试终止进程时(或者当 python 尝试终止它产生的进程时,如果出现错误并终止它产生的进程),才会发生 BSoD,而不会在它们成功退出时发生。
这可能是 WSL 的问题,也可能是 ffmpeg 的问题,也可能是 subprocess 的问题,甚至可能是我的代码的问题,因此,如果您能提供任何关于该做什么(或如何澄清我的问题)的指导,我将不胜感激。
谢谢您的帮助。
编辑:
这是@magicandre1981 要求的我的 C:\Windows\Minidump 文件夹。它们很可能都来自同一个错误:http://www.filedropper.com/minidump_2
WinDBG 显示“可能由以下原因引起:LXCORE.SYS ( LXCORE!LxpFutexEvictWaitQueue+47 )”,但不幸的是,我不知道这对我意味着什么。任何帮助都将不胜感激!
编辑2:
每当我尝试从外部终止 bash(任务管理器、python 的子进程终止、proc.kill() 等)时,BSoD 总是会出现,因此这肯定是 ffmpeg 或 WSL 的问题。当我直接向 bash 发送 ^C(通过将 python 控制台也作为其标准输入)时,它们会正常退出,就像它们成功完成一样。
这让我相信这只是试图终止子系统之外的进程的问题,因此如果有关于如何告诉 bash 本身终止进程的任何建议(不捕获我的 stdin 并将其从 python 中拉出来),我将不胜感激。
谢谢你的帮助!