[Qtwebengine] webengine crash
Andras Becsi
andras.becsi at theqtcompany.com
Tue Feb 3 17:37:20 CET 2015
Hi Tom,
As far as I know chromium does not officially support cross-compiling
32bits on 64 bits.
Your problem is most probably due to miscompilation, because to the
build system is not picking up the proper configuration.
I suggest you try compiling in a 32bit chroot instead, since
qtwebengine's cross-compilation config is set up for embedded builds.
Some additional notes inline.
/Andras
On 02/03/2015 05:19 PM, Tom Deblauwe wrote:
> On 02/03/2015 11:26 AM, Peter Varga wrote:
>> Hi Tom,
>>
>> I tried to reproduce the reported problem but I couldn't. I compiled the
>> 32bit Qt5 as I usually do:
>
> Thanks a lot for your investigation time.
>
>> made the build in an already set up 32bit chroot environment. Therefore
>> I suppose that the problem is
>> related to the cross-compilation. It might be possible some platform
>> specific configuration are passed
>> to the V8 compilation in a wrong way.
>>
>> Could you elaborate a bit how you cross-compiled the Qt5? First of all I
>> need answers for the following
>> questions:
>> - Just to make things clear: your target is x86 32bit and Linux, isn't it?
>
> Yes, correct
>
>> - I generated a 32bit cross-toolchain with buildroot. I used the default
>> configuration. Did you change
>> anything compared to the default settings in buildroot? For example, do
>> you use uclibc or glibc?
>
> Hello I used gcc 4.9.2 with glibc with a buildroot version from the
> master branch on 4th november 2014. (I forgot to note the actual commit)
>
>> - Which configuration options was passed to the Qt5's configure script?
>> I don't know how to set the
>> cross-compile toolchain. The easiest way is seemed to me to use the
>> -device-option CROSS_COMPILE=...
>> option but it is useless without specifying -device option.
>>
>
> In the buildroot version, you can have QT5 5.3, but it works if you just
> change the version number in package/qt5/qt5.mk to 5.4.0
>
> Then I just started from qt5webkit.mk and made qt5webengine.mk like I
> have copy-pasted below.
>
> You don't need to worry about the cross compilation of qt5, buildroot
> creates a cross compiled qmake in the output directory.
>
> Then for webengine source itself, I needed to change some things.
>
> 1) In tools/qmake/mkspecs/features/functions.prf I needed to add
> "linux-buildroot-g++: return (true)" so that the "isPlatformSupported"
> function accepts buildroot.
>
> 2) Then webengine wants to build the "embedded_linux.pri" configuration.
> There I changed the following because I wanted pulseaudio and x11:
This will most probably already produce a problematic build.
Your build should use desktop_linux.pri, cross-compilation is set up for
embedded.
>
> use_ozone=0
> use_system_icu=0 <-- the icu in buildroot is 51 and the bundled in
> webengine is 46 and webengine uses those 46 headers because they are in
> third_party
> use_x11=1
> use_glib=1
> use_dbus=1
> use_pulseaudio=1
> desktop_linux=1 <-- because i had some sort of compile error, don't
> remember which one
>
> 3) In src/core/config/embedded_linux.gypi I added this, hardcoded, not
> good but it is ok for me:
>
> 'defines': [
> '_LARGEFILE_SOURCE',
> '_LARGEFILE64_SOURCE',
> '_FILE_OFFSET_BITS=64',
> ],
> 'cflags': [
> '-pipe',
> '-O2',
> '-g2',
> ],
>
AFAICT this on it's own can already cause v8 JIT to miscompile, so your
crash is definetely caused by your configuration.
>
> The easiest is to do:
> $ make qt5webengine-patch
>
> <edit the things I mention>
>
> $ make qt5webengine
>
>
> I hope this somewhat helps you out.
>
>
> Right now I am trying out some things, but it all takes a long time to
> compile of course :)
> One idea I am now trying out is that maybe I should add something like
> this to the "tools/buildscripts/gyp_qtwebengine" python script:
>
> os.environ['CXX'] =
> "/home/tdeblauwe/git/thinclient-os/output/host/usr/bin/ccache
> /home/tdeblauwe/git/thinclient-os/output/host/usr/bin/i686-buildroot-linux-gnu-g++"
> os.environ['CC'] =
> "/home/tdeblauwe/git/thinclient-os/output/host/usr/bin/ccache
> /home/tdeblauwe/git/thinclient-os/output/host/usr/bin/i686-buildroot-linux-gnu-gcc"
> args.extend(['-D', 'clang=0'])
> args.extend(['-D', 'host_clang=0'])
>
This will most certainly not fix your v8 crash.
>
> But I'm still compiling it, so I'll let you know any outcome.
>
> Thanks,
> Best regards,
> Tom,
>
>
> ################################################################################
> #
> # qt5webengine
> #
> ################################################################################
>
> QT5WEBENGINE_VERSION = $(QT5_VERSION)
> QT5WEBENGINE_SITE = $(QT5_SITE)
> #QT5WEBENGINE_SOURCE =
> qtwebengine-opensource-src-$(QT5WEBENGINE_VERSION).tar.xz
> QT5WEBENGINE_SOURCE = qt5-webengine.tar.gz
> QT5WEBENGINE_DEPENDENCIES = qt5base sqlite host-ruby host-gperf
> host-bison host-flex xlib_libXi xlib_libXt xlib_libXtst xapp_xrandr
> xlib_libXcursor xlib_libXcomposite pciutils
> QT5WEBENGINE_INSTALL_STAGING = YES
>
> ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
> QT5WEBENGINE_LICENSE = LGPLv2+, MIT
> else
> QT5WEBENGINE_LICENSE = LGPLv2+, MIT, Commercial license
> QT5WEBENGINE_REDISTRIBUTE = NO
> endif
> QT5WEBENGINE_LICENSE_FILES = Source/WebCore/LICENSE-LGPL-2
> Source/WebCore/LICENSE-LGPL-2.1 Source/WebEngine/LICENSE
>
> ifeq ($(BR2_PACKAGE_QT5BASE_XCB),y)
> QT5WEBENGINE_DEPENDENCIES += xlib_libXext xlib_libXrender
> endif
>
> ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
> QT5WEBENGINE_DEPENDENCIES += qt5declarative
> endif
>
> define QT5WEBENGINE_CONFIGURE_CMDS
> (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
> endef
>
> define QT5WEBENGINE_BUILD_CMDS
> $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
> endef
>
> define QT5WEBENGINE_INSTALL_STAGING_CMDS
> $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
> $(QT5_LA_PRL_FILES_FIXUP)
> endef
>
> ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y)
> define QT5WEBENGINE_INSTALL_TARGET_QMLS
> cp -dpfr $(STAGING_DIR)/usr/qml/QtWebEngine $(TARGET_DIR)/usr/qml/
> endef
> endif
>
> define QT5WEBENGINE_INSTALL_TARGET_CMDS
> cp -dpf $(STAGING_DIR)/usr/lib/libQt5WebEngine*.so.* $(TARGET_DIR)/usr/lib
> cp -dpf $(STAGING_DIR)/usr/libexec/QtWebEngineProcess
> $(TARGET_DIR)/usr/libexec
> mkdir -p $(TARGET_DIR)/usr/translations/qtwebengine_locales
> cp -dpf
> $(STAGING_DIR)/usr/translations/qtwebengine_locales/en-US.pak
> $(TARGET_DIR)/usr/translations/qtwebengine_locales
> cp -dpf $(STAGING_DIR)/usr/qtwebengine_resources.pak $(TARGET_DIR)/usr
> $(QT5WEBENGINE_INSTALL_TARGET_QMLS)
> endef
>
> $(eval $(generic-package))
>
> _______________________________________________
> QtWebEngine mailing list
> QtWebEngine at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/qtwebengine
>
--
Best regards,
András Bécsi
Software Engineer | The Qt Company
The Qt Company AS
Sandakerveien 116
0484 Oslo, Norway
Mailing address:
PO Box 23 Nydalen
0410 Oslo, Norway
Visit us on: http://www.qt.io
More information about the QtWebEngine
mailing list