Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit 02493cf

Browse files
fix #553: ExecutionEngineException or AccessViolationException (CLR 2.0) when debugging a program that uses System.Data.OleDb
1 parent 4a80d3f commit 02493cf

File tree

5 files changed

+7
-17
lines changed

5 files changed

+7
-17
lines changed

src/AddIns/Debugger/Debugger.AddIn/Options/DebuggingOptions.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,6 @@ public override bool EnableJustMyCode {
4545
set { PS.Set<bool>("Debugger.EnableJustMyCode", value); }
4646
}
4747

48-
public override bool EnableEditAndContinue {
49-
get { return PS.Get<bool>("Debugger.EnableEditAndContinue", true); }
50-
set { PS.Set<bool>("Debugger.EnableEditAndContinue", value); }
51-
}
52-
5348
public override bool SuppressJITOptimization {
5449
get { return PS.Get<bool>("Debugger.SuppressJITOptimization", true); }
5550
set { PS.Set<bool>("Debugger.SuppressJITOptimization", value); }

src/AddIns/Debugger/Debugger.AddIn/Options/DebuggingOptionsPanel.xaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@
2929
</GroupBox>
3030
<GroupBox Margin="5" Header="{sd:Localize Global.Advanced}">
3131
<widgets:StackPanelWithSpacing SpaceBetweenItems="5">
32-
<!--
33-
<CheckBox Content="{sd:Localize Dialog.Options.IDEOptions.Debugging.EnableEditAndContinue}"
34-
IsChecked="{sd:OptionBinding debugger:DebuggingOptions.EnableEditAndContinue}" />
35-
-->
3632
<CheckBox Content="{sd:Localize Dialog.Options.IDEOptions.Debugging.SuppressJITOptimization}"
3733
IsChecked="{sd:OptionBinding debugger:DebuggingOptions.SuppressJITOptimization}" />
3834
<CheckBox Content="{sd:Localize Dialog.Options.IDEOptions.Debugging.SuppressNGENOptimization}"

src/AddIns/Debugger/Debugger.Core/Module.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -305,10 +305,14 @@ void OnSymbolsUpdated()
305305

306306
void SetJITCompilerFlags()
307307
{
308+
// ad CORDEBUG_JIT_ENABLE_ENC:
309+
// see issue #553 on GitHub: "ExecutionEngineException or AccessViolationException (CLR 2.0)
310+
// when debugging a program that uses System.Data.OleDb"
311+
// System.Data.dll (partially) is a C++/CLI assembly and EnC is not supported there.
312+
// trying to set CORDEBUG_JIT_ENABLE_ENC succeeds at first, but leads to strange exceptions afterwards.
313+
// CORDEBUG_JIT_ENABLE_ENC should only be set for managed-only modules with User Code.
308314
CorDebugJITCompilerFlags flags;
309-
if (this.Process.Options.EnableEditAndContinue) {
310-
flags = CorDebugJITCompilerFlags.CORDEBUG_JIT_ENABLE_ENC;
311-
} else if (this.Process.Options.SuppressJITOptimization) {
315+
if (this.Process.Options.SuppressJITOptimization) {
312316
flags = CorDebugJITCompilerFlags.CORDEBUG_JIT_DISABLE_OPTIMIZATION;
313317
} else {
314318
flags = CorDebugJITCompilerFlags.CORDEBUG_JIT_DEFAULT;

src/AddIns/Debugger/Debugger.Core/Options.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ namespace Debugger
2525
public class Options
2626
{
2727
public virtual bool EnableJustMyCode { get; set; }
28-
public virtual bool EnableEditAndContinue { get; set; }
2928
public virtual bool SuppressJITOptimization { get; set; }
3029
public virtual bool SuppressNGENOptimization { get; set; }
3130
public virtual bool StepOverDebuggerAttributes { get; set; }

src/Main/Base/Project/Debugging/IDebuggerService.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,6 @@ bool IsAttached {
156156
public interface IDebuggerOptions
157157
{
158158
bool EnableJustMyCode { get; }
159-
bool EnableEditAndContinue { get; }
160159
bool SuppressJITOptimization { get; }
161160
bool SuppressNGENOptimization { get; }
162161
bool StepOverDebuggerAttributes { get; }
@@ -199,9 +198,6 @@ sealed class DummyDebuggerOptions : IDebuggerOptions
199198
public bool EnableJustMyCode {
200199
get { return true; }
201200
}
202-
public bool EnableEditAndContinue {
203-
get { return false; }
204-
}
205201
public bool SuppressJITOptimization {
206202
get { return false; }
207203
}

0 commit comments

Comments
 (0)