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 UTC

    Any 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.



  • @bachir
    Just checking: IIRC, to use QWebEngine under Linux requires a distinct apt-get (I install everything from apt). Has that been done correctly on the machine where you have the problem?



  • @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?



  • @bachir
    I use apt-get. You do not. And you use linuxdeployqt. That's fair enough. You seem to have done a bit for Qt5 WebEngine at least. You now need someone else to look at your issue.



  • @JonB Thanks!
    By the way, I tried to use linuxdeployqt but it didn't work so I deployed the app manually.
    Anyone can tell me why copy and paste QtWebEngineProc make it not working anymore?!


  • Lifetime Qt Champion

    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 and run.sh is a script that run myexe 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 local Qt folder, nothing change. So the problem is elsewhere.

    I don't understand why moving QtWebEngineProcess make it crash while it has all dependencies?


  • Moderators

    Does the app work if you start it with --single-process added to the command line?



Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.