Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash when a c++ exception is thrown after a module was unloaded #4

Closed
Sardelka9515 opened this issue Feb 20, 2023 · 0 comments
Closed
Labels
bug Something isn't working

Comments

@Sardelka9515
Copy link
Owner

Sardelka9515 commented Feb 20, 2023

In the NativeAOT compiled dll, .NET runtime registers a vectored exception handler with AddVectoredExceptionHandler, the handler is not unregistered when the dll is unloaded. Subsequent calls to ntdll.dll!RtlpCallVectoredHandlers(), which triggered by win32 exception dispatch, will fall into the handler in the unloaded module, causing an access violation.

Solution:

Hook AddVectoredExceptionHandler to intercept registered handlers and unregistered them with RemoveVectoredExceptionHandler right after the dll was unloaded.

@Sardelka9515 Sardelka9515 added the bug Something isn't working label Feb 20, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant