Description
During netcoredbg testing with .NET SDK 7.0 (dotnet-sdk-7.0.200-linux-x64.tar.gz). We found, that tests related to evaluation abort (timeout during execution and System.Diagnostics.Debugger.NotifyOfCrossThreadDependency() usage in evaluated code) are failed.
We found, that ICorDebugEval::Abort and ICorDebugEval2::RudeAbort return S_OK at call, but don't really abort evaluation in 7.0 (we also tested latest .NET SDK 3.1, 5.0, 6.0 and don't found any issues).
Reproduction Steps
Call ICorDebugEval::Abort in debugger. For example, create property with getter with System.Diagnostics.Debugger.NotifyOfCrossThreadDependency() and evaluate it. In this case runtime will call ICorDebugManagedCallback3::CustomNotification that forced debugger to use ICorDebugEval::Abort (CoreCLR debug API don't really provide any other way you could abort code execution during evaluation).
Expected behavior
- During evaluation call
ICorDebugEval::Abort or ICorDebugEval2::RudeAbort, it will return S_OK.
- Evaluated code don't continue execution.
ICorDebugManagedCallback::EvalComplete or ICorDebugManagedCallback::EvalException called, ICorDebugEval::GetResult() return CORDBG_S_FUNC_EVAL_ABORTED.
Actual behavior
- During evaluation call
ICorDebugEval::Abort or ICorDebugEval2::RudeAbort, it will return S_OK.
- Evaluated code continue execution.
- After evaluated code execution ends
ICorDebugManagedCallback::EvalComplete or ICorDebugManagedCallback::EvalException called, ICorDebugEval::GetResult() return S_OK. In case evaluated code never ends (for example, about deadlock), ICorDebugManagedCallback::EvalComplete or ICorDebugManagedCallback::EvalException never called.
Regression?
It works fine on Linux amd64 with .NET SDK 3.1, 5.0 and 6.0.
Known Workarounds
No response
Configuration
Ubuntu 20.04 amd64, .NET SDK 7.0 (dotnet-sdk-7.0.200-linux-x64.tar.gz).
Other information
No response
Description
During netcoredbg testing with .NET SDK 7.0 (dotnet-sdk-7.0.200-linux-x64.tar.gz). We found, that tests related to evaluation abort (timeout during execution and
System.Diagnostics.Debugger.NotifyOfCrossThreadDependency()usage in evaluated code) are failed.We found, that
ICorDebugEval::AbortandICorDebugEval2::RudeAbortreturnS_OKat call, but don't really abort evaluation in 7.0 (we also tested latest .NET SDK 3.1, 5.0, 6.0 and don't found any issues).Reproduction Steps
Call
ICorDebugEval::Abortin debugger. For example, create property with getter withSystem.Diagnostics.Debugger.NotifyOfCrossThreadDependency()and evaluate it. In this case runtime will callICorDebugManagedCallback3::CustomNotificationthat forced debugger to useICorDebugEval::Abort(CoreCLR debug API don't really provide any other way you could abort code execution during evaluation).Expected behavior
ICorDebugEval::AbortorICorDebugEval2::RudeAbort, it will returnS_OK.ICorDebugManagedCallback::EvalCompleteorICorDebugManagedCallback::EvalExceptioncalled,ICorDebugEval::GetResult()returnCORDBG_S_FUNC_EVAL_ABORTED.Actual behavior
ICorDebugEval::AbortorICorDebugEval2::RudeAbort, it will returnS_OK.ICorDebugManagedCallback::EvalCompleteorICorDebugManagedCallback::EvalExceptioncalled,ICorDebugEval::GetResult()returnS_OK. In case evaluated code never ends (for example, about deadlock),ICorDebugManagedCallback::EvalCompleteorICorDebugManagedCallback::EvalExceptionnever called.Regression?
It works fine on Linux amd64 with .NET SDK 3.1, 5.0 and 6.0.
Known Workarounds
No response
Configuration
Ubuntu 20.04 amd64, .NET SDK 7.0 (dotnet-sdk-7.0.200-linux-x64.tar.gz).
Other information
No response