The Windows unwinder stopped at the first frame of a module without the project's .ehmeta or .ehfram tables, so an exception could not cross libstdc++-6.dll and libwinpthread-1.dll (std::call_once through pthread_once) or system DLLs. For such a frame it now looks up the function's PE unwind data with RtlLookupFunctionEntry and takes the caller's registers, including the nonvolatile rsi, rdi and xmm6-xmm15, from RtlVirtualUnwind. A frame whose unwind data has an exception or termination handler still stops the walk, since those handlers are not run. windows_exceptions gets back the std::call_once case of #1423. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| ARCHITECTURE.md | ||
| BUILD.md | ||
| CONVENTIONS.md | ||
| HW_ORACLE.md | ||
| PROGRESS.md | ||
| TechnicalDebt.md | ||