C# Recipe for uncatchable exception
-
I had the following code in my app. Turns out you just CAN'T debug that code. At least with Visual Studio 2017, It will crash your process instantly and you will be left without any clue as to what was wrong!! Gotta report that to Microsoft.. Meanwhile, behold the evilest safe C# code that can be!
class Program { static void Main(string\[\] args) { try { Fail(); } catch (Exception ex) { Log(ex); } } static void Fail() { throw new NotSupportedException("You Fool!"); } static void Log(Exception ex) { var sb = new StringBuilder(); Log(ex); Console.WriteLine($"Problem: {sb}"); } }
[EDIT] To clarify, of course this code is buggy, it's a bug repro. But most remarkably the program just crash without hint from Visual Studio. Even if you ask Visual Studio to stop on StackOverflowException, it won't! [EDIT2] Setting breakpoints is not the problem... But why would you put a breakpoint there if you didn't know the bug was there in the first place? FYI it's about 1 month of work before this bug came to light!
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
It's exceptions all the way down.
This space for rent
-
I had the following code in my app. Turns out you just CAN'T debug that code. At least with Visual Studio 2017, It will crash your process instantly and you will be left without any clue as to what was wrong!! Gotta report that to Microsoft.. Meanwhile, behold the evilest safe C# code that can be!
class Program { static void Main(string\[\] args) { try { Fail(); } catch (Exception ex) { Log(ex); } } static void Fail() { throw new NotSupportedException("You Fool!"); } static void Log(Exception ex) { var sb = new StringBuilder(); Log(ex); Console.WriteLine($"Problem: {sb}"); } }
[EDIT] To clarify, of course this code is buggy, it's a bug repro. But most remarkably the program just crash without hint from Visual Studio. Even if you ask Visual Studio to stop on StackOverflowException, it won't! [EDIT2] Setting breakpoints is not the problem... But why would you put a breakpoint there if you didn't know the bug was there in the first place? FYI it's about 1 month of work before this bug came to light!
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
To iterate is human, to recurse divine. But not in this case. :-) Of course it does not stop anymore. The process is too busy spiraling down to its death and after that it does not break to report anything. The debugging session is over and the vultures are eating what's left of your process. Would you expect one of the self driving cars to bring you to the hospital after hitting a tree? :-)
I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.
-
To iterate is human, to recurse divine. But not in this case. :-) Of course it does not stop anymore. The process is too busy spiraling down to its death and after that it does not break to report anything. The debugging session is over and the vultures are eating what's left of your process. Would you expect one of the self driving cars to bring you to the hospital after hitting a tree? :-)
I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.
CodeWraith wrote:
Would you expect one of the self driving cars to bring you to the hospital after hitting a tree?
That would be a handy feature! :-D
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
-
I had the following code in my app. Turns out you just CAN'T debug that code. At least with Visual Studio 2017, It will crash your process instantly and you will be left without any clue as to what was wrong!! Gotta report that to Microsoft.. Meanwhile, behold the evilest safe C# code that can be!
class Program { static void Main(string\[\] args) { try { Fail(); } catch (Exception ex) { Log(ex); } } static void Fail() { throw new NotSupportedException("You Fool!"); } static void Log(Exception ex) { var sb = new StringBuilder(); Log(ex); Console.WriteLine($"Problem: {sb}"); } }
[EDIT] To clarify, of course this code is buggy, it's a bug repro. But most remarkably the program just crash without hint from Visual Studio. Even if you ask Visual Studio to stop on StackOverflowException, it won't! [EDIT2] Setting breakpoints is not the problem... But why would you put a breakpoint there if you didn't know the bug was there in the first place? FYI it's about 1 month of work before this bug came to light!
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
I had no problem at all to set breakpoints and debug the code - no crash of VS... Actually the code has that logical problem of infinite recursion, but VS just stops after the application comes to a 0x800703e9 (COR_E_STACKOVERFLOW) error... which in my cases happening after 11708 iterations...
Quote:
The program '[19424] ConsoleApp2.exe' has exited with code -2147023895 (0x800703e9).
StackOverflowException Class (System)[^] When can you catch a StackOverflowException? – jaredpar's WebLog[^]
"The greatest enemy of knowledge is not ignorance, it is the illusion of knowledge". Stephen Hawking, 1942- 2018
-
I had no problem at all to set breakpoints and debug the code - no crash of VS... Actually the code has that logical problem of infinite recursion, but VS just stops after the application comes to a 0x800703e9 (COR_E_STACKOVERFLOW) error... which in my cases happening after 11708 iterations...
Quote:
The program '[19424] ConsoleApp2.exe' has exited with code -2147023895 (0x800703e9).
StackOverflowException Class (System)[^] When can you catch a StackOverflowException? – jaredpar's WebLog[^]
"The greatest enemy of knowledge is not ignorance, it is the illusion of knowledge". Stephen Hawking, 1942- 2018
Breakpoint is not a problem.. But why would you put a breakpoint there if you didn't know the bug was there in the first place? That was my problem! Only 600 files changed... Had to the find the wrong change.... Didn't have the insight to put the breakpoint in the right spot right away! Now, now, I wonder, how come it was so hard for you to understand that? I think I might not have make myself very clear.. not sure though how to improve my communication though... Any tips?
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
-
Breakpoint is not a problem.. But why would you put a breakpoint there if you didn't know the bug was there in the first place? That was my problem! Only 600 files changed... Had to the find the wrong change.... Didn't have the insight to put the breakpoint in the right spot right away! Now, now, I wonder, how come it was so hard for you to understand that? I think I might not have make myself very clear.. not sure though how to improve my communication though... Any tips?
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
It is true. Even knowing that there was a overflow exception does not help, as VS does not tell where and it is uncatchable...
"The greatest enemy of knowledge is not ignorance, it is the illusion of knowledge". Stephen Hawking, 1942- 2018
-
I had no problem at all to set breakpoints and debug the code - no crash of VS... Actually the code has that logical problem of infinite recursion, but VS just stops after the application comes to a 0x800703e9 (COR_E_STACKOVERFLOW) error... which in my cases happening after 11708 iterations...
Quote:
The program '[19424] ConsoleApp2.exe' has exited with code -2147023895 (0x800703e9).
StackOverflowException Class (System)[^] When can you catch a StackOverflowException? – jaredpar's WebLog[^]
"The greatest enemy of knowledge is not ignorance, it is the illusion of knowledge". Stephen Hawking, 1942- 2018
This document is outdated. If you cause a stack overflow yourself (outside a catch block) (not throwing the exception mind you, but real unbounded recursion) VS will stop and show you the stack. Many a times it helped me in the recent past! ;) Otherwise yeah, one could never catch and terminate such an exception. I knew that too. Doesn't help though! ;P
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
-
It's exceptions all the way down.
This space for rent
Boom! :laugh:
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
-
Breakpoint is not a problem.. But why would you put a breakpoint there if you didn't know the bug was there in the first place? That was my problem! Only 600 files changed... Had to the find the wrong change.... Didn't have the insight to put the breakpoint in the right spot right away! Now, now, I wonder, how come it was so hard for you to understand that? I think I might not have make myself very clear.. not sure though how to improve my communication though... Any tips?
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
Super Lloyd wrote:
That was my problem! Only 600 files changed...
All of them using recursion? :)
Super Lloyd wrote:
Didn't have the insight to put the breakpoint in the right spot right away!
If you can reproduce the error, or have a log that shows which method is executed, you'd at least have had a starting point. Then you step through the code.
Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^] "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
-
I had the following code in my app. Turns out you just CAN'T debug that code. At least with Visual Studio 2017, It will crash your process instantly and you will be left without any clue as to what was wrong!! Gotta report that to Microsoft.. Meanwhile, behold the evilest safe C# code that can be!
class Program { static void Main(string\[\] args) { try { Fail(); } catch (Exception ex) { Log(ex); } } static void Fail() { throw new NotSupportedException("You Fool!"); } static void Log(Exception ex) { var sb = new StringBuilder(); Log(ex); Console.WriteLine($"Problem: {sb}"); } }
[EDIT] To clarify, of course this code is buggy, it's a bug repro. But most remarkably the program just crash without hint from Visual Studio. Even if you ask Visual Studio to stop on StackOverflowException, it won't! [EDIT2] Setting breakpoints is not the problem... But why would you put a breakpoint there if you didn't know the bug was there in the first place? FYI it's about 1 month of work before this bug came to light!
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
Actually, when you think about it, actually managing to catch an exception in an exception handler that is itself creating a stack overflow, well, that would be impressive.
Latest Article - Building a Prototype Web-Based Diagramming Tool with SVG and Javascript Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802
-
To iterate is human, to recurse divine. But not in this case. :-) Of course it does not stop anymore. The process is too busy spiraling down to its death and after that it does not break to report anything. The debugging session is over and the vultures are eating what's left of your process. Would you expect one of the self driving cars to bring you to the hospital after hitting a tree? :-)
I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.
CodeWraith wrote:
Would you expect one of the self driving cars to bring you to the hospital after hitting a tree?
That's a great analogy. The creation of good strong analogies which lead others to understand things is indication of superior intelligence. Did you steal that analogy from someone else? :rolleyes: See how I set you up? The creation of a setup with an ending punch line is an indication of genius. Someone else gave me the set up and punchline. :laugh: See how I used self-deprecating humor here? It's an indication of superior genius. :laugh:
-
Super Lloyd wrote:
That was my problem! Only 600 files changed...
All of them using recursion? :)
Super Lloyd wrote:
Didn't have the insight to put the breakpoint in the right spot right away!
If you can reproduce the error, or have a log that shows which method is executed, you'd at least have had a starting point. Then you step through the code.
Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^] "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
Eddy Vluggen wrote:
All of them using recursion? :)
quick questwion, how many method in your code use recusion right now? are you sure? Yeah, just as I thought! ;P
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
-
Actually, when you think about it, actually managing to catch an exception in an exception handler that is itself creating a stack overflow, well, that would be impressive.
Latest Article - Building a Prototype Web-Based Diagramming Tool with SVG and Javascript Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802
Perhaps, indeed. But that would still be handy! :)
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
-
Eddy Vluggen wrote:
All of them using recursion? :)
quick questwion, how many method in your code use recusion right now? are you sure? Yeah, just as I thought! ;P
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
Two in the current codebase. Yes, very sure, as I wrote it. Are you saying you are unsure of what code you are writing? :laugh:
Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^] "If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
-
I had the following code in my app. Turns out you just CAN'T debug that code. At least with Visual Studio 2017, It will crash your process instantly and you will be left without any clue as to what was wrong!! Gotta report that to Microsoft.. Meanwhile, behold the evilest safe C# code that can be!
class Program { static void Main(string\[\] args) { try { Fail(); } catch (Exception ex) { Log(ex); } } static void Fail() { throw new NotSupportedException("You Fool!"); } static void Log(Exception ex) { var sb = new StringBuilder(); Log(ex); Console.WriteLine($"Problem: {sb}"); } }
[EDIT] To clarify, of course this code is buggy, it's a bug repro. But most remarkably the program just crash without hint from Visual Studio. Even if you ask Visual Studio to stop on StackOverflowException, it won't! [EDIT2] Setting breakpoints is not the problem... But why would you put a breakpoint there if you didn't know the bug was there in the first place? FYI it's about 1 month of work before this bug came to light!
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
I'm using VS2017 and it works as expected
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
-
I'm using VS2017 and it works as expected
If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.
-
CodeWraith wrote:
Would you expect one of the self driving cars to bring you to the hospital after hitting a tree?
That's a great analogy. The creation of good strong analogies which lead others to understand things is indication of superior intelligence. Did you steal that analogy from someone else? :rolleyes: See how I set you up? The creation of a setup with an ending punch line is an indication of genius. Someone else gave me the set up and punchline. :laugh: See how I used self-deprecating humor here? It's an indication of superior genius. :laugh:
raddevus wrote:
Did you steal that analogy from someone else? :rolleyes:
No. What do you think? I just have some experience with hitting trees with cars.
I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.
-
raddevus wrote:
Did you steal that analogy from someone else? :rolleyes:
No. What do you think? I just have some experience with hitting trees with cars.
I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.
-
I had the following code in my app. Turns out you just CAN'T debug that code. At least with Visual Studio 2017, It will crash your process instantly and you will be left without any clue as to what was wrong!! Gotta report that to Microsoft.. Meanwhile, behold the evilest safe C# code that can be!
class Program { static void Main(string\[\] args) { try { Fail(); } catch (Exception ex) { Log(ex); } } static void Fail() { throw new NotSupportedException("You Fool!"); } static void Log(Exception ex) { var sb = new StringBuilder(); Log(ex); Console.WriteLine($"Problem: {sb}"); } }
[EDIT] To clarify, of course this code is buggy, it's a bug repro. But most remarkably the program just crash without hint from Visual Studio. Even if you ask Visual Studio to stop on StackOverflowException, it won't! [EDIT2] Setting breakpoints is not the problem... But why would you put a breakpoint there if you didn't know the bug was there in the first place? FYI it's about 1 month of work before this bug came to light!
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
Are you catching exceptions when they are thrown or only after they are dealt with? If it is the latter, I think that even if you want to catch StackOverflowException's, it will not work because there's no more stack to let you do anything and it is probably using something like Environment.FailFast(). [Environment.FailFast Method (String) (System)](https://msdn.microsoft.com/en-us/library/ms131100(v=vs.110).aspx)
-
CodeWraith wrote:
Would you expect one of the self driving cars to bring you to the hospital after hitting a tree?
That would be a handy feature! :-D
A new .NET Serializer All in one Menu-Ribbon Bar Taking over the world since 1371!
Would be a handy feature, if it stops hittings trees on the way to the hospital.