On Thu, Oct 21, 2010 at 6:35 PM, Igor Stasenko <siguctua@gmail.com> wrote:

Hello,

few weeks ago i reported that i experienced Cog VM crashes soon after
starting it.
I though that it could be related to pthread library, listed twice in
GCC options..

I was managed to build a stable VM but now i found that problem is not in that!
The VM, which i was built were using debugging-enabled, with all
bells&whistles config..
But once i tried a 'release' config, the VM is crashing:

../../platforms/unix/config/configure --without-vm-display-fbdev
--without-npsqueak -prefix=/home/sig/cogvm/ CFLAGS="-g -O2 -msse2
-D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1
-DCOGMTVM=0 -DDEBUGVM=0"

Then i tried to gradually change various options and foudn that this
one produces stable VM:

../../platforms/unix/config/configure --without-vm-display-fbdev
--without-npsqueak -prefix=/home/sig/cogvm/ CFLAGS="-g -O1 -msse2
-D_GNU_SOURCE -DNDEBUG -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1
-DCOGMTVM=0 -DDEBUGVM=0"

(the difference is just an optimization option O2 vs O1 )

It seems like a compiler related issue..
Any ideas what wrong with O2?


gcc --version
gcc (Ubuntu 4.4.3-4ubuntu5) 4.4.3
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

I'm pretty sure I use gcc 4.2.  You might want to try compiling the files (especially cointerp.c cogit.c sqUnixThreads.c) with -O1 one by one to localise the problem.  I've seen problems with the cogit's use of alloca and if you look at the configure build system it forces compiling cogit.c with -O1.  If you're perhaps using CMake then you'll want to modify it to compile cogit.c with -O1 also.  The issue is the cogit's use of alloca which seems to confuse gcc.

HTH
Eliot



--
Best regards,
Igor Stasenko AKA sig.