Bug 114627

Summary: [EFL] build error when adjusting attachment 198015
Product: WebKit Reporter: Gyuyoung Kim <gyuyoung.kim>
Component: New BugsAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: ktf.kim, laszlo.gombos, rakuco
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 97268    

Description Gyuyoung Kim 2013-04-15 09:34:58 PDT
I'm suspecting this error comes from gcc version. In addition, EFL buildbot and ews are running on Ubuntu 12.04 and gcc 4.6.3. However, layout test on EFL can't be run on Ubuntu 12.10 yet. I think we need to support to build WebKit-efl with gcc 4.6 as well.


Error log :

/mnt/eflews/webkit/WebKit/Source/WebCore/Modules/websockets/WebSocketDeflater.cpp: In member function ‘bool WebCore::WebSocketDeflater::finish()’:
/mnt/eflews/webkit/WebKit/Source/WebCore/Modules/websockets/WebSocketDeflater.cpp:102:6: internal compiler error: in interpret_loop_phi, at tree-scalar-evolution.c:1645
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.6/README.Bugs> for instructions.
Preprocessed source stored into /tmp/cc9Kyhcu.out file, please attach this to your bugreport.
make[2]: *** [Source/WebCore/CMakeFiles/webcore_efl.dir/Modules/websockets/WebSocketDeflater.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [Source/WebCore/CMakeFiles/webcore_efl.dir/all] Error 2
Comment 1 Gyuyoung Kim 2013-04-15 18:44:01 PDT
CC'ing KyungTae.
Comment 2 KyungTae Kim 2013-04-16 00:43:47 PDT
The gcc bug related with that is like below:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49938
The modified sources for that is like below:
http://gcc.gnu.org/viewcvs/gcc?view=revision&revision=177267

Someone said because that occurs during optimization, compiling with "-O0" will not make the error.
Comment 3 KyungTae Kim 2013-04-16 03:30:07 PDT
When I modified bug 97268's code like below, the error did not occur :
#if GCC_VERSION_AT_LEAST(4, 7, 0)
        unsigned m_size;
#else
        size_t m_size;
#endif

But, in this case,
VectorSizeOffset in javascriptcore/llint/LowLevelInterpreter.asm can't have correct value, 
because we can't use GSS_VERSION option in .asm
Comment 4 KyungTae Kim 2013-04-16 04:10:34 PDT
(In reply to comment #3)
Typo: GSS_VERSION -> GCC_VERSION
Comment 5 Laszlo Gombos 2013-04-16 10:52:18 PDT
Based on the explanation this does not look EFL specific to me. Would be useful to find out why other Linux ports (e.g. GTK or Qt) does not run into this problem.
Comment 6 Gyuyoung Kim 2013-04-17 06:08:42 PDT
(In reply to comment #5)
> Based on the explanation this does not look EFL specific to me. Would be useful to find out why other Linux ports (e.g. GTK or Qt) does not run into this problem.

In GTK port case, it already checks GCC version during the configuration.

checking for _FILE_OFFSET_BITS value needed for large files... no
configure: error: Compiler GCC >= 4.7 or Clang >= 3.0 is required for C compilation
Comment 7 Raphael Kubo da Costa (:rakuco) 2013-04-19 06:15:29 PDT
It looks like something specific to the 4.6 series (I tried 4.4, 4.5, 4.6, 4.7 and 4.8 here), and this crash only happens when building in Release mode because only -O3 makes the compiler crash.

The GCC bug report KyungTae may be related, but it's about a 4.7.0 regression that does not crash 4.6 here.

GTK+ seems to require GCC 4.7.0, and my guess is that qmake doesn't pass -O3 in its equivalent to Release mode.

How about doing something like this in Source/WebCore/CMakeLists.txt:

# Detailed explaination of why we need this.
if (CMAKE_COMPILER_IS_GNUCXX) # Can restrict based on the version.
    set_source_files_properties(Modules/websocket/WebSocketDeflater.cpp
                                PROPERTIES COMPILE_FLAGS "-O2")
endif ()

This would end up passing -O2 to g++ at the end and fixes the issue.
Comment 8 Gyuyoung Kim 2013-04-19 20:30:51 PDT
(In reply to comment #7)
> It looks like something specific to the 4.6 series (I tried 4.4, 4.5, 4.6, 4.7 and 4.8 here), and this crash only happens when building in Release mode because only -O3 makes the compiler crash.
> 
> The GCC bug report KyungTae may be related, but it's about a 4.7.0 regression that does not crash 4.6 here.
> 
> GTK+ seems to require GCC 4.7.0, and my guess is that qmake doesn't pass -O3 in its equivalent to Release mode.
> 
> How about doing something like this in Source/WebCore/CMakeLists.txt:
> 
> # Detailed explaination of why we need this.
> if (CMAKE_COMPILER_IS_GNUCXX) # Can restrict based on the version.
>     set_source_files_properties(Modules/websocket/WebSocketDeflater.cpp
>                                 PROPERTIES COMPILE_FLAGS "-O2")
> endif ()
> 
> This would end up passing -O2 to g++ at the end and fixes the issue.

Could you prepare a patch ? I don't want to block Bug 97268 anymore. Then, as I said, let's consider to move 13.04. :)
Comment 9 Raphael Kubo da Costa (:rakuco) 2013-04-22 09:38:13 PDT
Looks like I've managed to work around the issue in bug 97268.