QML apps crash if ran on devices without hardware acceleration

Created by: PureTryOut

Trying to run any QML apps on a device without hardware acceleration (so dri-swrast installed and running on the framebuffer) causes the specific app to error in a "Segmentation fault".

For example qmltermwidget (the qmlkonsole binary):

localhost:~$ qmlkonsole 
QObject::connect: No such slot Konsole::TerminalDisplay::close() in /home/pmos/build/src/qmltermwidget-fb525b7185acf3b91ba58051c337ae33294a7da7/lib/Session.cpp:214
loadAllColorSchemes
Using color-schemes:  ":/color-schemes/"
Using color-schemes:  ":/color-schemes/"
qml: QSize(37, 127)
Session::run() - program: "/bin/ash"
Session::run() - arguments: ("")
started!
Segmentation fault

If ran with QT_QUICK_BACKEND=software:

localhost:~$ QT_QUICK_BACKEND=software qmlkonsole 
QObject::connect: No such slot Konsole::TerminalDisplay::close() in /home/pmos/build/src/qmltermwidget-fb525b7185acf3b91ba58051c337ae33294a7da7/lib/Session.cpp:214
loadAllColorSchemes
Using color-schemes:  ":/color-schemes/"
Using color-schemes:  ":/color-schemes/"
qml: QSize(37, 127)
Session::run() - program: "/bin/ash"
Session::run() - arguments: ("")
started!
qml: QSize(86, 143)

gdb output seemed useless, but I'll post it for reference anyway:

(gdb) r
Starting program: /usr/bin/qmlkonsole 
[New LWP 12793]
[New LWP 12881]
[New LWP 12882]
[New LWP 12884]
QObject::connect: No such slot Konsole::TerminalDisplay::close() in /home/pmos/build/src/qmltermwidget-fb525b7185acf3b91ba58051c337ae33294a7da7/lib/Session.cpp:214
loadAllColorSchemes
Using color-schemes:  ":/color-schemes/"
Using color-schemes:  ":/color-schemes/"
qml: QSize(37, 127)
Session::run() - program: "/bin/ash"
Session::run() - arguments: ("")
CRASHED! result:  -1
qml: QSize(86, 143)
[New LWP 14705]

Thread 6 "QSGRenderThread" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 14705]
0xb13ed434 in ?? () from /usr/lib/libLLVM-5.0.so
(gdb) bt
#0  0xb13ed434 in ?? () from /usr/lib/libLLVM-5.0.so
#1  0xb13ed508 in ?? () from /usr/lib/libLLVM-5.0.so
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Also the strace log (too long to post here): https://bpaste.net/show/b6bc44f0fd92

I'm not exactly sure what to do here. We can't start running every app with QT_QUICK_BACKEND=software... Doing that with plasma-nm and plasma-pa (and thus the whole Plasma shell) causes it to become completely unresponsive.

Possibly related to #1022 (closed)?