www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 4750] New: fail_compilation/fail225.d causes dmd to segv

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4750

           Summary: fail_compilation/fail225.d causes dmd to segv
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: braddr puremagic.com



---
to repro, from $(DMD_SVN_ROOT)/src/test:

make test_results/fail_compilation/fail225.d.out

or:

../src/dmd -Ifail_compilation -odtest_results/fail_compilation
-oftest_results/fail_compilation/fail225 -c fail_compilation/fail225.d

The code:

struct Struct { 
        char* chptr; 
}

void main()
{
        char ch = 'd';
        invariant Struct iStruct = {1, &ch};
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 29 2010
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4750




I cannot reproduce this (on Windows). I tried 2.048, and svn 646, svn 647, svn
648, svn 651.
In every case, I get:

bad.d(18): Error: cannot implicitly convert expression (1) of type int to char*
bad.d(18): Error: too many initializers for Struct
bad.d(18): Error: variable bad.main.iStruct is not a static and cannot have
stat
ic initializer

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 30 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4750




---
I'll sync up tonight and re-verify on linux.  If it segv's still, I'll dig into
what's up.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 30 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4750




---
ok, tested on linux with r652:

$ gdb --args ../src/dmd -Ifail_compilation -odtest_results/fail_compilation
-oftest_results/fail_compilation/fail225 -c fail_compilation/fail225.d

fail_compilation/fail225.d(8): Error: cannot implicitly convert expression (1)
of type int to char*
fail_compilation/fail225.d(8): Error: too many initializers for Struct

Program received signal SIGSEGV, Segmentation fault.
0x080b322c in Type::isImmutable (this=0x0) at mtype.h:255
255         int isImmutable()   { return mod & MODimmutable; }

(gdb) up

381         if (isImmutable())
(gdb) 

t=0x8242f78) at cast.c:433
433                     te = te->invariantOf();
(gdb) print te
$1 = (Type *) 0x0
(gdb) print t->mod
$2 = 4 '\004'
(gdb) print *e
$3 = {
  <Object> = {
    _vptr.Object = 0x81c5ee8
  }, 
  members of Expression: 
  loc = {
    filename = 0x820e188 "fail_compilation/fail225.d", 
    linnum = 8
  }, 
  op = TOKaddress, 
  type = 0x0, 
  size = 28 '\034', 
  parens = 0 '\000'
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 30 2010
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4750




---
I just re-tried this one.  It still fails on linux but not on windows.  Odd.





t=0x8255a18) at cast.c:429

declaration.c:1175

expression.c:4707

statement.c:256

statement.c:483

func.c:1239




t=0x8255a18) at cast.c:429
429                 te = te->castMod(t->mod)

te is null
e->toChars() --> &ch

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 13 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4750




---
Ok, te is null in windows as well, but for whatever reason, it's not seg
faulting.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 13 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4750




---
Created an attachment (id=908)
fix a few error handling paths

Several of the error paths in StructInitializer::semantic fail to set errors
which can lead to continuing to work with half built objects.

I'm not sure this is the right fix, but it does fix the segv produced by the
dmd failure test fail225.d and doesn't break any existing tests.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 13 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4750


Brad Roberts <braddr puremagic.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
         AssignedTo|nobody puremagic.com        |bugzilla digitalmars.com


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 13 2011
prev sibling next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4750




---
see also: https://github.com/D-Programming-Language/dmd/pull/8

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 13 2011
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=4750


Brad Roberts <braddr puremagic.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED



---
https://github.com/D-Programming-Language/dmd/commit/e199b4858775a417460ddea598aaf2f4f114dcae

https://github.com/D-Programming-Language/dmd/commit/e3a7ca4f8c3c922b23d8d897a260b21849525b5f

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 03 2011