Discussion:
Strange ICE with actual GCC40 snapshot
Michael Cieslinski
2005-01-10 12:54:23 UTC
Permalink
Hello,
I get a strange ICE which doesn't occur if I either don't use optimation
flags or use -save-temps.

This ICE doesn't occur with snapshot 20041219

I build gcc from actual snapshot with "make bootstrap" and following CFLAGS:
-pipe -g -O3 -march=opteron -fmessage-length=0 -falign-loops=16
-falign-jumps=16 -falign-functions=32 -fstrict-aliasing
-fsched-interblock -ffast-math -funroll-all-loops -funit-at-a-time
-fpeel-loops -ftracer -funswitch-loops -floop-optimize2
-fmove-loop-invariants -fgcse-after-reload -frename-registers
-fmodulo-sched --param max-gcse-passes=5 --param max-unrolled-insns=600
--param inline-unit-growth=300 --param large-function-growth=400

g++ -v
Using built-in specs.
Configured with: ../gcc40/configure --prefix=/usr/local/gcc40f --program-
suffix=40f --with-arch=opteron --enable-languages=c,c++ --enable-checking
Thread model: posix
gcc version 4.0.0 20050109 (experimental)

I compiled qt-x11-free-3.3.3

When I call gcc directory qt-x11-free-3.3.3/src:

/qt/qt-x11-free-3.3.3/src$ g++ -S -O3 -ffast-math -funroll-all-loops \
-ftracer -floop-optimize2 -fmove-loop-invariants -frename-registers \
-fmodulo-sched --param max-gcse-passes=3 -fmudflapth \
-I/usr/include/mysql -Wall -W -g -D_REENTRANT -fPIC -DQT_SHARED \
-DQT_THREAD_SUPPORT -DQT_THREAD_SUPPORT -D_LARGEFILE_SOURCE \
-D_LARGE_FILES -D_FILE_OFFSET_BITS=64 -DQT_NO_XINERAMA -DQT_NO_XCURSOR \
-DQT_NO_XRANDR -DQT_NO_XRENDER -DQT_NO_XFTFREETYPE -DQT_NO_IMAGEIO_MNG \
-DQT_NO_IMAGEIO_JPEG -DQT_NO_STYLE_MAC -DQT_NO_STYLE_AQUA \
-DQT_NO_STYLE_INTERLACE -DQT_NO_STYLE_WINDOWSXP -DQT_NO_STYLE_COMPACT \
-DQT_NO_STYLE_POCKETPC \
-I/home/cie019/qt/qt-x11-free-3.3.3/mkspecs/linux-CC-64 -I. \
-I3rdparty/libpng -I3rdparty/zlib -I../include -I/usr/X11R6/include \
-I/usr/X11R6/include -I.moc/debug-shared-mt/ -o bug.s \
kernel/qprocess_unix.cpp

I get an ICE:
kernel/qprocess_unix.cpp: In member function 'virtual bool
QProcess::start(QStringList*)':
kernel/qprocess_unix.cpp:697: internal compiler error: in cp_tree_equal, at
cp/tree.c:1578
Please submit a full bug report, with preprocessed source if appropriate.

Since this ICE does not occur if I use -save-temps I don't know to proceed.

Michael Cieslinski
James E Wilson
2005-01-11 23:04:54 UTC
Permalink
Post by Michael Cieslinski
Since this ICE does not occur if I use -save-temps I don't know to proceed.
This implies some kind of memory corruption problem. Use of -save-temps
changes environment size, and number/order of memory allocation calls,
which can cause a memory corruption problem to disappear or manifest
differetly.

You could try enabling checking options, in particular garbage
collection checking, e.g. gcac, to see if you get a more reproducible
failure. If you have access to a debugging malloc, try enabling that.

You could try a binary search over the CVS archive to try to narrow the
problem down to one patch that triggered the problem.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com
Jeffrey A Law
2005-01-17 19:22:23 UTC
Permalink
Post by Michael Cieslinski
Hello,
I get a strange ICE which doesn't occur if I either don't use optimation
flags or use -save-temps.
What might help would be add a "-v" argument to g++, to get
the exact arguments passed to cc1plus, then run cc1plus under the
debugger, passing it the exact same args.

That would at least allow you to give us a backtrace. I would be
particularly interested as I know of one existing heisenbug which
I ought to be able to identify from a full backtrace.

Jeff
Michael Cieslinski
2005-01-18 15:20:27 UTC
Permalink
Hello Jeff,
many thanks for your effort to help me.
Meanwhile I think this ICE could be caused by a problem with the inliner,
which is bug 19241 (or bug 19374).
When a patch for 19241 exists I will test it.
In any case, since I compile all my sources weekly with the latest snapshot,
I will likely hit that ICE again.

I generated the backtrace you requested.

Michael Cieslinski

Loading...