Bug 346913 - plasmashell segfaults on non-GLX 1.3 capable environments
Summary: plasmashell segfaults on non-GLX 1.3 capable environments
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: general (show other bugs)
Version: 5.3.0
Platform: Fedora RPMs Linux
: NOR crash
Target Milestone: 1.0
Assignee: David Edmundson
URL:
Keywords: drkonqi, triaged
Depends on:
Blocks:
 
Reported: 2015-04-29 17:50 UTC by Orion Poplawski
Modified: 2020-09-23 22:11 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Orion Poplawski 2015-04-29 17:50:33 UTC
Application: plasmashell (5.3.0)

Qt Version: 5.4.1
Operating System: Linux 4.0.0-1.fc22.x86_64 x86_64
Distribution (Platform): Fedora RPMs

-- Information about the crash:
- What I was doing when the application crashed:
Launching plasmashell

- Custom settings of the application:
Running under X2Go, which does not support GLX 1.3

So, it is understood that plasmashell is not supported under X2Go, but it would be nice if it exited gracefully with a helpful error message rather than attempting to start and ultimately segfaulting.

The crash can be reproduced every time.

-- Backtrace:
Application: Plasma (plasmashell), signal: Aborted
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f4d17494900 (LWP 25312))]

Thread 4 (Thread 0x7f4cf8219700 (LWP 25315)):
#0  0x00007f4d0f38a66d in poll () from /lib64/libc.so.6
#1  0x00007f4d15744182 in _xcb_conn_wait () from /lib64/libxcb.so.1
#2  0x00007f4d15745cff in xcb_wait_for_event () from /lib64/libxcb.so.1
#3  0x00007f4cf9d615e9 in QXcbEventReader::run (this=0x12c4710) at qxcbconnection.cpp:1108
#4  0x00007f4d0ff9545e in QThreadPrivate::start (arg=0x12c4710) at thread/qthread_unix.cpp:337
#5  0x00007f4d0de3f555 in start_thread () from /lib64/libpthread.so.0
#6  0x00007f4d0f395f3d in clone () from /lib64/libc.so.6

Thread 3 (Thread 0x7f4cf62a1700 (LWP 25316)):
#0  0x00007f4d0a998214 in g_mutex_unlock () from /lib64/libglib-2.0.so.0
#1  0x00007f4d0a952980 in g_main_context_prepare () from /lib64/libglib-2.0.so.0
#2  0x00007f4d0a95331b in g_main_context_iterate.isra () from /lib64/libglib-2.0.so.0
#3  0x00007f4d0a9534fc in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#4  0x00007f4d101c44eb in QEventDispatcherGlib::processEvents (this=0x7f4ce80008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:420
#5  0x00007f4d1016b27a in QEventLoop::exec (this=this@entry=0x7f4cf62a0ca0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#6  0x00007f4d0ff90494 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:503
#7  0x00007f4d141ed765 in QQmlThreadPrivate::run() () from /lib64/libQt5Qml.so.5
#8  0x00007f4d0ff9545e in QThreadPrivate::start (arg=0x1360830) at thread/qthread_unix.cpp:337
#9  0x00007f4d0de3f555 in start_thread () from /lib64/libpthread.so.0
#10 0x00007f4d0f395f3d in clone () from /lib64/libc.so.6

Thread 2 (Thread 0x7f4ce6fe6700 (LWP 25317)):
#0  0x00007f4d0a950470 in g_source_iter_next () from /lib64/libglib-2.0.so.0
#1  0x00007f4d0a952d5a in g_main_context_check () from /lib64/libglib-2.0.so.0
#2  0x00007f4d0a953390 in g_main_context_iterate.isra () from /lib64/libglib-2.0.so.0
#3  0x00007f4d0a9534fc in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#4  0x00007f4d101c44eb in QEventDispatcherGlib::processEvents (this=0x7f4ce00008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:420
#5  0x00007f4d1016b27a in QEventLoop::exec (this=this@entry=0x7f4ce6fe5ca0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#6  0x00007f4d0ff90494 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:503
#7  0x00007f4d141ed765 in QQmlThreadPrivate::run() () from /lib64/libQt5Qml.so.5
#8  0x00007f4d0ff9545e in QThreadPrivate::start (arg=0x1531b50) at thread/qthread_unix.cpp:337
#9  0x00007f4d0de3f555 in start_thread () from /lib64/libpthread.so.0
#10 0x00007f4d0f395f3d in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7f4d17494900 (LWP 25312)):
[KCrash Handler]
#5  0x00007f4d0f2c8a98 in raise () from /lib64/libc.so.6
#6  0x00007f4d0f2ca72a in abort () from /lib64/libc.so.6
#7  0x00007f4d0ff82a48 in qt_message_fatal (context=..., message=...) at global/qlogging.cpp:1415
#8  QMessageLogger::fatal (this=this@entry=0x7fffe4314230, msg=msg@entry=0x48cd00 "We have no shell handlers installed") at global/qlogging.cpp:636
#9  0x0000000000460cb6 in ShellManager::updateShell (this=this@entry=0x1349b10) at ../../shell/shellmanager.cpp:184
#10 0x0000000000461764 in ShellManager::loadHandlers (this=0x1349b10) at ../../shell/shellmanager.cpp:134
#11 0x00000000004832fd in ShellManager::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at moc_shellmanager.cpp:100
#12 0x00007f4d1019e3f1 in QObject::event (this=0x1349b10, e=<optimized out>) at kernel/qobject.cpp:1245
#13 0x00007f4d116eddec in QApplicationPrivate::notify_helper (this=this@entry=0x12b0270, receiver=receiver@entry=0x1349b10, e=e@entry=0x13525e0) at kernel/qapplication.cpp:3720
#14 0x00007f4d116f3370 in QApplication::notify (this=0x7fffe4314aa0, receiver=0x1349b10, e=0x13525e0) at kernel/qapplication.cpp:3503
#15 0x00007f4d1016d7fb in QCoreApplication::notifyInternal (this=0x7fffe4314aa0, receiver=0x1349b10, event=event@entry=0x13525e0) at kernel/qcoreapplication.cpp:935
#16 0x00007f4d1016ff27 in sendEvent (event=0x13525e0, receiver=<optimized out>) at kernel/qcoreapplication.h:228
#17 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x12a5b20) at kernel/qcoreapplication.cpp:1552
#18 0x00007f4d10170458 in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0) at kernel/qcoreapplication.cpp:1410
#19 0x00007f4d101c40c3 in postEventSourceDispatch (s=0x12d9150) at kernel/qeventdispatcher_glib.cpp:271
#20 0x00007f4d0a9530ba in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#21 0x00007f4d0a953450 in g_main_context_iterate.isra () from /lib64/libglib-2.0.so.0
#22 0x00007f4d0a9534fc in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#23 0x00007f4d101c44cf in QEventDispatcherGlib::processEvents (this=0x12e27a0, flags=...) at kernel/qeventdispatcher_glib.cpp:418
#24 0x00007f4d1016b27a in QEventLoop::exec (this=this@entry=0x7fffe4314920, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#25 0x00007f4d10172cdc in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1188
#26 0x00007f4d1068269c in QGuiApplication::exec () at kernel/qguiapplication.cpp:1507
#27 0x00007f4d116eac15 in QApplication::exec () at kernel/qapplication.cpp:2956
#28 0x000000000042eb0f in main (argc=3, argv=<optimized out>) at ../../shell/main.cpp:154

Possible duplicates by query: bug 336864, bug 335216.

Reported using DrKonqi
Comment 1 David Edmundson 2015-04-29 18:25:29 UTC
That seg fault isn't about non GLX.

That's either:
1) missing plasma-desktop
2) broken XDG_DATA_DIRS environment variable if you're self compiled.

In the next release this problem will be "solved" with a dialog making it more obvious.

You might still have an error on non GLX, but this isn't it.

Can you check and report back for me?
Comment 2 Orion Poplawski 2015-04-29 19:48:41 UTC
Yes, I was testing in a minimal environment - so I take it that we (Fedora) should have plasma-workspace depend on plasma-desktop?  Currently it does not.  Or does plasmashell need to get fixed so as to not segfault in this case?

I installed plasma-desktop and it does appear to start up.  I don't see the panel displayed though.  output:

QXcbConnection: Failed to get the primary output of the screen
QXcbConnection: XCB error: 172 (Unknown), sequence: 162, resource id: 239, major code: 149 (Unknown), minor code: 20
kf5.kservice.sycoca: Trying to open ksycoca from "/home/orion/.cache/ksycoca5"
populateAddPanelsMenu 1
WARNING: Application calling GLX 1.3 function "glXCreatePbuffer" when GLX 1.3 is not supported!  This is an application bug!
kscreen: Launcher finished with exit code 0 , status 1
Comment 3 Orion Poplawski 2015-04-29 20:05:45 UTC
Filed https://bugreports.qt.io/browse/QTBUG-45895
Comment 4 Andrew Crouthamel 2018-09-25 21:48:09 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least 15 days. Please provide the requested information as soon as possible and set the bug status as REPORTED. Due to regular bug tracker maintenance, if the bug is still in NEEDSINFO status with no change in 30 days, the bug will be closed as RESOLVED > WORKSFORME due to lack of needed information.

For more information about our bug triaging procedures please read the wiki located here: https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please set the bug status as REPORTED so that the KDE team knows that the bug is ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 5 Orion Poplawski 2018-09-25 22:20:02 UTC
I don't see any dialog indicating what the issue is.  I do get a krunner crash dialog reporting a Qt abort trying to initialize GLX:

Thread 1 (Thread 0x7fb6f7b2d940 (LWP 31720)):
[KCrash Handler]
#6  0x00007fb705e24eab in raise () from /lib64/libc.so.6
#7  0x00007fb705e0f5b9 in abort () from /lib64/libc.so.6
#8  0x00007fb706b73093 in qt_message_fatal (context=..., message=<synthetic pointer>...) at global/qlogging.cpp:1842
#9  QMessageLogger::fatal (this=this@entry=0x7fffd1cb7af0, msg=msg@entry=0x7fb70a99b7f0 "Could not initialize GLX") at global/qlogging.cpp:880
#10 0x00007fb70a995fe8 in QGLXContext::init (this=0x55f99b09d930, screen=0x55f99afe56f0, share=<optimized out>) at qglxintegration.cpp:375
#11 0x00007fb70a99648b in QXcbGlxIntegration::createPlatformOpenGLContext (this=<optimized out>, context=0x7fffd1cb7c60) at qxcbglxintegration.cpp:184
#12 0x00007fb6eb1f3ca9 in QXcbIntegration::createPlatformOpenGLContext(QOpenGLContext*) const () at qxcbintegration.cpp:281
#13 0x00007fb707124091 in QOpenGLContext::create (this=this@entry=0x7fffd1cb7c60) at ../../include/QtGui/5.11.1/QtGui/private/../../../../../src/gui/kernel/qguiapplication_p.h:105
#14 0x00007fb70a9996d7 in QGLXContext::queryDummyContext() () at qglxintegration.cpp:757
#15 0x00007fb70a999d0d in QGLXContext::supportsThreading () at qglxintegration.cpp:804
#16 0x00007fb70943eff5 in QSGRenderLoop::instance() () from /lib64/libQt5Quick.so.5
#17 0x00007fb7094b258a in QQuickWindowPrivate::init(QQuickWindow*, QQuickRenderControl*) () from /lib64/libQt5Quick.so.5
#18 0x00007fb70a5482e2 in PlasmaQuick::Dialog::Dialog(QQuickItem*) () from /lib64/libKF5PlasmaQuick.so.5
#19 0x000055f99a164f7f in View::View(QWindow*) ()
#20 0x000055f99a16396d in main ()

Sep 25 15:58:55 bld-pc1.cora.nwra.com plasmashell[26162]: Could not initialize GLX
Sep 25 15:58:56 bld-pc1.cora.nwra.com plasmashell[26469]: "Message recipient disconnected from message bus without replying"

orion    31958 31668  1 16:14 ?        00:00:02 /usr/libexec/drkonqi -platform xcb -display :51 --appname plasmashell --apppath /usr/bin --signal 6 --pid 31722 --appversion 5.13.4 --programname Plasma --bugaddress submit@bugs.kde.org --startupid 0 --restarted

plasma-desktop-5.13.4-1.fc28.x86_64
Comment 6 David Edmundson 2020-09-23 22:11:39 UTC
As a workaround

run kcmshell5 qtquickettings

select software as the backend
you'll get something that works.

This should be done automatically starting with Plasma 5.something.


Please report back if this is still an issue with Plasma 5.18 or newer.