digitalmars.D.bugs - DMD-0.164 regressions
- Thomas Kuehne (90/90) Aug 17 2006 -----BEGIN PGP SIGNED MESSAGE-----
- Walter Bright (14/14) Aug 17 2006 class_26_A and class_26_B are invalid code. Both return a delegate that
- Walter Bright (2/2) Aug 17 2006 Scratch that, I think I found a way to make it work. Leave the test
- Thomas Kuehne (10/12) Aug 18 2006 -----BEGIN PGP SIGNED MESSAGE-----
- Thomas Kuehne (10/24) Aug 18 2006 -----BEGIN PGP SIGNED MESSAGE-----
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 64 new regressions between 0.163 and 0.164: PASS -> FAIL: run/c/class_26_A.d PASS -> ERROR: run/c/class_26_A.d (-g) PASS -> FAIL: run/c/class_26_A.d (-inline) PASS -> FAIL: run/c/class_26_A.d (-fPIC) PASS -> FAIL: run/c/class_26_A.d (-O) PASS -> ERROR: run/c/class_26_A.d (-release) PASS -> ERROR: run/c/class_26_A.d (-g -inline) PASS -> ERROR: run/c/class_26_A.d (-g -fPIC) PASS -> FAIL: run/c/class_26_A.d (-g -O) PASS -> ERROR: run/c/class_26_A.d (-g -release) PASS -> FAIL: run/c/class_26_A.d (-inline -fPIC) PASS -> FAIL: run/c/class_26_A.d (-inline -O) PASS -> ERROR: run/c/class_26_A.d (-inline -release) PASS -> FAIL: run/c/class_26_A.d (-fPIC -O) PASS -> ERROR: run/c/class_26_A.d (-fPIC -release) PASS -> ERROR: run/c/class_26_A.d (-O -release) PASS -> ERROR: run/c/class_26_A.d (-g -inline -fPIC) PASS -> FAIL: run/c/class_26_A.d (-g -inline -O) PASS -> ERROR: run/c/class_26_A.d (-g -inline -release) PASS -> FAIL: run/c/class_26_A.d (-g -fPIC -O) PASS -> ERROR: run/c/class_26_A.d (-g -fPIC -release) PASS -> ERROR: run/c/class_26_A.d (-g -O -release) PASS -> FAIL: run/c/class_26_A.d (-inline -fPIC -O) PASS -> ERROR: run/c/class_26_A.d (-inline -fPIC -release) PASS -> ERROR: run/c/class_26_A.d (-inline -O -release) PASS -> ERROR: run/c/class_26_A.d (-fPIC -O -release) PASS -> FAIL: run/c/class_26_A.d (-g -inline -fPIC -O) PASS -> ERROR: run/c/class_26_A.d (-g -inline -fPIC -release) PASS -> ERROR: run/c/class_26_A.d (-g -fPIC -O -release) PASS -> ERROR: run/c/class_26_A.d (-inline -fPIC -O -release) PASS -> ERROR: run/c/class_26_A.d (-g -inline -fPIC -O -release) PASS -> ERROR: run/c/class_26_A.d (-g -inline -O -release) PASS -> FAIL: run/c/class_26_B.d PASS -> ERROR: run/c/class_26_B.d (-g) PASS -> FAIL: run/c/class_26_B.d (-inline) PASS -> FAIL: run/c/class_26_B.d (-fPIC) PASS -> FAIL: run/c/class_26_B.d (-O) PASS -> ERROR: run/c/class_26_B.d (-release) PASS -> ERROR: run/c/class_26_B.d (-g -inline) PASS -> ERROR: run/c/class_26_B.d (-g -fPIC) PASS -> FAIL: run/c/class_26_B.d (-g -O) PASS -> ERROR: run/c/class_26_B.d (-g -release) PASS -> FAIL: run/c/class_26_B.d (-inline -fPIC) PASS -> FAIL: run/c/class_26_B.d (-inline -O) PASS -> ERROR: run/c/class_26_B.d (-inline -release) PASS -> FAIL: run/c/class_26_B.d (-fPIC -O) PASS -> ERROR: run/c/class_26_B.d (-fPIC -release) PASS -> ERROR: run/c/class_26_B.d (-O -release) PASS -> ERROR: run/c/class_26_B.d (-g -inline -fPIC) PASS -> FAIL: run/c/class_26_B.d (-g -inline -O) PASS -> ERROR: run/c/class_26_B.d (-g -inline -release) PASS -> FAIL: run/c/class_26_B.d (-g -fPIC -O) PASS -> ERROR: run/c/class_26_B.d (-g -fPIC -release) PASS -> ERROR: run/c/class_26_B.d (-g -O -release) PASS -> FAIL: run/c/class_26_B.d (-inline -fPIC -O) PASS -> ERROR: run/c/class_26_B.d (-inline -fPIC -release) PASS -> ERROR: run/c/class_26_B.d (-inline -O -release) PASS -> ERROR: run/c/class_26_B.d (-fPIC -O -release) PASS -> FAIL: run/c/class_26_B.d (-g -inline -fPIC -O) PASS -> ERROR: run/c/class_26_B.d (-g -inline -fPIC -release) PASS -> ERROR: run/c/class_26_B.d (-g -fPIC -O -release) PASS -> ERROR: run/c/class_26_B.d (-inline -fPIC -O -release) PASS -> ERROR: run/c/class_26_B.d (-g -inline -fPIC -O -release) PASS -> ERROR: run/c/class_26_B.d (-g -inline -O -release) Known internal compiler errors with messages: (for details see http://dstress.kuehne.cn/polishing/dmd-internal.txt) dmd-0.164.bin: expression.c:5739: virtual Expression* MinAssignExp::semantic(Scope*): Assertion `e2->type->isfloating()' failed. dmd-0.164.bin: expression.c:725: virtual void Expression::toMangleBuffer(OutBuffer*): Assertion `0' failed. dmd-0.164.bin: func.c:475: virtual void FuncDeclaration::semantic3(Scope*): Assertion `0' failed. dmd-0.164.bin: template.c:2170: TemplateDeclaration* TemplateInstance::findTemplateDeclaration(Scope*): Assertion `s->parent' failed. dmd-0.164.bin: tocsym.c:143: virtual Symbol* VarDeclaration::toSymbol(): Assertion `!needThis()' failed. dmd-0.164.bin: toobj.c:194: virtual void ClassDeclaration::toObjFile(): Assertion `!scope' failed. Internal error: ../ztc/cgcod.c 175 Internal error: ../ztc/cgcod.c 562 Internal error: ../ztc/cod1.c 1656 Summary: (288K) http://dstress.kuehne.cn/www/dstress.html Details: (629K) http://dstress.kuehne.cn/www/dmd-0.164.html Log: (1,6M) http://dstress.kuehne.cn/raw_results/linux-amd64_dmd-0.164.log.gz Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFE5H20LK5blCcjpWoRAslFAKChQnq8Dmp0bbkfsM372W5U/ee1pgCfRahe RsOIxfSpFEBuBURZlb93XC8= =wtnS -----END PGP SIGNATURE-----
Aug 17 2006
class_26_A and class_26_B are invalid code. Both return a delegate that relies on the stack frame of foo() existing, but the delegate is called after foo() has exited. More technically, 1. dg contains the 'this' pointer for the instance of class C 2. the instance of class C contains a member that is the frame pointer for the stack instance of foo() 3. the stack instance of foo() contains a frame pointer for the stack instance of main() dg(), to get at main.status, has to walk back through 1, 2 and 3. After foo() has exited, (2) points to garbage, and so cannot get a correct value for (3), and failure ensues. This will be an excellent test case when D implements the ability for delegates to 'escape', but that won't be for 1.0.
Aug 17 2006
Scratch that, I think I found a way to make it work. Leave the test cases unchanged in dstress.
Aug 17 2006
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Walter Bright schrieb am 2006-08-18:Scratch that, I think I found a way to make it work. Leave the test cases unchanged in dstress.Glad to know *g* Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFE5XfdLK5blCcjpWoRAiX9AKCWAGgwbD8nQV/6Jr8hGIHSr1ZXyACZAd9c wpcT0MfvReehlojH6D5Q0aM= =o7TT -----END PGP SIGNATURE-----
Aug 18 2006
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Walter Bright schrieb am 2006-08-17:class_26_A and class_26_B are invalid code. Both return a delegate that relies on the stack frame of foo() existing, but the delegate is called after foo() has exited. More technically, 1. dg contains the 'this' pointer for the instance of class C 2. the instance of class C contains a member that is the frame pointer for the stack instance of foo() 3. the stack instance of foo() contains a frame pointer for the stack instance of main() dg(), to get at main.status, has to walk back through 1, 2 and 3. After foo() has exited, (2) points to garbage, and so cannot get a correct value for (3), and failure ensues. This will be an excellent test case when D implements the ability for delegates to 'escape', but that won't be for 1.0.Thanks, fixed Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFE5QXeLK5blCcjpWoRArRiAKCA8GFyIPwujy0eJyZCYv5XH1U5OwCfakhB m2EUUkreSHB6ZEzytvUaReA= =mObr -----END PGP SIGNATURE-----
Aug 18 2006