Kernel exception: fixed top level finally. (#70) #71
No reviewers
Labels
No Milestone
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: M-Labs/artiq-zynq#71
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "pca006132/artiq-zynq:exception"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes #70.
This is due to the exception handling code calling
terminate
directly after_Unwind_RaiseException
returns_URC_END_OF_STACK
, meaning that no exception handler for that exception is found. However, it would miss the potential cleanup routines which should be called by a forced unwind.Libunwind does not provide a forced unwind for us, and it seems difficult to do so. This fix uses a hack, reporting handler found when it finds a cleanup routine, which would trick the unwinder to do phase two unwinding (actually calling the cleanup routines) even if no routine would catch the exception.