Bug 29407

Summary: Webkit on SPARC Solaris has wrong endian
Product: WebKit Reporter: Tor Arne Vestbø <vestbo>
Component: Tools / TestsAssignee: Ademar Reis <ademar>
Status: RESOLVED FIXED    
Severity: Normal CC: ademar, bugs-webkit, diegohcg, hausmann, kent.hansen, kling, nils.roscher-nielsen, pierre.rossi, tonikitoo, webkit.review.bot
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Other   
OS: Other   
Attachments:
Description Flags
patch none

Description Tor Arne Vestbø 2009-09-18 07:32:22 PDT
This bug report originated from issue QTBUG-4078
<http://bugreports.qt.nokia.com/browse/QTBUG-4078>

--- Description ---

Webkit on SPARC Solaris have wrong endian. This results in a run time crash.
Comment 1 Nils Christian Roscher-Nielsen 2009-10-28 02:25:26 PDT
Here is a stack trace from the crash:

#0  0xfe8de3f8 in WTF::HashSet<WebCore::StringImpl*, WebCore::StringHash, WTF::HashTraits<WebCore::StringImpl*> >::add<WebCore::UCharBuffer, WebCore::UCharBufferTranslator> ()                                                                                                                                 
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4                          
#1  0xfe247bc4 in WebCore::AtomicString::add ()                                                                                                         
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4                          
#2  0xfedd914c in WebCore::CSSParserString::operator WebCore::AtomicString ()                                                                           
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#3  0xfe695604 in cssyyparse ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#4  0xfdfd6d8c in WebCore::CSSParser::parseSheet ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#5  0xfe027050 in WebCore::CSSStyleSheet::parseString ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#6  0xfdffd4e4 in WebCore::parseUASheet ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#7  0xfdffd50c in WebCore::parseUASheet ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#8  0xfe025f90 in WebCore::loadSimpleDefaultStyle ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#9  0xfe026228 in WebCore::CSSStyleSelector::CSSStyleSelector ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#10 0xfe03dc58 in WebCore::Document::attach ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#11 0xfe22c158 in WebCore::Frame::setDocument ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQt---Type <return> to continue, or q <return> to quit---
WebKit.so.4
#12 0xfe1b8fcc in WebCore::FrameLoader::begin ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#13 0xfe1c8390 in WebCore::FrameLoader::init ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#14 0xfe39893c in QWebFramePrivate::init ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#15 0xfe39b0d0 in QWebFrame::QWebFrame ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#16 0xfe39f4d0 in QWebPagePrivate::createMainFrame ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#17 0xfe39f5b4 in QWebPage::mainFrame ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#18 0xfe39f5e4 in QWebPage::setViewportSize ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#19 0xfe39f6f4 in QWebPage::setView ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#20 0xfe39f778 in QWebPage::QWebPage ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#21 0xfe3a3cb0 in QWebView::page ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#22 0xfe3a3cd8 in QWebView::load ()
   from /export/disc2/workspaces/branch_3_9/workspace/ExternLibs/Qt4/x11-src/qt-all-commercial-src-4.5.3/lib//libQtWebKit.so.4
#23 0x00013970 in MainWindow::MainWindow ()
#24 0x00012e74 in main ()
(gdb)
(gdb)
Comment 2 Diego Gonzalez 2010-03-16 12:29:05 PDT
In this bug the OS should be Other, not Mac OS
Comment 3 Kent Hansen 2010-03-17 05:01:26 PDT
This is not Qt-specific.
Anyways, I think it might be fixed already, since trunk now has more cases for detecting SPARC (in particular, 32-bit) than it did in the version shipped with Qt 4.5. It's possible that he was building on 32-bit SPARC, in which case WTF_PLATFORM_BIG_ENDIAN would not be correctly defined with that version.

Nils, could you perhaps try with a more recent WebKit (the one in 4.6 seems to have the proper defines too)?
Comment 4 Simon Hausmann 2010-03-17 15:49:29 PDT
Assigning to Niels, since he has a bugzilla account.

Niels, can you quickly verify this on your Solaris box with at least Qt 4.6? The original bug report says Qt 4.5 was affected.

Thanks!
Comment 5 Jesus Sanchez-Palencia 2010-05-13 07:40:47 PDT
(In reply to comment #4)
> Niels, can you quickly verify this on your Solaris box with at least Qt 4.6? The original bug report says Qt 4.5 was affected.

Any updates on this? Thanks!
Comment 6 The Written Word 2011-06-03 06:35:59 PDT
We just saw this crash with qt-4.7.3 on Solaris 8/sparc built with gcc. It seems to be a bus error which can be fixed by fixing the // FIXME comments about going 4 bytes at a time in src/3rdparty/webkit/WebCore/platform/text/AtomicString.cpp and src/3rdparty/webkit/WebCore/platform/text/StringHash.h

We also built webkitgtk-1.3.10 on Solaris 8, which appears to be based on a newer version of webkit than that shipped with qt-4.7, and did not see this problem, so it is probably fixed in later qtwebkit versions also.
Comment 7 Ademar Reis 2011-06-03 07:06:12 PDT
We had a fix for a similar problem a while ago (see bug 57256), but I have the impression that there are still a few missing bugs.

I don't have a sparc machine to test... Are you able to build a recent webkit to test this? (such as our next release: qtwebkit-2.2, see http://trac.webkit.org/wiki/QtWebKitRelease22)

Anyway, cooking a patch to include a couple of missing checks. Will upload it in a second.
Comment 8 Ademar Reis 2011-06-03 07:14:00 PDT
Created attachment 95908 [details]
patch
Comment 9 Andreas Kling 2011-06-08 09:02:52 PDT
Comment on attachment 95908 [details]
patch

LGTM.
Comment 10 WebKit Review Bot 2011-06-08 10:14:42 PDT
Comment on attachment 95908 [details]
patch

Clearing flags on attachment: 95908

Committed r88355: <http://trac.webkit.org/changeset/88355>
Comment 11 WebKit Review Bot 2011-06-08 10:14:47 PDT
All reviewed patches have been landed.  Closing bug.