非托管 Windows 进程崩溃的方式有哪些?

发布于 2024-09-16 10:15:18 字数 476 浏览 8 评论 0原文

我试图了解非托管用户模式 ​​Windows 进程可能“崩溃”的方式(这实际上是一个包罗万象的术语)。

以下是迄今为止我所知道的方法:

  • 未处理的结构化异常
    • 默认 UnhandledExceptionFilter:Vista 之前的事后调试器; Vista+ 中的 WerFault
    • 自定义 UnhandledExceptionFilter:可以做任何它喜欢做的事,包括悄悄退出?
  • “硬”崩溃(不确定是否有一个技术术语)
    • 例如,在处理堆栈溢出时命中堆栈溢出防护页面:操作系统只是让进程消失得无影无踪?
  • “正常”退出:
    • 例如,语言提供了自己的错误处理机制,使操作系统看起来像应用程序正常关闭一样发生致命崩溃。

这大致正确吗?还有其他方法可以让用户模式 ​​Windows 进程终止吗?

I am trying to understand the ways in which an unmanaged user-mode Windows process can "crash" (which is really too much of a catch-all term).

Here are the ways I know of so far:

  • Unhandled Structured Exception
    • Default UnhandledExceptionFilter: postmortem debugger in pre-Vista; WerFault in Vista+
    • Custom UnhandledExceptionFilter: may do whatever it likes, including exiting quietly?
  • "Hard" crash (not sure if there's a technical term for this)
    • E.g. hitting the stack overflow guard page while handling a stack overflow: the OS simply makes the process disappear without a trace?
  • "Normal" exit:
    • E.g. where the language provides its own error handling mechanism that makes a fatal crash look to the OS like the application has shut down normally.

Is this roughly right? Are there any other ways for a user-mode Windows process to die?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

可是我不能没有你 2024-09-23 10:15:19
  • 未处理的异常 - 这通常是人们所说的“崩溃”
  • 堆栈损坏的异常 - 如果堆栈损坏并且无法遍历异常链,则进程将被默默杀死。
  • 显式终止
    • 从另一个进程(例如TaskManager、kill.exe)调用终止进程
    • C/C++ 运行时致命错误、/GS 堆栈 cookie 损坏等。
  • 则附加调试器并退出调试器而不分离控制台应用程序将终止
  • 如果您终止相应的 conhost.exe 进程,
  • Unhandled exception - this is usually what people would call "crash"
  • Exception with corrupted stack - if the stack is corrupted and the exception chain cannot be walked, the process is silently killed.
  • Explicit termination
    • From another process (e.g. TaskManager, kill.exe) calling TerminateProcess,
    • C/C++ runtime fatal error, /GS stack cookie corruption, etc.
  • Attaching a debugger and quiting the debugger without detaching
  • Console application will terminate if you kill the corresponding conhost.exe process
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文