SDDM not working with VirtualBox 3D

147 views
Skip to first unread message

michael...@oracle.com

unread,
Nov 18, 2015, 11:34:29 AM11/18/15
to sddm-devel
Hello,

When I enable 3D globally in VirtualBox (that is, build our libGL.so.1 as a normal shared library and install it), SDDM ceases to work.  I tested with 0.13 (RPM from Fedora Rawhide) just in case.  The last entries in the system log are:

Nov 18 16:21:01 localhost.localdomain systemd[1]: Started Simple Desktop Display Manager.
Nov 18 16:21:01 localhost.localdomain systemd[1]: Starting Simple Desktop Display Manager...
Nov 18 16:21:03 localhost.localdomain sddm-helper[1152]: pam_unix(sddm-greeter:session): session opened for user sddm by (uid=0)
Nov 18 16:21:07 localhost.localdomain sddm[971]: Auth: sddm-helper exited with 6

I expect it is some problem with our 3D pass-through, but I would greatly appreciate any suggestions about how I can debug this, probably starting with what information I can provide.

Thanks!

Regards,

Michael
-- 
ORACLE Deutschland B.V. & Co. KG   Michael Thayer
Werkstrasse 24                     VirtualBox engineering
71384 Weinstadt, Germany           mailto:michael...@oracle.com

ORACLE Deutschland B.V. & Co. KG
Hauptverwaltung: Riesstraße 25, D-80992 München
Registergericht: Amtsgericht München, HRA 95603

Komplementärin: ORACLE Deutschland Verwaltung B.V.
Hertogswetering 163/167, 3543 AS Utrecht, Niederlande Handelsregister der Handelskammer Midden-Niederlande, Nr. 30143697
Geschäftsführer: Alexander van der Ven, Astrid Kepper, Val Maher

Pier Luigi Fiorini

unread,
Nov 20, 2015, 10:38:00 AM11/20/15
to michael...@oracle.com, sddm-devel
2015-11-18 17:34 GMT+01:00 <michael...@oracle.com>:
Hello,

When I enable 3D globally in VirtualBox (that is, build our libGL.so.1 as a normal shared library and install it), SDDM ceases to work.  I tested with 0.13 (RPM from Fedora Rawhide) just in case.  The last entries in the system log are:

Nov 18 16:21:01 localhost.localdomain systemd[1]: Started Simple Desktop Display Manager.
Nov 18 16:21:01 localhost.localdomain systemd[1]: Starting Simple Desktop Display Manager...
Nov 18 16:21:03 localhost.localdomain sddm-helper[1152]: pam_unix(sddm-greeter:session): session opened for user sddm by (uid=0)
Nov 18 16:21:07 localhost.localdomain sddm[971]: Auth: sddm-helper exited with 6

I expect it is some problem with our 3D pass-through, but I would greatly appreciate any suggestions about how I can debug this, probably starting with what information I can provide.


Hi,

First of all a stack trace would be very welcome and to get a better result you should build SDDM with debug symbols (or install the debuginfo package).
If you can get the Qt debug symbols installed it would be even better.

Also enabling Qt debug messages with a file of rules as exaplained here: http://doc.qt.io/qt-5/qloggingcategory.html#configuring-categories
I don't recall all the logging categories that might be relevant, a catch all is:

[Rules]
*.debug=true

This will print tons of debug messages which will include stuff we are not interested but also relevant messages.

Once you have done that, reproduce the problem and check if you can get a stack trace with coredumpctl and if the journal shows the Qt debug messages.

--
Out of the box experience

Michael Thayer

unread,
Nov 24, 2015, 1:57:12 PM11/24/15
to Pier Luigi Fiorini, sddm-devel
Hello Pier,

Looks pretty simple if I read that correctly: sddm wants EGL and we do
not provide it (at least, that is how I interpret "QEGLPlatformContext:
Failed to create context: 3004"). Information below.

Regards,

Michael

# gdb /usr/bin/sddm-greeter
/var/spool/abrt/ccpp-2015-11-18-16\:21\:07-1175/coredump
[...]
(gdb) bt
#0 0x00007f004feada98 in __GI_raise (sig=sig@entry=6)
at ../sysdeps/unix/sysv/linux/raise.c:55
#1 0x00007f004feaf69a in __GI_abort () at abort.c:89
#2 0x00007f0050b65af1 in qt_message_fatal (context=...,
message=<synthetic pointer>) at global/qlogging.cpp:1575
#3 QMessageLogger::fatal (this=<optimized out>, msg=<optimized out>)
at global/qlogging.cpp:777
#4 0x00007f00523cb971 in
QSGRenderLoop::handleContextCreationFailure(QQuickWindow*, bool) () from
/lib64/libQt5Quick.so.5
#5 0x00007f00523d41e2 in
QSGThreadedRenderLoop::handleExposure(QQuickWindow*)
() from /lib64/libQt5Quick.so.5
#6 0x00007f00523d45e3 in
QSGThreadedRenderLoop::exposureChanged(QQuickWindow*)
() from /lib64/libQt5Quick.so.5
#7 0x00007f005129c585 in QWindow::event (this=0x5602ce3e2d90,
ev=<optimized out>) at kernel/qwindow.cpp:2053
#8 0x00007f0052406e91 in QQuickWindow::event(QEvent*) ()
from /lib64/libQt5Quick.so.5
#9 0x00007f0050d584e9 in QCoreApplication::notify (this=<optimized out>,
receiver=<optimized out>, event=<optimized out>)
at kernel/qcoreapplication.cpp:1038
#10 0x00007f0050d5861b in QCoreApplication::notifyInternal (
this=0x7ffedc3d0930, receiver=receiver@entry=0x5602ce3e2d90,
event=event@entry=0x7ffedc3d05e0) at kernel/qcoreapplication.cpp:965
---Type <return> to continue, or q <return> to quit---
#11 0x00007f0051294abc in QCoreApplication::sendSpontaneousEvent (
event=0x7ffedc3d05e0, receiver=0x5602ce3e2d90)
at ../../src/corelib/kernel/qcoreapplication.h:227
#12 QGuiApplicationPrivate::processExposeEvent (e=0x5602ce8764b0)
at kernel/qguiapplication.cpp:2643
#13 0x00007f005129583d in QGuiApplicationPrivate::processWindowSystemEvent (
e=e@entry=0x5602ce8764b0) at kernel/qguiapplication.cpp:1644
#14 0x00007f00512795d8 in QWindowSystemInterface::sendWindowSystemEvents (
flags=...) at kernel/qwindowsysteminterface.cpp:608
#15 0x00007f0041499e80 in userEventSourceDispatch (source=<optimized out>)
at eventdispatchers/qeventdispatcher_glib.cpp:70
#16 0x00007f004ad3ae3a in g_main_dispatch (context=0x7f00380016f0)
at gmain.c:3154
#17 g_main_context_dispatch (context=context@entry=0x7f00380016f0)
at gmain.c:3769
#18 0x00007f004ad3b1d0 in g_main_context_iterate (
context=context@entry=0x7f00380016f0, block=block@entry=1,
dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3840
#19 0x00007f004ad3b27c in g_main_context_iteration (context=0x7f00380016f0,
may_block=may_block@entry=1) at gmain.c:3901
#20 0x00007f0050daed8f in QEventDispatcherGlib::processEvents (
this=0x5602ce3a2e30, flags=...) at kernel/qeventdispatcher_glib.cpp:418
#21 0x00007f0050d55daa in QEventLoop::exec (this=this@entry=0x7ffedc3d08a0,
---Type <return> to continue, or q <return> to quit---
flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#22 0x00007f0050d5de6c in QCoreApplication::exec ()
at kernel/qcoreapplication.cpp:1229
#23 0x00005602cd5a4088 in main (argc=5, argv=0x7ffedc3d0ab8)
at /usr/src/debug/sddm-0.13.0/src/greeter/GreeterApp.cpp:233

$ journalctl | grep sddm
[...]
Nov 24 19:45:55 localhost.localdomain systemd[1]: Stopping Session c1 of
user sddm.
Nov 24 19:45:55 localhost.localdomain systemd[1196]:
pam_unix(systemd-user:session): session closed for user sddm
Nov 24 19:45:55 localhost.localdomain sddm[985]: Signal received: SIGTERM
Nov 24 19:45:56 localhost.localdomain systemd[1]: Stopped Session c1 of
user sddm.
Nov 24 19:45:57 localhost.localdomain audit[1]: SERVICE_STOP pid=1 uid=0
auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0
msg='unit=sddm comm="systemd" exe="/usr/lib/systemd/systemd" hostname=?
addr=? terminal=? res=success'
Nov 24 19:46:11 localhost.localdomain audit[1]: SERVICE_START pid=1
uid=0 auid=4294967295 ses=4294967295 msg='unit=sddm comm="systemd"
exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
Nov 24 19:46:13 localhost.localdomain audit[1200]: USER_AUTH pid=1200
uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:authentication
grantors=pam_permit acct="sddm" exe="/usr/libexec/sddm-helper"
hostname=? addr=? terminal=? res=success'
Nov 24 19:46:13 localhost.localdomain audit[1200]: USER_ACCT pid=1200
uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:accounting
grantors=pam_permit acct="sddm" exe="/usr/libexec/sddm-helper"
hostname=? addr=? terminal=? res=success'
Nov 24 19:46:13 localhost.localdomain audit[1200]: CRED_ACQ pid=1200
uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:setcred
grantors=pam_permit acct="sddm" exe="/usr/libexec/sddm-helper"
hostname=? addr=? terminal=? res=success'
Nov 24 19:46:13 localhost.localdomain sddm-helper[1200]:
pam_unix(sddm-greeter:session): session opened for user sddm by (uid=0)
Nov 24 19:46:13 localhost.localdomain systemd-logind[738]: New session
c1 of user sddm.
Nov 24 19:46:13 localhost.localdomain systemd[1]: Started Session c1 of
user sddm.
Nov 24 19:46:13 localhost.localdomain systemd[1]: Starting Session c1 of
user sddm.
Nov 24 19:46:13 localhost.localdomain audit[1204]: USER_ACCT pid=1204
uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:accounting
grantors=pam_unix,pam_localuser acct="sddm"
exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
Nov 24 19:46:13 localhost.localdomain systemd[1204]:
pam_unix(systemd-user:session): session opened for user sddm by (uid=0)
Nov 24 19:46:13 localhost.localdomain audit[1204]: USER_START pid=1204
uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:session_open
grantors=pam_keyinit,pam_limits,pam_systemd,pam_unix acct="sddm"
exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
Nov 24 19:46:13 localhost.localdomain audit[1200]: USER_START pid=1200
uid=0 auid=4294967295 ses=4294967295 msg='op=PAM:session_open
grantors=pam_unix,pam_systemd acct="sddm" exe="/usr/libexec/sddm-helper"
hostname=? addr=? terminal=:0 res=success'
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:14 localhost.localdomain sddm-greeter[1212]:
QObject::installEventFilter(): Cannot filter events for objects in a
different thread.
Nov 24 19:46:15 localhost.localdomain sddm-greeter[1212]: QObject:
Cannot create children for a parent that is in a different thread.
Nov 24 19:46:15 localhost.localdomain sddm-greeter[1212]:
QObject::installEventFilter(): Cannot filter events for objects in a
different thread.
Nov 24 19:46:16 localhost.localdomain sddm-greeter[1212]:
QDBusConnection: name 'org.freedesktop.UDisks2' had owner '' but we
thought it was ':1.17'
Nov 24 19:46:16 localhost.localdomain sddm-greeter[1212]:
QEGLPlatformContext: Failed to create context: 3004
Nov 24 19:46:16 localhost.localdomain sddm-greeter[1212]: Failed to
create OpenGL context for format QSurfaceFormat(version 2.0, options
QFlags(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1,
blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1,
swapBehavior 2, swapInterval 1, profile 0)
Nov 24 19:46:16 localhost.localdomain audit[1212]: ANOM_ABEND
auid=4294967295 uid=989 gid=985 ses=4294967295 pid=1212
comm="sddm-greeter" exe="/usr/bin/sddm-greeter" sig=6
Nov 24 19:46:17 localhost.localdomain sddm[988]: Auth: sddm-helper
exited with 6

On 20.11.2015 16:37, Pier Luigi Fiorini wrote:
> 2015-11-18 17:34 GMT+01:00 <michael...@oracle.com
> <mailto:michael...@oracle.com>>:

Michael Thayer

unread,
Nov 24, 2015, 2:44:21 PM11/24/15
to Pier Luigi Fiorini, sddm-devel
Actually a question, as I am pretty naive in things EGL: what does sddm
actually need from EGL? Does it require a working drm set-up in
combination with it like Wayland does (which we really can't provide
just now), or does it basically do EGL plus OpenGL, just using
libEGL.so.1 and libGL.so.1? As I said, I don't know much about EGL, but
if what is needed is just a variant on GLX, perhaps something could be done.

Thanks.

Regards,

Michael

Pier Luigi Fiorini

unread,
Nov 25, 2015, 5:18:12 AM11/25/15
to Michael Thayer, sddm-devel
2015-11-24 20:44 GMT+01:00 Michael Thayer <michael...@oracle.com>:
Actually a question, as I am pretty naive in things EGL: what does sddm actually need from EGL?  Does it require a working drm set-up in combination with it like Wayland does (which we really can't provide just now), or does it basically do EGL plus OpenGL, just using libEGL.so.1 and libGL.so.1?  As I said, I don't know much about EGL, but if what is needed is just a variant on GLX, perhaps something could be done.

SDDM uses QtQuick which implies OpenGL, whether it uses EGL on Xorg depends on the QPA plugin.
Since Qt 5.5 the xcb QPA can use either EGL or GLX with the QT_XCB_GL_INTEGRATION environment variable.

Try setting QT_XCB_GL_INTEGRATION=xcb_glx

However this should already be the default.
Reply all
Reply to author
Forward
0 new messages