[Issue 4385] Uncaught exceptions should dump a core
http://d.puremagic.com/issues/show_bug.cgi?id=4385 --- Comment #3 from Leandro Lucarella 2010-07-21 07:53:06 PDT --- (In reply to comment #2) > Oh you're right. It works in C++ because C++ doesn't auto-report uncaught > exceptions, GCC does, when using the verbose termination handler (which has been the default for some time now): http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt02ch06s02.html > so when one passes out of main the process exits in some special > manner that preserves the call stack. What I don't get is why this works with > object dtors that are run as the stack unwinds though. In any case, druntime > has an extern (C) bool called rt_trapExceptions that is used by debuggers to > enable some of this functionality, but it has to be set very early in the > startup process. I guess I'll have to think about this one some more. OK, thanks. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 4385] Uncaught exceptions should dump a core
http://d.puremagic.com/issues/show_bug.cgi?id=4385 --- Comment #2 from Sean Kelly 2010-07-21 07:13:04 PDT --- Oh you're right. It works in C++ because C++ doesn't auto-report uncaught exceptions, so when one passes out of main the process exits in some special manner that preserves the call stack. What I don't get is why this works with object dtors that are run as the stack unwinds though. In any case, druntime has an extern (C) bool called rt_trapExceptions that is used by debuggers to enable some of this functionality, but it has to be set very early in the startup process. I guess I'll have to think about this one some more. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---
[Issue 4385] Uncaught exceptions should dump a core
http://d.puremagic.com/issues/show_bug.cgi?id=4385 --- Comment #1 from Leandro Lucarella 2010-07-20 16:32:55 PDT --- I just saw changeset 341 (http://www.dsource.org/projects/druntime/changeset/341), thanks for giving this issue some attention. But unless I'm missing something, this change doesn't help much, because the core will be at the point the call to abort() was made, that (again unless I'm missing something) won't be deep in the call stack, where the throw was done. Having a core dumped where the *throw* was made is what is really valuable, as it let you analyze the dead program in the point where it really died. I don't know how hard would be to achieve this, I just know is possible because the C++ runtime (GCC at least) do it. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email --- You are receiving this mail because: ---