April 28, 2010 [Issue 4130] DMD crashes if it has to compile a project which is too complex | ||||
---|---|---|---|---|
| ||||
Posted in reply to Torsten | http://d.puremagic.com/issues/show_bug.cgi?id=4130 --- Comment #10 from Torsten <Globe13.Trotter17@gmx.de> 2010-04-28 10:59:19 PDT --- I got the same error again. I put "bt full" to my run script but I got no further output. I do not know much about gdb so I do not know how to extract more information. GNU gdb 6.8 Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-pc-linux-gnu"... (gdb) Signal Stop Print Pass to program Description SIGUSR1 No No Yes User defined signal 1 (gdb) Signal Stop Print Pass to program Description SIGUSR2 No No Yes User defined signal 2 (gdb) Starting program: (very long line) Program received signal SIGSEGV, Segmentation fault. 0x08180c4d in obj_comdat (s=0x1e04c464) at backend/elfobj.c:1489 1489 SegData[s->Sseg]->SDsym = s; Current language: auto; currently c++ (gdb) quit The program is running. Exit anyway? (y or n) [answered Y; input not from terminal] -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
April 28, 2010 [Issue 4130] DMD crashes if it has to compile a project which is too complex | ||||
---|---|---|---|---|
| ||||
Posted in reply to Torsten | http://d.puremagic.com/issues/show_bug.cgi?id=4130 --- Comment #11 from Robert Clipsham <robert@octarineparrot.com> 2010-04-28 19:05:45 BST --- GDB isn't picking up the bt full, try invoking it with: gdb --args dmd $OPTIONS $FILES Where $OPTIONS and $FILES are the usual arguments you pass to dmd when compiling. When gdb loads, type 'r' to run dmd, and when it segfaults type 'bt full', followed by 'quit'. All of these are, of course, without the quotes. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
April 28, 2010 [Issue 4130] DMD crashes if it has to compile a project which is too complex | ||||
---|---|---|---|---|
| ||||
Posted in reply to Torsten | http://d.puremagic.com/issues/show_bug.cgi?id=4130 --- Comment #12 from Torsten <Globe13.Trotter17@gmx.de> 2010-04-28 12:00:50 PDT --- Now a got some more information: (gdb) p s->Sseg $2 = -32768 You can see that p s->Sseg is negative. Either I made an error when I recompiled dmd or there is another place where short has to be changed to int. Just like in changeset 456 my line in cc.h is: #if TX86 int Sseg; // segment index The complete output: Program received signal SIGSEGV, Segmentation fault. 0x08180c4d in obj_comdat (s=0x1d141464) at backend/elfobj.c:1489 1489 SegData[s->Sseg]->SDsym = s; Current language: auto; currently c++ (gdb) bt full #0 0x08180c4d in obj_comdat (s=0x1d141464) at backend/elfobj.c:1489 prefix = 0x81b078f ".data." type = 1 flags = 3 #1 0x0812cd85 in outdata (s=0x1d141464) at backend/out.c:302 dt = (dt_t *) 0x0 datasize = 76 a = 3220481112 offset = 3220481064 flags = 0 p = 0x2 <Address 0x2 out of bounds> tls = 0 dtstart = (dt_t *) 0x17961d74 seg = 134522191 ty = 35 #2 0x08168dd4 in ClassDeclaration::toObjFile (this=0xbf61720, multiobj=0) at toobj.c:636 offset = 76 dt = (dt_t *) 0x17961d74 flags = 44 sinit = (Symbol *) 0x1d1c8884 scclass = 7 '\a' __PRETTY_FUNCTION__ = "virtual void ClassDeclaration::toObjFile(int)" cd = (class ClassDeclaration *) 0x0 bvtbl = {<Object> = {_vptr.Object = 0x81837a8}, dim = 0, allocdim = 0, data = 0x0} i = 0 name = 0x1d1d3230 "framework.ag.db.DFForeignColumn.DFForeignColumn!(AGGoodsCost,AGGoodsCost).DFForeignColumn" namelen = 89 #3 0x0815afff in TemplateInstance::toObjFile (this=0x9f5afd8, multiobj=0) at template.c:4274 s = (class Dsymbol *) 0xbf61720 i = 0 #4 0x08168311 in ClassDeclaration::toObjFile (this=0x9f598d0, multiobj=0) at toobj.c:241 member = (class Dsymbol *) 0x9f5afd8 offset = 487285552 dt = (dt_t *) 0xbff4a5b8 flags = 12 sinit = (Symbol *) 0x9 scclass = 6 '\006' __PRETTY_FUNCTION__ = "virtual void ClassDeclaration::toObjFile(int)" cd = (class ClassDeclaration *) 0x1 bvtbl = {<Object> = {_vptr.Object = 0x27}, dim = 144787360, allocdim = 0, data = 0x0} i = 102 name = 0x10 <Address 0x10 out of bounds> namelen = 166954312 #5 0x080f9087 in Module::genobjfile (this=0x8a11c00, multiobj=0) at glue.c:267 member = (class Dsymbol *) 0x9f598d0 i = 20 __PRETTY_FUNCTION__ = "void Module::genobjfile(int)" #6 0x081160dd in main (argc=385, argv=0x89d8120) at mars.c:1234 firstmodule = 0 aw = (AsyncRead *) 0x8a14988 anydocfiles = 0 library = (Library *) 0x0 files = {<Object> = {_vptr.Object = 0x81837a8}, dim = 371, allocdim = 382, data = 0x89d77d8} p = 0xbff50502 "DSocket.d" m = (class Module *) 0x8a11c00 argcstart = 383 status = 0 ---Type <return> to continue, or q <return> to quit--- setdebuglib = 0 modules = {<Object> = {_vptr.Object = 0x81837a8}, dim = 371, allocdim = 371, data = 0x89e0ab8} __PRETTY_FUNCTION__ = "int main(int, char**)" i = 350 libmodules = {<Object> = {_vptr.Object = 0x81837a8}, dim = 0, allocdim = 0, data = 0x0} (gdb) p s $1 = (Symbol *) 0x1d141464 (gdb) p s->Sseg $2 = -32768 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
April 28, 2010 [Issue 4130] DMD crashes if it has to compile a project which is too complex | ||||
---|---|---|---|---|
| ||||
Posted in reply to Torsten | http://d.puremagic.com/issues/show_bug.cgi?id=4130 --- Comment #13 from Torsten <Globe13.Trotter17@gmx.de> 2010-04-28 12:43:06 PDT --- I made a mistake while compiling dmd: I did not call "make -f linux.mak clean" so the old object files have been used. Now dmd crashes at a different position ("seg" is still negative): Program received signal SIGSEGV, Segmentation fault. 0x081824bf in reftoident (seg=-32768, offset=28, s=0x1def161c, val=0, flags=16) at backend/elfobj.c:2399 2399 int segtyp = MAP_SEG2TYP(seg); Current language: auto; currently c++ (gdb) bt all No symbol "all" in current context. (gdb) bt full #0 0x081824bf in reftoident (seg=-32768, offset=28, s=0x1def161c, val=0, flags=16) at backend/elfobj.c:2399 buf = (Outbuffer *) 0x2fd94d relinfo = 3214229704 refseg = 4075508 segtyp = 1 ty = 502252264 external = true #1 0x08095a29 in searchfixlist (s=0x1def161c) at backend/cod3.c:4232 lp = (fixlist **) 0x81c1f04 p = (fixlist *) 0x1defc7c8 #2 0x08180c5d in obj_comdat (s=0x1def161c) at backend/elfobj.c:1493 prefix = 0x81b070f ".data." type = 1 flags = 3 #3 0x0812cd6a in outdata (s=0x1def161c) at backend/out.c:302 dt = (dt_t *) 0x0 datasize = 92 a = 0 offset = 76 flags = 16 p = 0x2 <Address 0x2 out of bounds> tls = 0 dtstart = (dt_t *) 0x1901f9f8 seg = 32768 ty = 90 #4 0x08168f2d in ClassDeclaration::toObjFile (this=0xcc8a720, multiobj=0) at toobj.c:701 offset = 76 dt = (dt_t *) 0x1901f9f8 flags = 44 sinit = (Symbol *) 0x1def1884 scclass = 7 '\a' __PRETTY_FUNCTION__ = "virtual void ClassDeclaration::toObjFile(int)" cd = (class ClassDeclaration *) 0x0 bvtbl = {<Object> = {_vptr.Object = 0x8183728}, dim = 0, allocdim = 0, data = 0x0} i = 23 name = 0x1defc230 "framework.ag.db.DFForeignColumn.DFForeignColumn!(AGGoodsCost,AGGoodsCost).DFForeignColumn" namelen = 89 #5 0x0815afd3 in TemplateInstance::toObjFile (this=0xac83fd8, multiobj=0) at template.c:4274 s = (class Dsymbol *) 0xcc8a720 i = 0 #6 0x081682e5 in ClassDeclaration::toObjFile (this=0xac828d0, multiobj=0) at toobj.c:241 member = (class Dsymbol *) 0xac83fd8 offset = 501084976 dt = (dt_t *) 0xbf954358 flags = 12 sinit = (Symbol *) 0x9 scclass = 6 '\006' __PRETTY_FUNCTION__ = "virtual void ClassDeclaration::toObjFile(int)" cd = (class ClassDeclaration *) 0x1 bvtbl = {<Object> = {_vptr.Object = 0x27}, dim = 158586784, allocdim = 0, data = 0x0} i = 102 name = 0x10 <Address 0x10 out of bounds> namelen = 180753736 #7 0x080f9073 in Module::genobjfile (this=0x973ac00, multiobj=0) at glue.c:267 member = (class Dsymbol *) 0xac828d0 i = 20 __PRETTY_FUNCTION__ = "void Module::genobjfile(int)" ---Type <return> to continue, or q <return> to quit--- #8 0x081160c9 in main (argc=385, argv=0x9701120) at mars.c:1234 firstmodule = 0 aw = (AsyncRead *) 0x973d988 anydocfiles = 0 library = (Library *) 0x0 files = {<Object> = {_vptr.Object = 0x8183728}, dim = 371, allocdim = 382, data = 0x97007d8} p = 0xbf959502 "DSocket.d" m = (class Module *) 0x973ac00 argcstart = 383 status = 0 setdebuglib = 0 modules = {<Object> = {_vptr.Object = 0x8183728}, dim = 371, allocdim = 371, data = 0x9709ab8} __PRETTY_FUNCTION__ = "int main(int, char**)" i = 350 libmodules = {<Object> = {_vptr.Object = 0x8183728}, dim = 0, allocdim = 0, data = 0x0} (gdb) (gdb) whatis seg type = int (gdb) p seg $1 = -32768 (gdb) p s $2 = (Symbol *) 0x1def161c (gdb) p s->Sseg $3 = 32769 (gdb) whatis s->Sseg type = int (gdb) p p->Lseg No symbol "p" in current context. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
April 29, 2010 [Issue 4130] DMD crashes if it has to compile a project which is too complex | ||||
---|---|---|---|---|
| ||||
Posted in reply to Torsten | http://d.puremagic.com/issues/show_bug.cgi?id=4130 --- Comment #14 from Torsten Sommerfeld <Globe13.Trotter17@gmx.de> 2010-04-28 22:43:49 PDT --- After I have modified the file cod3.c changing struct fixlist { symbol *Lsymbol; // symbol we don't know about short Lseg; // where the fixup is going (CODE or DATA, never UDATA) ... }; to struct fixlist { symbol *Lsymbol; // symbol we don't know about int Lseg; // where the fixup is going (CODE or DATA, never UDATA) ... }; dmd is able to compile successfully. However, now gcc(ld) failes with /usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 000000000804a8b0 Program received signal SIGSEGV, Segmentation fault. 0x00bff5f7 in ?? () from /usr/lib/libbfd-2.20.so (gdb) bt #0 0x00bff5f7 in ?? () from /usr/lib/libbfd-2.20.so #1 0x00c9039c in ?? () from /usr/lib/libbfd-2.20.so #2 0x089a7258 in ?? () #3 0x089a95f0 in ?? () #4 0xb5e57008 in ?? () #5 0x0000175c in ?? () #6 0x00000000 in ?? () So it seems there was a reason the data type was short and not int Any ideas? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
April 29, 2010 [Issue 4130] DMD crashes if it has to compile a project which is too complex | ||||
---|---|---|---|---|
| ||||
Posted in reply to Torsten | http://d.puremagic.com/issues/show_bug.cgi?id=4130 --- Comment #15 from Walter Bright <bugzilla@digitalmars.com> 2010-04-28 22:52:26 PDT --- Sorry I missed the Lseg, that should be int too. Another legacy of it being a 16 bit compiler. I don't know why it fails in ld, I'm trying out the test suite on Linux now. -- 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