Bug 37253 - [Qt]r57240 broke Qt build (gcc bug)
: [Qt]r57240 broke Qt build (gcc bug)
Status: RESOLVED FIXED
Product: WebKit
Classification: Unclassified
Component: New Bugs
: 528+ (Nightly build)
: PC Linux
: P3 Normal
Assigned To: Nobody
: Qt, QtTriaged
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2010-04-08 00:57 PDT by Csaba Osztrogonác
Modified: 2013-09-06 19:35 PDT (History)
13 users (show)

See Also:


Attachments
proposed workaround until fix (1.68 KB, patch)
2010-04-08 01:11 PDT, Csaba Osztrogonác
no flags Details | Formatted Diff | Diff
Remove the inline hack (1.64 KB, patch)
2012-04-29 14:34 PDT, Adenilson Cavalcanti Silva
no flags Details | Formatted Diff | Diff
Patch with guard for Qt && Arm (1.41 KB, patch)
2012-05-02 13:56 PDT, Lauro Moura Maranhao Neto
no flags Details | Formatted Diff | Diff
Remove hack (1.96 KB, patch)
2013-09-06 18:35 PDT, Andreas Kling
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Csaba Osztrogonác 2010-04-08 00:57:39 PDT
After http://trac.webkit.org/changeset/57240 Qt build broke,
exactly gcc stucked in an infinite loop (with 100% CPU load)
when building WebCore/platform/graphics/FontFamily.cpp

original command:
g++ -c -m32 -pipe -Wall -Wextra -Wreturn-type -fno-strict-aliasing -Wcast-align -Wchar-subscripts -Wformat-security -Wreturn-type -Wno-unused-parameter -Wno-sign-compare -Wno-switch -Wno-switch-enum -Wundef -Wmissing-noreturn -Winit-self -ffunction-sections -fdata-sections -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -fPIC -DBUILDING_QT__=1 -DWTF_USE_ACCELERATED_COMPOSITING -DNDEBUG -DQT_MAKEDLL -DHAVE_STDINT_H -DBUILD_WEBKIT -DBUILDING_QT__ -DBUILDING_JavaScriptCore -DBUILDING_WTF -DENABLE_VIDEO=1 -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_DATABASE=1 -DENABLE_EVENTSOURCE=1 -DENABLE_OFFLINE_WEB_APPLICATIONS=1 -DENABLE_DOM_STORAGE=1 -DENABLE_ICONDATABASE=1 -DENABLE_CHANNEL_MESSAGING=1 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_SQLITE=1 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_FILTERS=1 -DENABLE_XPATH=1 -DENABLE_WCSS=0 -DENABLE_WML=0 -DENABLE_SHARED_WORKERS=1 -DENABLE_WORKERS=1 -DENABLE_XHTMLMP=0 -DENABLE_DATAGRID=0 -DENABLE_RUBY=1 -DENABLE_SANDBOX=1 -DENABLE_PROGRESS_TAG=1 -DENABLE_BLOB_SLICE=0 -DENABLE_3D_RENDERING=1 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -DENABLE_SVG_FOREIGN_OBJECT=1 -DENABLE_SVG_ANIMATION=1 -DENABLE_SVG_AS_IMAGE=1 -DENABLE_SVG_USE=1 -DENABLE_DATALIST=1 -DENABLE_TILED_BACKING_STORE=1 -DENABLE_NETSCAPE_PLUGIN_API=1 -DENABLE_WEB_SOCKETS=1 -DENABLE_XSLT=1 -DENABLE_TOUCH_EVENTS=1 -DXP_UNIX -DQT_NO_DEBUG -DQT_XMLPATTERNS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-4.6.0/mkspecs/linux-g++-32 -I../../../WebCore -I/usr/local/Trolltech/Qt-4.6.0/include/QtCore -I/usr/local/Trolltech/Qt-4.6.0/include/QtNetwork -I/usr/local/Trolltech/Qt-4.6.0/include/QtGui -I/usr/local/Trolltech/Qt-4.6.0/include/QtXmlPatterns -I/usr/local/Trolltech/Qt-4.6.0/include -I../../../WebCore/bridge/qt -I../../../WebCore/page/qt -I../../../WebCore/platform/graphics/qt -I../../../WebCore/platform/network/qt -I../../../WebCore/platform/qt -I../../../WebKit/qt/Api -I../../../WebKit/qt/WebCoreSupport -I../../../WebCore -I../../../WebCore/accessibility -I../../../WebCore/bindings/js -I../../../WebCore/bridge -I../../../WebCore/bridge/c -I../../../WebCore/bridge/jsc -I../../../WebCore/css -I../../../WebCore/dom -I../../../WebCore/dom/default -I../../../WebCore/editing -I../../../WebCore/history -I../../../WebCore/html -I../../../WebCore/html/canvas -I../../../WebCore/inspector -I../../../WebCore/loader -I../../../WebCore/loader/appcache -I../../../WebCore/loader/archive -I../../../WebCore/loader/icon -I../../../WebCore/notifications -I../../../WebCore/page -I../../../WebCore/page/animation -I../../../WebCore/platform -I../../../WebCore/platform/animation -I../../../WebCore/platform/graphics -I../../../WebCore/platform/graphics/filters -I../../../WebCore/platform/graphics/transforms -I../../../WebCore/platform/image-decoders -I../../../WebCore/platform/mock -I../../../WebCore/platform/network -I../../../WebCore/platform/sql -I../../../WebCore/platform/text -I../../../WebCore/plugins -I../../../WebCore/rendering -I../../../WebCore/rendering/style -I../../../WebCore/storage -I../../../WebCore/svg -I../../../WebCore/svg/animation -I../../../WebCore/svg/graphics -I../../../WebCore/svg/graphics/filters -I../../../WebCore/websockets -I../../../WebCore/wml -I../../../WebCore/workers -I../../../WebCore/xml -Igenerated -I../../../JavaScriptCore -I../../../../build -I../../../JavaScriptCore/assembler -I../../../JavaScriptCore/bytecode -I../../../JavaScriptCore/bytecompiler -I../../../JavaScriptCore/debugger -I../../../JavaScriptCore/interpreter -I../../../JavaScriptCore/jit -I../../../JavaScriptCore/parser -I../../../JavaScriptCore/pcre -I../../../JavaScriptCore/profiler -I../../../JavaScriptCore/runtime -I../../../JavaScriptCore/wtf -I../../../JavaScriptCore/wtf/symbian -I../../../JavaScriptCore/wtf/unicode -I../../../JavaScriptCore/yarr -I../../../JavaScriptCore/API -I../../../JavaScriptCore/ForwardingHeaders -I../JavaScriptCore/generated -I../include/QtWebKit -I/usr/local/Trolltech/Qt-4.6.0/src/3rdparty/sqlite/ -I/usr/local/Trolltech/Qt-4.6.0/include/phonon -I/usr/X11R6/include -I. -I../../../WebCore -I. -o obj/release/FontFamily.o ../../../WebCore/platform/graphics/FontFamily.cpp

I tried to preprocess and compile in two steps manually, it works:

preprocess:
g++ -E -m32 -pipe -Wall -Wextra -Wreturn-type -fno-strict-aliasing -Wcast-align -Wchar-subscripts -Wformat-security -Wreturn-type -Wno-unused-parameter -Wno-sign-compare -Wno-switch -Wno-switch-enum -Wundef -Wmissing-noreturn -Winit-self -ffunction-sections -fdata-sections -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -fPIC -DBUILDING_QT__=1 -DWTF_USE_ACCELERATED_COMPOSITING -DNDEBUG -DQT_MAKEDLL -DHAVE_STDINT_H -DBUILD_WEBKIT -DBUILDING_QT__ -DBUILDING_JavaScriptCore -DBUILDING_WTF -DENABLE_VIDEO=1 -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_DATABASE=1 -DENABLE_EVENTSOURCE=1 -DENABLE_OFFLINE_WEB_APPLICATIONS=1 -DENABLE_DOM_STORAGE=1 -DENABLE_ICONDATABASE=1 -DENABLE_CHANNEL_MESSAGING=1 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_SQLITE=1 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_FILTERS=1 -DENABLE_XPATH=1 -DENABLE_WCSS=0 -DENABLE_WML=0 -DENABLE_SHARED_WORKERS=1 -DENABLE_WORKERS=1 -DENABLE_XHTMLMP=0 -DENABLE_DATAGRID=0 -DENABLE_RUBY=1 -DENABLE_SANDBOX=1 -DENABLE_PROGRESS_TAG=1 -DENABLE_BLOB_SLICE=0 -DENABLE_3D_RENDERING=1 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -DENABLE_SVG_FOREIGN_OBJECT=1 -DENABLE_SVG_ANIMATION=1 -DENABLE_SVG_AS_IMAGE=1 -DENABLE_SVG_USE=1 -DENABLE_DATALIST=1 -DENABLE_TILED_BACKING_STORE=1 -DENABLE_NETSCAPE_PLUGIN_API=1 -DENABLE_WEB_SOCKETS=1 -DENABLE_XSLT=1 -DENABLE_TOUCH_EVENTS=1 -DXP_UNIX -DQT_NO_DEBUG -DQT_XMLPATTERNS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-4.6.0/mkspecs/linux-g++-32 -I../../../WebCore -I/usr/local/Trolltech/Qt-4.6.0/include/QtCore -I/usr/local/Trolltech/Qt-4.6.0/include/QtNetwork -I/usr/local/Trolltech/Qt-4.6.0/include/QtGui -I/usr/local/Trolltech/Qt-4.6.0/include/QtXmlPatterns -I/usr/local/Trolltech/Qt-4.6.0/include -I../../../WebCore/bridge/qt -I../../../WebCore/page/qt -I../../../WebCore/platform/graphics/qt -I../../../WebCore/platform/network/qt -I../../../WebCore/platform/qt -I../../../WebKit/qt/Api -I../../../WebKit/qt/WebCoreSupport -I../../../WebCore -I../../../WebCore/accessibility -I../../../WebCore/bindings/js -I../../../WebCore/bridge -I../../../WebCore/bridge/c -I../../../WebCore/bridge/jsc -I../../../WebCore/css -I../../../WebCore/dom -I../../../WebCore/dom/default -I../../../WebCore/editing -I../../../WebCore/history -I../../../WebCore/html -I../../../WebCore/html/canvas -I../../../WebCore/inspector -I../../../WebCore/loader -I../../../WebCore/loader/appcache -I../../../WebCore/loader/archive -I../../../WebCore/loader/icon -I../../../WebCore/notifications -I../../../WebCore/page -I../../../WebCore/page/animation -I../../../WebCore/platform -I../../../WebCore/platform/animation -I../../../WebCore/platform/graphics -I../../../WebCore/platform/graphics/filters -I../../../WebCore/platform/graphics/transforms -I../../../WebCore/platform/image-decoders -I../../../WebCore/platform/mock -I../../../WebCore/platform/network -I../../../WebCore/platform/sql -I../../../WebCore/platform/text -I../../../WebCore/plugins -I../../../WebCore/rendering -I../../../WebCore/rendering/style -I../../../WebCore/storage -I../../../WebCore/svg -I../../../WebCore/svg/animation -I../../../WebCore/svg/graphics -I../../../WebCore/svg/graphics/filters -I../../../WebCore/websockets -I../../../WebCore/wml -I../../../WebCore/workers -I../../../WebCore/xml -Igenerated -I../../../JavaScriptCore -I../../../../build -I../../../JavaScriptCore/assembler -I../../../JavaScriptCore/bytecode -I../../../JavaScriptCore/bytecompiler -I../../../JavaScriptCore/debugger -I../../../JavaScriptCore/interpreter -I../../../JavaScriptCore/jit -I../../../JavaScriptCore/parser -I../../../JavaScriptCore/pcre -I../../../JavaScriptCore/profiler -I../../../JavaScriptCore/runtime -I../../../JavaScriptCore/wtf -I../../../JavaScriptCore/wtf/symbian -I../../../JavaScriptCore/wtf/unicode -I../../../JavaScriptCore/yarr -I../../../JavaScriptCore/API -I../../../JavaScriptCore/ForwardingHeaders -I../JavaScriptCore/generated -I../include/QtWebKit -I/usr/local/Trolltech/Qt-4.6.0/src/3rdparty/sqlite/ -I/usr/local/Trolltech/Qt-4.6.0/include/phonon -I/usr/X11R6/include -I. -I../../../WebCore -I. -o obj/release/FontFamily.i ../../../WebCore/platform/graphics/FontFamily.cpp

compile:
g++ -c -o obj/release/FontFamily.o obj/release/FontFamily.i
Comment 1 Csaba Osztrogonác 2010-04-08 01:11:30 PDT
Created attachment 52848 [details]
proposed workaround until fix
Comment 2 Oliver Hunt 2010-04-08 01:13:43 PDT
Comment on attachment 52848 [details]
proposed workaround until fix

r=me
Comment 3 Csaba Osztrogonác 2010-04-08 01:23:34 PDT
Comment on attachment 52848 [details]
proposed workaround until fix

Workaround landed in http://trac.webkit.org/changeset/57262
We shouldn't close this bug until find what the problem is.

I forgot to mention, I use gcc (Debian 4.3.2-1.1) 4.3.2,
which can be found in stable Debian (5.0.4 - Lenny)
Comment 4 Csaba Osztrogonác 2010-04-08 07:26:14 PDT
It works with gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1.
Comment 5 Benjamin Poulain 2010-04-29 03:32:23 PDT
Any chance to close the bug now?
Or reduce the priority to P5 if it is only about understanding where the problem was.
Comment 6 Csaba Osztrogonác 2010-04-30 10:06:41 PDT
(In reply to comment #5)
> Any chance to close the bug now?
> Or reduce the priority to P5 if it is only about understanding where the
> problem was.

I don't think if we should close the bug, because it is a real bug,
and we should use ALWAYS_INLINE macro carefully.

But I agree, it isn't blocker and P1 priority bug after workaround landed,
so I modified it to P3 and normal. I played with a little bit this bug again,
I can reproduce it with preprocessed source, so I'm going to file a bug about it
into gcc bugzilla.
Comment 7 Darin Adler 2010-06-29 15:20:59 PDT
If this is a GCC bug, then we should file a GCC bug report. I don't see any reason to keep a WebKit bug report open about this indefinitely.
Comment 8 Alexis Menard (darktears) 2011-05-03 12:20:57 PDT
GCC bug and seems outdated.
Comment 9 Adenilson Cavalcanti Silva 2012-04-29 14:34:00 PDT
Created attachment 139406 [details]
Remove the inline hack

Current gcc (tested with 4.6.1) and Qt5 doesn't need this macro workaround.
Comment 10 Alexis Menard (darktears) 2012-04-30 07:24:50 PDT
Comment on attachment 139406 [details]
Remove the inline hack

but what about Qt 4.8?
Comment 11 Csaba Osztrogonác 2012-05-02 01:16:52 PDT
Reopen, because CQ won't land patch from RESOLVED/WONTFIX bug. :)

I tested it with Debian Squeeze (latest Debian stable), it works fine with its default 4.4.5 GCC. Ubuntu 10.04 LTS has 4.4.3, it should work too. (Additionally 12.04 LTS is out now.)
Comment 12 Csaba Osztrogonác 2012-05-02 01:19:22 PDT
Comment on attachment 139406 [details]
Remove the inline hack

Clearing flags on attachment: 139406

Committed r115802: <http://trac.webkit.org/changeset/115802>
Comment 13 Csaba Osztrogonác 2012-05-02 01:19:30 PDT
All reviewed patches have been landed.  Closing bug.
Comment 14 Csaba Osztrogonác 2012-05-02 08:11:39 PDT
Reopen, because it broke the N9 build inside scratchbox with the following error:
In file included from /home/lauro/webkit/webkit-deb/Source/WebCore/html/shadow/HTMLContentSelector.cpp:28:
/home/lauro/webkit/webkit-deb/Source/WTF/wtf/RefPtr.h: In destructor 'WebCore::HTMLContentSelectionList::~HTMLContentSelectionList()':
/home/lauro/webkit/webkit-deb/Source/WTF/wtf/RefPtr.h:56: sorry, unimplemented: inlining failed in call to 'WTF::RefPtr<T>::~RefPtr() [with T = WebCore::HTMLContentSelection]': recursive inlining
/home/lauro/webkit/webkit-deb/Source/WebCore/html/shadow/HTMLContentSelector.h:47: sorry, unimplemented: called from here
...

What if we add back an ifdef guard again for it: #if !(PLATFORM(QT) && CPU(ARM)) ?

Any better idea?
Comment 15 Lauro Moura Maranhao Neto 2012-05-02 13:56:31 PDT
Created attachment 139878 [details]
Patch with guard for Qt && Arm
Comment 16 Csaba Osztrogonác 2012-05-02 22:19:23 PDT
Comment on attachment 139878 [details]
Patch with guard for Qt && Arm

r=me
Comment 17 WebKit Review Bot 2012-05-02 23:10:04 PDT
Comment on attachment 139878 [details]
Patch with guard for Qt && Arm

Clearing flags on attachment: 139878

Committed r115940: <http://trac.webkit.org/changeset/115940>
Comment 18 WebKit Review Bot 2012-05-02 23:10:10 PDT
All reviewed patches have been landed.  Closing bug.
Comment 19 Csaba Osztrogonác 2012-05-02 23:19:45 PDT
Reopen not to forget removing this workaround after updating GCC.
Comment 20 Darin Adler 2012-05-03 09:34:55 PDT
If this is a compiler issue, then it should really be an #if COMPILER, not an #if PLATFORM && CPU. Obviously we can live with the way it was landed, but it’s not quite right.
Comment 21 Simon Hausmann 2012-07-16 02:05:19 PDT
I wonder if this issue is still present with Harmattan PR 1.3?

It also appears that this happens when building inside Scratchbox. What about builds outside of scratchbox box? Does the latest cross-compiling toolchain delivered with the Qt SDK suffer from the same bug?
Comment 22 Andreas Kling 2013-09-06 18:35:27 PDT
Created attachment 210828 [details]
Remove hack

I think it should be okay to remove this now.
Comment 23 Andreas Kling 2013-09-06 19:34:58 PDT
Comment on attachment 210828 [details]
Remove hack

Clearing flags on attachment: 210828

Committed r155232: <http://trac.webkit.org/changeset/155232>
Comment 24 Andreas Kling 2013-09-06 19:35:06 PDT
All reviewed patches have been landed.  Closing bug.