Bug 114627
Summary: | [EFL] build error when adjusting attachment 198015 | ||
---|---|---|---|
Product: | WebKit | Reporter: | Gyuyoung Kim <gyuyoung.kim> |
Component: | New Bugs | Assignee: | 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 |
Gyuyoung Kim
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
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Gyuyoung Kim
CC'ing KyungTae.
KyungTae Kim
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.
KyungTae Kim
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
KyungTae Kim
(In reply to comment #3)
Typo: GSS_VERSION -> GCC_VERSION
Laszlo Gombos
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.
Gyuyoung Kim
(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
Raphael Kubo da Costa (:rakuco)
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.
Gyuyoung Kim
(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. :)
Raphael Kubo da Costa (:rakuco)
Looks like I've managed to work around the issue in bug 97268.