Hi
The main issue is that new object can't be created in suspend disabled mode. DRL VM is in this state during "GC unsafe" operation, when GC have not been started. New SOE can't be created in this mode. But all information about exception can be stored in thread local storage. When Vm return control to managed code, function rethrow_current_thread_exception is called, and this function can decide to create exception (it's possible here) or throw it lazy. Now "lazy exception" supported for MANAGED code only, Alexey propose extend it for VM code. This technique should fix the most case when exception should be raised in suspend disabled mode. About "suspended" mode. It's misprint for suspend disabled mode. Sorry for confusion. The issue is in check available stack size before entering in suspend disabled mode, and raise new SOE if available stack size is not enough. The third point is not really fix. I think it's workaround for cases when VM can't create new exception object by different reasons. I suppose, VM can raise pre created SOE in the case when stack overflow happen in suspend disabled mode and stack can't be unwound destructively. Pavel Afremov.