【发布时间】:2013-03-14 11:50:40
【问题描述】:
64 位 Windows 程序中的某些类型的事件,例如除以零、空指针引用、堆栈溢出(如果您使用保护页检测到),通常会通过结构化或矢量异常进行处理(在发现有必要处理它们的程序中)。
在 JIT 编译器的上下文中,结构化异常有点尴尬,因为需要提供展开信息并符合所有函数的展开协议,这可能无法与例如移动代码块的复制垃圾收集器,建议使用向量异常。
虽然通常期望向量异常处理程序返回,但将它们用于此目的将涉及使用 longjmp 或一些等效的代码退出处理程序,这些代码会重置堆栈指针而不进行任何展开。
这是合法的,还是我忽略了一些绊脚石?
Unix 中的等价物似乎是合法的,值得:Longjmp out of signal handler?
【问题讨论】:
标签: windows exception-handling 64-bit setjmp