helloSystem / ISO

helloSystem Live and installation ISO
https://github.com/helloSystem/
BSD 3-Clause "New" or "Revised" License
806 stars 58 forks source link

pre-0.7.0: With some GPUs, Kwin.app cannot start from DVD #316

Open probonopd opened 2 years ago

probonopd commented 2 years ago

With some Nvidia GPUs, Kwin.app cannot start

DISPLAY=:0.0 QT_DEBUG_PLUGINS=1 /System/KWin.app/KWin 
Cannot load library /usr/local/lib/qt5/plugins/kf5/kwindowsystem/KF5WindowSystemX11Plugin.so: (/usr/local/lib/qt5/plugins/kf5/kwindowsystem/KF5WindowSystemX11Plugin.so: Undefined symbol "_ZTI23KWindowEffectsPrivateV2")

Afftected, e.g.:

Workaround:

Put export=KWIN_COMPOSE=O2 into /usr/local/bin/start-hello

probonopd commented 2 years ago

Should be fixed by https://github.com/helloSystem/KWin/pull/6 and https://github.com/helloSystem/ISO/commit/696e469adc00687cf85f3e690cc22debd4fc3acf.

Thanks @jsm222 for figuring this out.

Please comment here if the issue persists.

probonopd commented 2 years ago

It was reported on IRC that the issue persists for the NVIDIA GeForce GTX 1080.

It uses version 470.74 of the Nvidia drivers. https://www.mail-archive.com/debian-qt-kde@lists.debian.org/msg102470.html might be related.

probonopd commented 2 years ago

Try:

probonopd commented 2 years ago
(...)
kf.coreaddons: Checking for plugins in ("/System/KWin.app/Resources/plugins/org.kde.kwin.platforms", "/usr/local/lib/qt5/plugins/org.kde.kwin.platforms", "/System/KWin.app/Resources/org.kde.kwin.platforms")
Using stub for libKF5Crash
kwin_core: Extensions: shape: 0x "11"  composite: 0x "4"  render: 0x "b"  fixes: 0x "50"  randr: 0x "14"  sync: 0x "31"  damage: 0x  "11"
kwin_xkbcommon: XKB: /usr/local/lib/X11/locale/en_US.UTF-8/Compose:5089:46: this compose sequence is a duplicate of another; skipping line
kwin_xkbcommon: XKB: /usr/local/lib/X11/locale/en_US.UTF-8/Compose:5091:48: this compose sequence is a duplicate of another; skipping line
kwin_xkbcommon: XKB: /usr/local/lib/X11/locale/en_US.UTF-8/Compose:5093:48: this compose sequence is a duplicate of another; skipping line
kwin_xkbcommon: XKB: /usr/local/lib/X11/locale/en_US.UTF-8/Compose:5097:47: this compose sequence is a duplicate of another; skipping line
kwin_xkbcommon: XKB: /usr/local/lib/X11/locale/en_US.UTF-8/Compose:5099:46: this compose sequence is a duplicate of another; skipping line
kwin_xkbcommon: XKB: /usr/local/lib/X11/locale/en_US.UTF-8/Compose:5107:48: this compose sequence is a duplicate of another; skipping line
kwin_xkbcommon: XKB: /usr/local/lib/X11/locale/en_US.UTF-8/Compose:5111:46: this compose sequence is a duplicate of another; skipping line
kwin_xkbcommon: XKB: /usr/local/lib/X11/locale/en_US.UTF-8/Compose:5113:46: this compose sequence is a duplicate of another; skipping line
kwin_xkbcommon: XKB: /usr/local/lib/X11/locale/en_US.UTF-8/Compose:5117:45: this compose sequence is a duplicate of another; skipping line
kwin_xkbcommon: XKB: /usr/local/lib/X11/locale/en_US.UTF-8/Compose:5120:46: this compose sequence is a duplicate of another; skipping line
kf.coreaddons: Checking for plugins in ("/System/KWin.app/Resources/plugins/org.kde.kdecoration2", "/usr/local/lib/qt5/plugins/org.kde.kdecoration2", "/System/KWin.app/Resources/org.kde.kdecoration2")
kwin_core: User timestamp, ASN: 486982
kwin_core: User timestamp, final: KWin::X11Client(0x80a625900, windowId=0x140000b, caption="AppRun") : 486982
kwin_core: User timestamp, ASN: 4294967295
kwin_core: User timestamp, final: KWin::X11Client(0x80a626300, windowId=0x140000e, caption="AppRun") : 4294967295
kwin_core: User timestamp, ASN: 4294967295
kwin_core: User timestamp, final: KWin::X11Client(0x80a626800, windowId=0x1800006, caption="AppRun") : 4294967295
kf.coreaddons: Checking for plugins in ("/System/KWin.app/Resources/plugins/kwin/plugins", "/usr/local/lib/qt5/plugins/kwin/plugins", "/System/KWin.app/Resources/kwin/plugins")
kf.coreaddons: Checking for plugins in ("/System/KWin.app/Resources/plugins/org.kde.kwin.scenes", "/usr/local/lib/qt5/plugins/org.kde.kwin.scenes", "/System/KWin.app/Resources/org.kde.kwin.scenes")
kwin_core: Available scene plugin: "/System/KWin.app/Resources/plugins/org.kde.kwin.scenes/KWinSceneOpenGL.so"
kwin_core: Available scene plugin: "/System/KWin.app/Resources/plugins/org.kde.kwin.scenes/KWinSceneQPainter.so"
kwin_core: Available scene plugin: "/System/KWin.app/Resources/plugins/org.kde.kwin.scenes/KWinSceneXRender.so"
kwin_core: Attempting to load the OpenGL scene
kwin_scene_opengl: Initializing OpenGL compositing
OpenGL vendor string:                   NVIDIA Corporation
OpenGL renderer string:                 GeForce GTX 1080/PCIe/SSE2
OpenGL version string:                  4.5.0 NVIDIA 390.144
OpenGL shading language version string: 4.50 NVIDIA
Driver:                                 NVIDIA
Driver version:                         390.144
GPU class:                              Unknown
OpenGL version:                         4.5
GLSL version:                           4.50
X server version:                       1.20.11
Requires strict binding:                no
GLSL shaders:                           yes
Texture NPOT support:                   yes
Virtual Machine:                        no
kwin_scene_opengl: 0x0: OpenGL debug output initialized
kwin_scene_opengl: Initializing fences for synchronization with the X command stream
Using stub for libKF5Crash
Freeze in OpenGL initialization detected
jsm222 commented 2 years ago

From the code

 m_openGLFreezeProtection->setInterval(15000);
            m_openGLFreezeProtection->setSingleShot(true);
            m_openGLFreezeProtection->start();
            const QString configName = kwinApp()->config()->name();
            m_openGLFreezeProtection->moveToThread(m_openGLFreezeProtectionThread);
            connect(m_openGLFreezeProtection, &QTimer::timeout, m_openGLFreezeProtection,
                [configName] {
                    const QString unsafeKey(QLatin1String("OpenGLIsUnsafe") + (kwinApp()->isX11MultiHead() ? QString::number(kwinApp()->x11ScreenNumber()) : QString()));
                    auto group = KConfigGroup(KSharedConfig::openConfig(configName), "Compositing");
                    group.writeEntry(unsafeKey, true);
                    group.sync();
                    KCrash::setDrKonqiEnabled(false);
                    qFatal("Freeze in OpenGL initialization detected");
                }, Qt::DirectConnection);

You hit the limit of 15 seconds, when booting from DVD because the I/O is very slow in the current iso layout. I just reproduced the issue on GT-730 which works fine when booting from USB.

probonopd commented 2 years ago

We should report this upstream. I doubt we are the only ones trying to run KWin on Live DVDs...

In fact I wonder how their own reference distribution Live ISO performs when running from DVD: https://neon.kde.org/download

jsm222 commented 2 years ago

I think you are having much more optical seeking with the current layout than Linux does.I do not know the bottleneck perhaps that the compressed uzip is staying on the disc... But it is way to slow, I do not think 15 seconds is a low timeout for starting kwin_x11 i.e not an upstream issue.

jsm222 commented 2 years ago

A boot time vs usablity tradeoff:

-mdconfig -a -t vnode -o readonly -f /boot/rootfs.uzip
+cp /boot/rootfs.uzip /tmp
+mdconfig -a -t vnode -o readonly -f /tmp/rootfs.uzip