Thread overview
[Issue 1507] New: ICE on a variadic function
Sep 16, 2007
d-bugmail
Sep 17, 2007
d-bugmail
Sep 17, 2007
d-bugmail
Sep 17, 2007
d-bugmail
Sep 17, 2007
d-bugmail
Sep 23, 2007
d-bugmail
Oct 13, 2007
d-bugmail
Oct 23, 2007
d-bugmail
September 16, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1507

           Summary: ICE on a variadic function
           Product: DGCC aka GDC
           Version: 0.24
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: major
          Priority: P2
         Component: glue layer
        AssignedTo: dvdfrdmn@users.sf.net
        ReportedBy: onlystupidspamhere@yahoo.se


This is a simplified piece of code from Tango that segfaults the compiler (I also tested rev 159) and thus prevents using Tango:

  void c (int f, ...) { c (_arguments, _argptr, f); }


Compiler output:

$ gdc -c -v bug.d
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ./configure --prefix=/usr/local/gcc-4.1.2
--enable-languages=c,d --disable-multilib
Thread model: posix
gcc version 4.1.2 20070214 (  (gdc 0.24, using dmd 1.020))
 /usr/local/gcc-4.1.2/libexec/gcc/x86_64-unknown-linux-gnu/4.1.2/cc1d bug.d
-quiet -dumpbase bug.d -mtune=k8 -auxbase bug -version -o /tmp/ccTUEx8A.s
GNU D version 4.1.2 20070214 (  (gdc 0.24, using dmd 1.020))
(x86_64-unknown-linux-gnu)
        compiled by GNU C version 4.1.3 20070831 (prerelease) (Ubuntu
4.1.2-16ubuntu1).
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
bug.d:0: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.


-- 

September 17, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1507


dvdfrdmn@users.sf.net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
            Summary|ICE on a variadic function  |ICE on a variadic function




------- Comment #1 from dvdfrdmn@users.sf.net  2007-09-16 21:03 -------
Can you provide a self-contained example?  Thanks.


-- 

September 17, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1507





------- Comment #2 from braddr@puremagic.com  2007-09-16 22:57 -------
Jari-Matti, I just tried the one line'er you included in the original report:

  void c (int f, ...) { c (_arguments, _argptr, f); }

as bug.d with gdc built as debian package 4.1.2-16, which contains up through this set of bug fixes (it doesn't mention the specific svn revision):

gdc-4.1 (0.24-4.1.2-16) unstable; urgency=low

  * Merge debian SVN from 4.1.2-16 upload

  [Arthur Loiret]
  * svn-gdc-updates.dpatch: Update to SVN 20070829. Closes: #439836
    - d-decls.cc (uniqueName): Allow multiple static declaration with the same
      name if in a function. (SF 1783085)
    - d-codegen.cc (call): Use CommaExp correctly. (Bugzilla 1443)
    - dmd/todt.c (createTsarrayDt): Don't take quadratic time to build the
      initializer. (Bugzilla 1440)

  [Matthias Klose]
  * gdc-4.1: Loosen dependency on g++-4.1.

 -- Arthur Loiret <arthur.loiret@gmail.com>  Sat, 01 Sep 2007 00:49:23 +0200
----------------

It fails to build, but due to errors in the provided one line bit of code:

bug.d:1: function bug.c (int,...) does not match parameter types
(TypeInfo[],char*,int)
bug.d:1: Error: cannot implicitly convert expression (_arguments) of type
TypeInfo[] to int

----

Is that the exact code that caused your failure?


-- 

September 17, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1507





------- Comment #3 from onlystupidspamhere@yahoo.se  2007-09-17 05:42 -------
(In reply to comment #2)
> Jari-Matti, I just tried the one line'er you included in the original report:
> 
>   void c (int f, ...) { c (_arguments, _argptr, f); }
> 
> as bug.d with gdc built as debian package 4.1.2-16, which contains up through this set of bug fixes (it doesn't mention the specific svn revision):
> 
> gdc-4.1 (0.24-4.1.2-16) unstable; urgency=low
> 
>   * Merge debian SVN from 4.1.2-16 upload
> 
>   [Arthur Loiret]
>   * svn-gdc-updates.dpatch: Update to SVN 20070829. Closes: #439836
>     - d-decls.cc (uniqueName): Allow multiple static declaration with the same
>       name if in a function. (SF 1783085)
>     - d-codegen.cc (call): Use CommaExp correctly. (Bugzilla 1443)
>     - dmd/todt.c (createTsarrayDt): Don't take quadratic time to build the
>       initializer. (Bugzilla 1440)
> 
>   [Matthias Klose]
>   * gdc-4.1: Loosen dependency on g++-4.1.
> 
>  -- Arthur Loiret <arthur.loiret@gmail.com>  Sat, 01 Sep 2007 00:49:23 +0200

Ok, so your version is at least rev149. Are you running it in x86-64?

I can post here my installation notes if it helps:

tar xf gcc-core-4.1.2.tar.bz2
svn co https://dgcc.svn.sourceforge.net/svnroot/dgcc/trunk/ svn
cd gcc-4.1.2/gcc/
ln -s ../../svn/d .
cd ..
gcc/d/setup-gcc.sh
./configure --prefix=/usr/local/gcc-4.1.2 --enable-languages=c,d
--disable-multilib
make -j3
sudo make install
echo "void c (int f, ...) { c (_arguments, _argptr, f); }" > bug.d
/usr/local/gcc-4.1.2/bin/gdc -c bug.d

=> segmentation fault

> It fails to build, but due to errors in the provided one line bit of code:
> 
> bug.d:1: function bug.c (int,...) does not match parameter types
> (TypeInfo[],char*,int)
> bug.d:1: Error: cannot implicitly convert expression (_arguments) of type
> TypeInfo[] to int

Yes, the code in invalid so that is what I get with dmd too. I seem to have problems compiling 32bit GDC so I can only test x86_64 -version at the moment. I have no idea how to debug gdc - e.g. gdb gave no backtrace.

> Is that the exact code that caused your failure?

Yes. I tried it again by just copying the line from the bug report to a file and compiling it.

I'll try to run GDC in a Gentoo virtual machine later today to see if it fails there too.


-- 

September 17, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1507





------- Comment #4 from onlystupidspamhere@yahoo.se  2007-09-17 08:20 -------
Created an attachment (id=183)
 --> (http://d.puremagic.com/issues/attachment.cgi?id=183&action=view)
backtrace of the issue

Here's a backtrace of the issue. Please ask, if you need more detailed info.


-- 

September 23, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1507


dvdfrdmn@users.sf.net changed:

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




------- Comment #5 from dvdfrdmn@users.sf.net  2007-09-23 16:48 -------
The ICE is fixed in svn rev 163.  Tango does not build on AMD64 because it assumes va_list is a pointer.  This will be handled as a separate issue.


-- 

October 13, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1507


dvdfrdmn@users.sf.net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dlang@davidb.org




------- Comment #6 from dvdfrdmn@users.sf.net  2007-10-13 15:27 -------
*** Bug 1572 has been marked as a duplicate of this bug. ***


-- 

October 23, 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1507


pop.atry@gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |pop.atry@gmail.com




------- Comment #7 from pop.atry@gmail.com  2007-10-23 02:05 -------
*** Bug 1607 has been marked as a duplicate of this bug. ***


--