Update notes on debugging

We fixed SEH unwinds on callbacks some time ago
This commit is contained in:
nattthebear 2021-04-09 20:59:22 -04:00
parent 7ec1008621
commit e6c33e676a
1 changed files with 4 additions and 9 deletions

View File

@ -59,15 +59,10 @@ Bring lots of tools, and lots of self loathing.
* Within the guest, DWARF unwinding information is available and libunwind is used. Guest C++ programs can freely use exceptions, * Within the guest, DWARF unwinding information is available and libunwind is used. Guest C++ programs can freely use exceptions,
and Mednafen does so without issue. and Mednafen does so without issue.
* Unwinding through any stack that is not guest content will likely explode. * Trying to unwind out of the guest stack will not work, so there needs to be a top level catch.
* Within the host, rust unwinds usually make some SEH explosion that crashes the application. * SEH unwinds, either from C# or Rust code, while in a callback from guest code back to host code, will unwind fine, but they
* None of them were meant to be recoverable anyway. will skip right past the guest code. This recovers the host system, but means that the guest is likely hosed as it
* C# exceptions that occur when there is guest code on the stack usually cause a complete termination. had no chance to run any dtors.
* So a callback to managed from within a waterbox core, etc.
* I never figured this one out. Guest execution is fully done on vanilla host stacks, and we should be doing nothing
that would make this fail. But it does.
* Since the rust waterboxhost, this now will only happen from emulator core specific callbacks, since the rust waterboxhost
does not call out to C# from within a syscall handler, ever.
* Any unwinding on a libco cothread will likely make me laugh. * Any unwinding on a libco cothread will likely make me laugh.
## Linux ## Linux