[Vm-dev] [commit][3753] Do not use -O3 optimization, -O2 is safer and works well.

commits at squeakvm.org commits at squeakvm.org
Wed Dec 21 01:03:08 UTC 2016


Revision: 3753
Author:   lewis
Date:     2016-12-20 17:03:04 -0800 (Tue, 20 Dec 2016)
Log Message:
-----------
Do not use -O3 optimization, -O2 is safer and works well.

gcc 4.9.2 gives crashes and heisenbugs with OSPP compiled with -O3.

Symptoms:
(1 to: 10) collect: [ :e | (CommandShell new pipeline: 'ps > /dev/null | cat') output]
  ==> segfaults in some of the spawned child processes

This appears to be an actual compiler bug, although it goes away when print
statements are added, so I cannot say for sure (and it is difficult to attach
gdb to the newly spawned child process before it crashes). The bad behavior
happens only with -O3 and there are no real performance benefits compared
to -O2 (bytecodes faster, sends slower).

Modified Paths:
--------------
    trunk/platforms/unix/cmake/Makefile.example

Modified: trunk/platforms/unix/cmake/Makefile.example
===================================================================
--- trunk/platforms/unix/cmake/Makefile.example	2016-12-11 16:49:35 UTC (rev 3752)
+++ trunk/platforms/unix/cmake/Makefile.example	2016-12-21 01:03:04 UTC (rev 3753)
@@ -9,7 +9,7 @@
 # Assume platforms is ../platforms and src is ../src
 
 # CFLAGS setting to pass to cmake configure. If undefined, use compiler defaults.
-CFLAGS_PARAM="--CFLAGS='-O3 -D_FILE_OFFSET_BITS=64'"
+CFLAGS_PARAM="--CFLAGS='-O2 -D_FILE_OFFSET_BITS=64'"
 #CFLAGS_PARAM="--CFLAGS='-O0 -g'"
 
 squeakvm:	build/squeakvm build64/squeakvm64



More information about the Vm-dev mailing list