Thread overview | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
July 19, 2009 [Issue 3192] New: asm in a anonymous delegate crash the compiler | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=3192 Summary: asm in a anonymous delegate crash the compiler Product: D Version: 1.046 Platform: All OS/Version: All Status: NEW Severity: blocker Priority: P2 Component: DMD AssignedTo: nobody@puremagic.com ReportedBy: lifc0@yahoo.com.cn below lines crash dmd 1.046/2.031 on linux and window platfrom: void func (void delegate () callback) { callback(); } void main () { func(() { asm{ int 3; }; }); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 20, 2009 [Issue 3192] Segfault(iasm.c) asm in a anonymous delegate | ||||
---|---|---|---|---|
| ||||
Posted in reply to lifc0@yahoo.com.cn | http://d.puremagic.com/issues/show_bug.cgi?id=3192 Don <clugdbug@yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |clugdbug@yahoo.com.au Summary|asm in a anonymous delegate |Segfault(iasm.c) asm in a |crash the compiler |anonymous delegate Severity|blocker |major --- Comment #1 from Don <clugdbug@yahoo.com.au> 2009-07-20 00:26:41 PDT --- Reduced test case: void delegate () foo = (){ asm{ int 3; }}; This is segfaulting in iasm.c (line 4269 in DMD2). if( sc->func->type->nextOf()->isScalar()) // segfaults here: nextOf() is null. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 20, 2009 [Issue 3192] Segfault(iasm.c) asm in a anonymous delegate | ||||
---|---|---|---|---|
| ||||
Posted in reply to lifc0@yahoo.com.cn | http://d.puremagic.com/issues/show_bug.cgi?id=3192 Don <clugdbug@yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch --- Comment #2 from Don <clugdbug@yahoo.com.au> 2009-07-20 00:50:55 PDT --- This patch is enough to fix the segfault, and allow the code to compile. I'm not sure if it's correct that nextOf() is null, though -- there may be a deeper problem here. iasm.c line 4269. (in Statement *AsmStatement::semantic(Scope *sc)): asmstate.bReturnax = 1; - if (sc->func->type->nextOf()->isscalar()) + if (sc->func->type->nextOf() && sc->func->type->nextOf()->isscalar()) asmstate.bReturnax = 0; -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 20, 2009 [Issue 3192] Segfault(iasm.c) asm in a anonymous delegate | ||||
---|---|---|---|---|
| ||||
Posted in reply to lifc0@yahoo.com.cn | http://d.puremagic.com/issues/show_bug.cgi?id=3192 Walter Bright <bugzilla@digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bugzilla@digitalmars.com --- Comment #3 from Walter Bright <bugzilla@digitalmars.com> 2009-07-20 02:24:23 PDT --- For inferring function return type, the nextOf() is null. That would be a problem here, but we never use bReturnax anyway, so just #if out the code. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 20, 2009 [Issue 3192] Segfault(iasm.c) asm in a anonymous delegate | ||||
---|---|---|---|---|
| ||||
Posted in reply to lifc0@yahoo.com.cn | http://d.puremagic.com/issues/show_bug.cgi?id=3192 --- Comment #4 from Don <clugdbug@yahoo.com.au> 2009-07-20 02:38:02 PDT --- (In reply to comment #3) > For inferring function return type, the nextOf() is null. It'd be great if you could put that in a comment in the definition of nextOf(). I'd never been sure when it's supposed to be non-null, it's one of the least obvious things in the code. Should it become non-null in a later semantic pass? Also a comment about the cto, ito, sto members of type would be really useful. When should they be non-null? In a great many of the compiler bugs I've looked at, they're null, but I've not been sure whether the bug is that they're null, or that other code is not dealing with the case that they're null. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
July 20, 2009 Re: [Issue 3192] Segfault(iasm.c) asm in a anonymous delegate | ||||
---|---|---|---|---|
| ||||
Posted in reply to Don | I'll put some comments in. |
September 03, 2009 [Issue 3192] Segfault(iasm.c) asm in a anonymous delegate | ||||
---|---|---|---|---|
| ||||
Posted in reply to lifc0@yahoo.com.cn | http://d.puremagic.com/issues/show_bug.cgi?id=3192 Walter Bright <bugzilla@digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED --- Comment #5 from Walter Bright <bugzilla@digitalmars.com> 2009-09-03 13:27:02 PDT --- Fixed dmd 1.047 and 2.032 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
Copyright © 1999-2021 by the D Language Foundation