Get SIGABRT (signal 6) using QtWebEngineProcess in deployment
-
Hi,
can anyone help me out with this error :LaunchProcess: failed to execvp: /home/bachir/Desktop/Gorille/Gorille-UI/exec [5336:5336:0623/023220.195354:FATAL:zygote_host_impl_linux.cc(182)] Check failed: ReceiveFixedMessage(fds[0], kZygoteBootMessage, sizeof(kZygoteBootMessage), &boot_pid). #0 0x7f6ee25fe9a5 <unknown> #1 0x7f6ee26147ca <unknown> #2 0x7f6ee1c57263 <unknown> #3 0x7f6ee1c55edb <unknown> #4 0x7f6ee1c564b9 <unknown> #5 0x7f6ee1898d4a <unknown> #6 0x7f6ee189e286 <unknown> #7 0x7f6ee13bb050 <unknown> #8 0x7f6ee13bc525 <unknown> #9 0x7f6ee13ac2d9 <unknown> #10 0x7f6ee13ac67e QtWebEngineCore::WebContentsAdapter::WebContentsAdapter() #11 0x7f6eea40f281 <unknown> #12 0x7f6eea40fcd4 QWebEnginePage::QWebEnginePage() #13 0x000000430013 CyberDetect::parseHtmlCFG() #14 0x000000430e84 CyberDetect::parseProcessCFG() #15 0x00000043b563 CyberDetect::taskDisplay() #16 0x00000047472c CyberDetect::qt_static_metacall() #17 0x7f6ee8f2db21 QObject::event() #18 0x7f6ee9d4d5e3 QWidget::event() #19 0x7f6ee9e59891 QMainWindow::event() #20 0x7f6ee9d1054c QApplicationPrivate::notify_helper() #21 0x7f6ee9d17897 QApplication::notify() #22 0x7f6ee8f019f8 QCoreApplication::notifyInternal2() #23 0x7f6ee8f0448b QCoreApplicationPrivate::sendPostedEvents() #24 0x7f6ee8f56563 <unknown> #25 0x7f6edc7c3287 g_main_context_dispatch #26 0x7f6edc7c34c0 <unknown> #27 0x7f6edc7c354c g_main_context_iteration #28 0x7f6ee8f55baf QEventDispatcherGlib::processEvents() #29 0x7f6ed62da9a1 <unknown> #30 0x7f6ee8f0026a QEventLoop::exec() #31 0x7f6ee8f08da4 QCoreApplication::exec() #32 0x000000415ed8 main #33 0x7f6ee830db97 __libc_start_main #34 0x000000415f69 _start Received signal 6 #0 0x7f6ee25fe9a5 <unknown> #1 0x7f6ee133e501 <unknown> #2 0x7f6ee25fed3d <unknown> #3 0x7f6ee832af20 <unknown> #4 0x7f6ee832ae97 gsignal #5 0x7f6ee832c801 abort #6 0x7f6ee25fe6c5 <unknown> #7 0x7f6ee2614aed <unknown> #8 0x7f6ee1c57263 <unknown> #9 0x7f6ee1c55edb <unknown> #10 0x7f6ee1c564b9 <unknown> #11 0x7f6ee1898d4a <unknown> #12 0x7f6ee189e286 <unknown> #13 0x7f6ee13bb050 <unknown> #14 0x7f6ee13bc525 <unknown> #15 0x7f6ee13ac2d9 <unknown> #16 0x7f6ee13ac67e QtWebEngineCore::WebContentsAdapter::WebContentsAdapter() #17 0x7f6eea40f281 <unknown> #18 0x7f6eea40fcd4 QWebEnginePage::QWebEnginePage() #19 0x000000430013 CyberDetect::parseHtmlCFG() #20 0x000000430e84 CyberDetect::parseProcessCFG() #21 0x00000043b563 CyberDetect::taskDisplay() #22 0x00000047472c CyberDetect::qt_static_metacall() #23 0x7f6ee8f2db21 QObject::event() #24 0x7f6ee9d4d5e3 QWidget::event() #25 0x7f6ee9e59891 QMainWindow::event() #26 0x7f6ee9d1054c QApplicationPrivate::notify_helper() #27 0x7f6ee9d17897 QApplication::notify() #28 0x7f6ee8f019f8 QCoreApplication::notifyInternal2() #29 0x7f6ee8f0448b QCoreApplicationPrivate::sendPostedEvents() #30 0x7f6ee8f56563 <unknown> #31 0x7f6edc7c3287 g_main_context_dispatch #32 0x7f6edc7c34c0 <unknown> #33 0x7f6edc7c354c g_main_context_iteration #34 0x7f6ee8f55baf QEventDispatcherGlib::processEvents() #35 0x7f6ed62da9a1 <unknown> #36 0x7f6ee8f0026a QEventLoop::exec() #37 0x7f6ee8f08da4 QCoreApplication::exec() #38 0x000000415ed8 main #39 0x7f6ee830db97 __libc_start_main #40 0x000000415f69 _start r8: 0000000000000000 r9: 00007fff8677eca0 r10: 0000000000000008 r11: 0000000000000246 r12: 00007fff8677ef20 r13: 00000000000000aa r14: 00007fff8677f150 r15: 00007fff8677f8c0 di: 0000000000000002 si: 00007fff8677eca0 bp: 00007f6ee8c81d60 bx: 00007fff8677f6a0 dx: 0000000000000000 ax: 0000000000000000 cx: 00007f6ee832ae97 sp: 00007fff8677eca0 ip: 00007f6ee832ae97 efl: 0000000000000246 cgf: 002b000000000033 erf: 0000000000000000 trp: 0000000000000000 msk: 0000000000000000 cr2: 0000000000000000 [end of stack trace] Calling _exit(1). Core file will not be generated.
I am running a Qt application developed in C++ on Linux which is using the libexec QtWebEngineProcess.
On my computer, everything is fine. However, when deploying the app on another computer, everything goes wrong.
I had to use a shell script to link the dynamic libs and libexec, so the app can be executed :#!/bin/sh appname=`basename $0 .sh` dirname=`dirname $0` tmp="${dirname#?}" if [ "${dirname%$tmp}" != "/" ]; then dirname=$PWD/$dirname fi LD_LIBRARY_PATH=$dirname/"libs" QTWEBENGINEPROCESS_PATH=$dirname/"exec" export LD_LIBRARY_PATH export QTWEBENGINEPROCESS_PATH $dirname/$appname "$@"
So far, so good!
But when the code using the Qt web engine is processed, I get this SIGABRT signal with the execution stack displayed above.I have been searching for days how to solve the issue, in vain.
The linux distribution is ubuntu 16.04 LTS on both computers (development and test) and the Qt version is 5.10.0.
This is the guilty code :... QWebEngineView *webView = new QWebEngineView(); ...
As you can see, it's just a constructor...
I have tested linuxdeployqt to obtain a standalone app and of course, it doesn't work at all :
... ERROR: Please ensure that all libraries can be found by ldd. Aborting.
Which is surprising as I used the ldd command to select the libraries to copy.
The version is the following : linuxdeployqt 4 (commit 5542062), build 559 built on 2018-06-18 17:51:07 UTCAny idea? At least a lead or anything to work on...
I don't know whether my deployment process is incorrect, or the Qt web engine process is buggy, or maybe anything else!Many thanks for your answer.
Bachir. -
@JonB thanks for your answer
- On the dev machine, I installed everything with the Qt maintenance tool and the app is running without crashing;
- On the test machine, I have copied every required lib, including libQt5WebEngineCore.so.5.10.0 and libQt5WebEngineWidgets.so.5.10.0, along with QtWebEngineProcess.
So what did you mean exactly by installing using apt-get? Should I do that on the dev machine or the test machine?
-
Hi and welcome to devnet,
Did you follow the dedicated QtWebEngine deployment procedure ?
-
@SGaist
Hi and thanks
Yes, I have followed thoroughly the procedure.
My folder contains these elements :myexe
qt.conf
run.sh
Qt
The
Qt
folder has all the required dependencies with the exact same naming than Qt :lib
libexec
plugins
resources
translations
The
qt.conf
file just override the prefix andrun.sh
is a script that runmyexe
with the correct environment values(LD_LIBRARY_PATH
&QTWEBENGINEPROCESS_PATH
)I am pretty sure to have all required dependencies. Besides if I copy all the content of
/home/bachir/Qt/5.10.0/gcc_64
in my localQt
folder, nothing change. So the problem is elsewhere.I don't understand why moving QtWebEngineProcess make it crash while it has all dependencies?
-
Does the app work if you start it with --single-process added to the command line?