digitalmars.D.bugs - [Issue 3753] New: ICE eh.c 49: Related to exception handling and alloca.
- d-bugmail puremagic.com (30/30) Jan 29 2010 http://d.puremagic.com/issues/show_bug.cgi?id=3753
- d-bugmail puremagic.com (13/24) Jan 30 2010 http://d.puremagic.com/issues/show_bug.cgi?id=3753
- d-bugmail puremagic.com (22/22) Jan 30 2010 http://d.puremagic.com/issues/show_bug.cgi?id=3753
- d-bugmail puremagic.com (19/19) May 18 2010 http://d.puremagic.com/issues/show_bug.cgi?id=3753
- d-bugmail puremagic.com (10/10) May 18 2010 http://d.puremagic.com/issues/show_bug.cgi?id=3753
- d-bugmail puremagic.com (6/6) Jul 22 2012 http://d.puremagic.com/issues/show_bug.cgi?id=3753
- d-bugmail puremagic.com (29/29) Aug 28 2013 http://d.puremagic.com/issues/show_bug.cgi?id=3753
- d-bugmail puremagic.com (10/10) Aug 28 2013 http://d.puremagic.com/issues/show_bug.cgi?id=3753
- d-bugmail puremagic.com (12/12) Oct 05 2013 http://d.puremagic.com/issues/show_bug.cgi?id=3753
- d-bugmail puremagic.com (11/11) Oct 15 2013 http://d.puremagic.com/issues/show_bug.cgi?id=3753
- d-bugmail puremagic.com (9/9) Oct 15 2013 http://d.puremagic.com/issues/show_bug.cgi?id=3753
- d-bugmail puremagic.com (9/9) Oct 15 2013 http://d.puremagic.com/issues/show_bug.cgi?id=3753
http://d.puremagic.com/issues/show_bug.cgi?id=3753 Summary: ICE eh.c 49: Related to exception handling and alloca. Product: D Version: 2.039 Platform: Other OS/Version: Linux Status: NEW Keywords: ice-on-valid-code Severity: major Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: dsimcha yahoo.com I can't seem to reduce this one to a small test case, but I think this comment from where the assert fires at least gives a hint that it involves some combination of exceptions and alloca: // BUG: alloca() changes the stack size, which is not reflected // in the fixed eh tables. assert(!usedalloca); Also, in the (too large to post to Bugzilla) program that this issue occurred in, removing the alloca() calls and replacing them with GC.malloc() fixed the problem. This assert is in a #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS statement, so I guess it only happens on those OS's. The code that triggers it definitely works on Windows. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 29 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3753 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |clugdbug yahoo.com.auI can't seem to reduce this one to a small test case, but I think this comment from where the assert fires at least gives a hint that it involves some combination of exceptions and alloca: // BUG: alloca() changes the stack size, which is not reflected // in the fixed eh tables. assert(!usedalloca); Also, in the (too large to post to Bugzilla) program that this issue occurred in, removing the alloca() calls and replacing them with GC.malloc() fixed the problem.Are you sure you can't cut it down? Without a test case, the chance of it ever getting fixed is pretty remote (basically, you have to wait until someone else hits the same bug and files a test case). Even a huge test case would help. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 30 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3753 import core.stdc.stdlib; void main(string[] args) { try { doNothing(); } catch {} void* foo = alloca(args.length); } void doNothing() {} I've had some more time to fiddle with this and more insight into what causes it, so I've managed to get a reduced test case working. It seems like you need to do both of the following in the same function: 1. Use exception handling either explicitly or implicitly. This can include try-catch, try-finally, scope(exit), and struct destructors. 2. Use alloca, but **the number of bytes must not be a compile-time constant**. This is what was messing me up before. If you replace: void* foo = alloca(args.length); with: void* foo = alloca(8); then this bug will not be triggered. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 30 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3753 I'm including this test case from bug 4054, so that I can close it, as it is clearly another instance of the same bug. ------- import core.stdc.stdlib : alloca; class A { } void b() { scope a = new A; int l; alloca(l); goto L1; L1: ; } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 18 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3753 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |robert octarineparrot.com *** Issue 4054 has been marked as a duplicate of this issue. *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 18 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3753 --- *** Issue 4054 has been marked as a duplicate of this issue. *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jul 22 2012
http://d.puremagic.com/issues/show_bug.cgi?id=3753 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|ICE eh.c 49: Related to |ICE(eh.c): Related to |exception handling and |exception handling and |alloca. |alloca. Another test case from bug 10575 is also very simple: --- import core.stdc.stdlib : alloca; struct TheStruct { ~this() { } } void bar() { } void main() { auto s = TheStruct(); bar(); auto a = alloca(16); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 28 2013
http://d.puremagic.com/issues/show_bug.cgi?id=3753 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |maximechevalierb gmail.com *** Issue 10575 has been marked as a duplicate of this issue. *** -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 28 2013
http://d.puremagic.com/issues/show_bug.cgi?id=3753 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bugzilla digitalmars.com Version|2.039 |D2 11:12:20 PDT --- Turns assert into reasonable error message: https://github.com/D-Programming-Language/dmd/pull/2630 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 05 2013
http://d.puremagic.com/issues/show_bug.cgi?id=3753 Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/70709fa628040ad0c968904133ec71b9bbaff5d1 fix Issue 3753 - ICE(eh.c): Related to exception handling and alloca. https://github.com/D-Programming-Language/dmd/commit/1b5b2ddf9c9ec4c3e6d08d7b80207bd6a7fe47fa fix Issue 3753 - ICE(eh.c): Related to exception handling and alloca. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 15 2013
http://d.puremagic.com/issues/show_bug.cgi?id=3753 Commit pushed to 2.064 at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/98ea8217b4986bd6e5cc1ff1b6d5496dc38533cd fix Issue 3753 - ICE(eh.c): Related to exception handling and alloca. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 15 2013
http://d.puremagic.com/issues/show_bug.cgi?id=3753 Commit pushed to dmd-1.x at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/d370212fe7613788bcee7391dc733010277d7bd6 fix Issue 3753 - ICE(eh.c): Related to exception handling and alloca. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 15 2013