Solved two issues. First, added a hack to bypass the exception table test in the kernel's page fault handler. It works by looking for the same user space code access pattern that the watchpoints framework looks for, and then that info is available at a coarser-grain to the interrupt handler through the basic block info struct. This ends up setting a cpu-private variable that is read by the search exception tables function, and used to 'pacify' that search. Also solved another bug where the kernel reads the alignment check flag during page faults. This was suprising because it didn't inspect the flags stored in the ISF, instead it must push its own flags again. This might be less surprising than I think though because it might save these flags always for swapping out the task that was interrupted.
Still need to handle NT flag in the common vector entry code. Seems like one of the patch wrappers is being instrumented; might be indicative of using the wrong allocator. Otherwise, stability has improved due to the current changes, but there still seems to be some corruption.