You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is one of the causes of Watson crash tracked by DevDiv VSO Bug 187805.
For X86, Roslyn is using the metadata pointer after the module instance (and runtime/process) has been unloaded. Since Roslyn’s EC does not listen to module instance unloaded notifications, it is using the pointer after the module instance has been unloaded and closed.
To fix this, we need to make the following changes:
a. Roslyn:
i. ExpressionCompiler (and the vsdconfigxml) should implement IDkmModuleInstanceUnloadNotification, analogous to IDkmModuleModifiedNotification. This ensures that the metadata bytes ptr is alive till the module instance unloaded notification is processed, ensuring that Roslyn will never have a dangling pointer.
ii. IsBadOrMissingMetadataException should additionally check if the exception is an ObjectDisposedException.
b. Debugger:
i. ManagedDM should return E_RPC_DISCONNECTED (translates to ObjectDisposedException) if metadata is requested for a module instance that has been unloaded.
This work item tracks the Roslyn side of this work.
The text was updated successfully, but these errors were encountered:
This is one of the causes of Watson crash tracked by DevDiv VSO Bug 187805.
For X86, Roslyn is using the metadata pointer after the module instance (and runtime/process) has been unloaded. Since Roslyn’s EC does not listen to module instance unloaded notifications, it is using the pointer after the module instance has been unloaded and closed.
To fix this, we need to make the following changes:
a. Roslyn:
i. ExpressionCompiler (and the vsdconfigxml) should implement IDkmModuleInstanceUnloadNotification, analogous to IDkmModuleModifiedNotification. This ensures that the metadata bytes ptr is alive till the module instance unloaded notification is processed, ensuring that Roslyn will never have a dangling pointer.
ii. IsBadOrMissingMetadataException should additionally check if the exception is an ObjectDisposedException.
b. Debugger:
i. ManagedDM should return E_RPC_DISCONNECTED (translates to ObjectDisposedException) if metadata is requested for a module instance that has been unloaded.
This work item tracks the Roslyn side of this work.
The text was updated successfully, but these errors were encountered: