Bug 37253

Summary: [Qt]r57240 broke Qt build (gcc bug)
Product: WebKit Reporter: Csaba Osztrogonác <ossy>
Component: New BugsAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: abecsi, benjamin, cmarcelo, commit-queue, darin, hausmann, kling, lauro.neto, menard, oliver, ossy, rafael.lobo, webkit.review.bot
Priority: P3 Keywords: Qt, QtTriaged
Version: 528+ (Nightly build)   
Hardware: PC   
OS: Linux   
Attachments:
Description Flags
proposed workaround until fix
none
Remove the inline hack
none
Patch with guard for Qt && Arm
none
Remove hack none

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.