https://bugs.kde.org/show_bug.cgi?id=526457

            Bug ID: 526457
           Summary: random crash of plasmashell QSGRenderThread with
                    nvidia driver
    Classification: Plasma
           Product: plasmashell
      Version First 6.7.5
       Reported In:
          Platform: FreeBSD Ports
                OS: FreeBSD
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: generic-crash
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: 1.0

DESCRIPTION

plasmashell process periodically crashes on my system.
I cannot associate the crash with any activity, mine or system. It seems to
happen at random.
I've been having this problem for a while now but I cannot recall when exactly
it started.
It could have been after one of nvidia driver updates.

Yes, this system uses NVIDIA GPU and the graphics stack provided by NVIDIA.

The crash is always in QSGRenderThread.
Here is how the stack trace looks (no debug symbols):
#0  thr_kill () at thr_kill.S:4
#1  0x0000000842e3cdd4 in __raise (s=11) at /usr/src/lib/libc/gen/raise.c:48
#2  0x000000082a4459d8 in KCrash::defaultCrashHandler(int) () at
/usr/local/lib/libKF6Crash.so.6
#3  0x000000084242a55c in handle_signal (actp=actp@entry=0x8fced04c0,
sig=sig@entry=11, info=info@entry=0x8fced08b0, ucp=ucp@entry=0x8fced0540) at
/usr/src/lib/libthr/thread/thr_sig.c:317
#4  0x0000000842429b7b in thr_sighandler (sig=11, info=0x8fced08b0,
_ucp=0x8fced0540) at /usr/src/lib/libthr/thread/thr_sig.c:261
#5  0x0000000820d092e3 in <signal handler called> ()
#6  0x000000089542abc0 in ??? () at /usr/local/lib/libnvidia-glcore.so.1
#7  0x0000000895431232 in ??? () at /usr/local/lib/libnvidia-glcore.so.1
#8  0x0000000895432d51 in ??? () at /usr/local/lib/libnvidia-glcore.so.1
#9  0x0000000895123cc7 in ??? () at /usr/local/lib/libnvidia-glcore.so.1
#10 0x0000000895129f8b in ??? () at /usr/local/lib/libnvidia-glcore.so.1
#11 0x00000008360b4a79 in
QSGBatchRenderer::Renderer::unmap(QSGBatchRenderer::Buffer*, bool) () at
/usr/local/lib/qt6/libQt6Quick.so.6
#12 0x00000008360b98cf in
QSGBatchRenderer::Renderer::uploadBatch(QSGBatchRenderer::Batch*) () at
/usr/local/lib/qt6/libQt6Quick.so.6
#13 0x00000008360c0463 in
QSGBatchRenderer::Renderer::prepareRenderPass(QSGBatchRenderer::Renderer::RenderPassContext*)
() at /usr/local/lib/qt6/libQt6Quick.so.6
#14 0x00000008360bff6b in QSGBatchRenderer::Renderer::render() () at
/usr/local/lib/qt6/libQt6Quick.so.6
#15 0x00000008360daaf1 in QSGRenderer::renderScene() () at
/usr/local/lib/qt6/libQt6Quick.so.6
#16 0x0000000836127521 in QSGRhiLayer::grab() () at
/usr/local/lib/qt6/libQt6Quick.so.6
#17 0x0000000836126af6 in QSGRhiLayer::updateTexture() () at
/usr/local/lib/qt6/libQt6Quick.so.6
#18 0x000000083612d8d4 in ??? () at /usr/local/lib/qt6/libQt6Quick.so.6
#19 0x00000008360db15f in QSGRenderer::preprocess() () at
/usr/local/lib/qt6/libQt6Quick.so.6
#20 0x00000008360daae5 in QSGRenderer::renderScene() () at
/usr/local/lib/qt6/libQt6Quick.so.6
#21 0x0000000836127521 in QSGRhiLayer::grab() () at
/usr/local/lib/qt6/libQt6Quick.so.6
#22 0x0000000836126af6 in QSGRhiLayer::updateTexture() () at
/usr/local/lib/qt6/libQt6Quick.so.6
#23 0x000000083612d8d4 in ??? () at /usr/local/lib/qt6/libQt6Quick.so.6
#24 0x00000008360db15f in QSGRenderer::preprocess() () at
/usr/local/lib/qt6/libQt6Quick.so.6
#25 0x00000008360daae5 in QSGRenderer::renderScene() () at
/usr/local/lib/qt6/libQt6Quick.so.6
#26 0x0000000836076986 in QQuickWindowPrivate::renderSceneGraph() () at
/usr/local/lib/qt6/libQt6Quick.so.6
#27 0x000000083628f4dd in ??? () at /usr/local/lib/qt6/libQt6Quick.so.6
#28 0x0000000836290691 in ??? () at /usr/local/lib/qt6/libQt6Quick.so.6
#29 0x000000083faf57ff in ??? () at /usr/local/lib/qt6/libQt6Core.so.6
#30 0x0000000842421001 in thread_start (curthread=0x1dbe128f8810) at
/usr/src/lib/libthr/thread/thr_create.c:299

I tried to look at frame 6 and it seems like a NULL pointer dereference:
   0x000000089542abbb:  test   %rdi,%rdi
   0x000000089542abbe:  je     0x89542abe1
=> 0x000000089542abc0:  mov    0x98(%rsi),%rax
   0x000000089542abc7:  mov    0x1060(%rdi),%edx
   0x000000089542abcd:  mov    0x1078(%rdi),%rbx

(kgdb) p/a $rdi
$2 = 0x1dbe1913c3c0
(kgdb) p/a $rsi
$3 = 0x0

The code checks for NULL in rdi but fails because of NULL in rsi.
Of course, the code is NVIDIA proprietary, so it's hard to really debug it.

STEPS TO REPRODUCE

Happens at random in the given environment.

OBSERVED RESULT

plasmashell process crash.

SOFTWARE/OS VERSIONS

Operating System: FreeBSD 15.1
KDE Plasma Version: 6.7.5
KDE Frameworks Version: 6.30.0
Qt Version: 6.11.2
Kernel Version: 15.1-STABLE (64-bit)
Graphics Platform: X11
Memory: 95.8 GiB of usable RAM
Graphics Processor: NVIDIA GeForce GTX 1660

ADDITIONAL INFORMATION

NVIDIA driver version 595.99.02
But I had the problem when it was 595.84, not sure about the earliest version.
Also, I had the problem when Plasma version was 6.6.6, not sure if I had it
with 6.6.5 or earlier.

Not sure if this report is actionable.
Or even whether it's something in Plasma, or Qt or nvidia.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to