Bug 404192 - kscreenlocker_greet 100% cpu and BSOD with cursor on wakeup from suspend with NVIDIA
Summary: kscreenlocker_greet 100% cpu and BSOD with cursor on wakeup from suspend with...
Status: RESOLVED WORKSFORME
Alias: None
Product: kscreenlocker
Classification: Plasma
Component: greeter (show other bugs)
Version: unspecified
Platform: Ubuntu Linux
: NOR major
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-02-11 06:44 UTC by Kyle K
Modified: 2020-05-18 08:16 UTC (History)
3 users (show)

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


Attachments
thread apply all (30.92 KB, text/plain)
2019-02-11 20:18 UTC, Kyle K
Details
~/.config/kdeglobals (3.96 KB, text/plain)
2019-02-11 20:19 UTC, Kyle K
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Kyle K 2019-02-11 06:44:15 UTC
SUMMARY
kscreenlocker_greet is consuming 100% of a core sitting on Blank Screen Of Death after a wakeup with only mouse cursor visible, I have to switch to tty2 and kill kscreenlocker_greet, after that usual login/greet shows up and allowing me to login and get back to DE

[code]Thread 1 "kscreenlocker_g" received signal SIGINT, Interrupt.
futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x5583fc92d524)
    at ../sysdeps/unix/sysv/linux/futex-internal.h:88
88      in ../sysdeps/unix/sysv/linux/futex-internal.h
#0  futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x5583fc92d524)
    at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1  __pthread_cond_wait_common (abstime=0x0, mutex=0x5583fc92d4d0, cond=0x5583fc92d4f8) at pthread_cond_wait.c:502
#2  __pthread_cond_wait (cond=0x5583fc92d4f8, mutex=0x5583fc92d4d0) at pthread_cond_wait.c:655
#3  0x00007f11d90d143b in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007f11da2333d7 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#5  0x00007f11da2358c0 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#6  0x00007f11da235ef3 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#7  0x00007f11d968ab05 in QWindow::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#8  0x00007f11da29787b in QQuickWindow::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5
#9  0x00007f11d9279499 in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#10 0x00007f11d967f7e3 in QGuiApplicationPrivate::processExposeEvent(QWindowSystemInterfacePrivate::ExposeEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#11 0x00007f11d96804bd in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*)
    () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#12 0x00007f11d965ab6b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#13 0x00007f11d2a9de5b in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#14 0x00007f11d927816b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007f11d92802e2 in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#16 0x00005583fa4c2c0e in ?? ()
#17 0x00007f11d8cbe09b in __libc_start_main (main=0x5583fa4c24a0, argc=6, argv=0x7ffcbe3ac9f8, init=<optimized out>, 
    fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffcbe3ac9e8) at ../csu/libc-start.c:308
#18 0x00005583fa4c2eea in _start ()
Detaching from program: /usr/lib/x86_64-linux-gnu/libexec/kscreenlocker_greet, process 15745
[Inferior 1 (process 15745) detached][/code]


STEPS TO REPRODUCE
1. Suspend
2. Wakeup

OBSERVED RESULT
BSOD, can't login, can only move mouse cursor around

EXPECTED RESULT
Login and continue doing work

SOFTWARE/OS VERSIONS
Operating System: Kubuntu 18.10 with kubuntu-ppa
KDE Plasma Version: 5.14.5
Qt Version: 5.11.1
KDE Frameworks Version: 5.52.0
Kernel Version: 4.18.0-14-generic
Nvidia 410.78 driver
GeForce GTX 980


ADDITIONAL INFORMATION
Comment 1 David Edmundson 2019-02-11 08:32:18 UTC
can you get a backtrace with 

"thread apply all bt"

thread 0 is just blocked waiting on others
Also can I see your ~/.config/kdeglobals
Comment 2 Kyle K 2019-02-11 20:18:21 UTC
Created attachment 117986 [details]
thread apply all
Comment 3 Kyle K 2019-02-11 20:19:56 UTC
Created attachment 117987 [details]
~/.config/kdeglobals
Comment 4 Kyle K 2019-02-11 20:31:30 UTC
(In reply to David Edmundson from comment #1)
> can you get a backtrace with 
> 
> "thread apply all bt"
> 
> thread 0 is just blocked waiting on others
> Also can I see your ~/.config/kdeglobals

Done, sorry I haven't debugged with gdb in ages. I'm not sure if the gdb backtrace is useful at all. I saw that Thread 7 did get inside of libGLX_nvidia.so routines, I wonder if this is the thread that's consuming 100% of a core? I will research if there's a way to tell which Thread is spinning, seems like rest of the threads are sleeping or waiting.

1 other interesting thing that happens is that my PC fails to suspend whenever kscreenlocker_greet 100% cpu wakeup incident gets triggered, upon suspend the PC turns off HDDs/keyboard/mouse but the still continues running and monitor switches to tty1 and displays this error: Freezing of tasks failed after 20.005 seconds (1 tasks refusing to freeze, wq_busy=0)

In kernel log I see something regarding "QQuickPixmapRea" and 16963, I looked for 16963 and it happens to be PID of /usr/bin/ksmserver

Feb 11 06:28:43 ROG kernel: Freezing user space processes ... 
Feb 11 06:28:43 ROG kernel: Freezing of tasks failed after 20.005 seconds (1 tasks refusing to freeze, wq_busy=0):
Feb 11 06:28:43 ROG kernel: QQuickPixmapRea D    0 16963  30621 0x00000124
Feb 11 06:28:43 ROG kernel: Call Trace:
Feb 11 06:28:43 ROG kernel:  __schedule+0x29e/0x840
Feb 11 06:28:43 ROG kernel:  schedule+0x2c/0x80
Feb 11 06:28:43 ROG kernel:  request_wait_answer+0xa3/0x210
Feb 11 06:28:43 ROG kernel:  ? wait_woken+0x80/0x80
Feb 11 06:28:43 ROG kernel:  __fuse_request_send+0x69/0x90
Feb 11 06:28:43 ROG kernel:  fuse_request_send+0x29/0x30
Feb 11 06:28:43 ROG kernel:  fuse_simple_request+0xdd/0x1a0
Feb 11 06:28:43 ROG kernel:  fuse_dentry_revalidate+0x1a1/0x330
Feb 11 06:28:43 ROG kernel:  d_revalidate.part.26+0x10/0x20
Feb 11 06:28:43 ROG kernel:  lookup_fast+0x30e/0x330
Feb 11 06:28:43 ROG kernel:  walk_component+0x49/0x4b0
Feb 11 06:28:43 ROG kernel:  ? inode_permission+0x63/0x1a0
Feb 11 06:28:43 ROG kernel:  link_path_walk+0x2c6/0x540
Feb 11 06:28:43 ROG kernel:  path_openat+0x87/0xdd0
Feb 11 06:28:43 ROG kernel:  ? seccomp_run_filters+0x5d/0xc0
Feb 11 06:28:43 ROG kernel:  do_filp_open+0x93/0x100
Feb 11 06:28:43 ROG kernel:  ? __alloc_fd+0x46/0x140
Feb 11 06:28:43 ROG kernel:  do_sys_open+0x177/0x270
Feb 11 06:28:43 ROG kernel:  __x64_sys_openat+0x20/0x30
Feb 11 06:28:43 ROG kernel:  do_syscall_64+0x5a/0x110
Feb 11 06:28:43 ROG kernel:  entry_SYSCALL_64_after_hwframe+0x44/0xa9
Feb 11 06:28:43 ROG kernel: RIP: 0033:0x7fb8b1bb1d09
Feb 11 06:28:43 ROG kernel: Code: Bad RIP value.
Feb 11 06:28:43 ROG kernel: RSP: 002b:00007fb89329e660 EFLAGS: 00000293 ORIG_RAX: 0000000000000101
Feb 11 06:28:43 ROG kernel: RAX: ffffffffffffffda RBX: 00007fb88c021f48 RCX: 00007fb8b1bb1d09
Feb 11 06:28:43 ROG kernel: RDX: 0000000000080000 RSI: 00007fb88c021f48 RDI: 00000000ffffff9c
Feb 11 06:28:43 ROG kernel: RBP: 00007fb88c004e20 R08: 0000000000000000 R09: 0000000000000000
Feb 11 06:28:43 ROG kernel: R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000080000
Feb 11 06:28:43 ROG kernel: R13: 00007fb89329e6e8 R14: 00007fb88c004e40 R15: 00007fb89329e988
Feb 11 06:28:43 ROG kernel: OOM killer enabled.
Feb 11 06:28:43 ROG kernel: Restarting tasks ... done.

TO summarize, if PC is cold booted the 1st suspend will go OK, then on wakeup I will see kscreenlocker_greet eating 100% of cpu core, so I kill it and get back to DE, on next suspend I cannot suspend the PC due to ksmserver refusing to freeze its tasks.
Comment 5 Kyle K 2019-02-17 05:51:18 UTC
I updated to nvidia 415.27 driver but problem is still there, I ran OProfile on kscreenlocker_greet's PID while it was consuming 100% cpu and here's the result:

CPU: Intel Haswell microarchitecture, speed 4900 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (No unit mask) count 90000
CPU_CLK_UNHALT...|
  samples|      %|
------------------
   783102 100.000 kscreenlocker_greet
        CPU_CLK_UNHALT...|
          samples|      %|
        ------------------
           469543 59.9594 [vdso] (tgid:15389 range:0x7fff6c57e000-0x7fff6c57ffff)
           184799 23.5983 libnvidia-glcore.so.415.27
            94478 12.0646 libGLX_nvidia.so.415.27
            29395  3.7537 libc-2.28.so
             3110  0.3971 libQt5Gui.so.5.11.1
             1538  0.1964 libGLdispatch.so.0.0.0
              234  0.0299 kallsyms
                5 6.4e-04 kvm

nvidia to blame?
Comment 6 Bug Janitor Service 2019-03-04 04:33: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
mark the bug 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 7 Christoph Feck 2019-03-08 23:46:01 UTC
New information was provided with comment #2 and comment #3; changing status for inspection.
Comment 8 Kyle K 2019-03-10 06:51:31 UTC
I don't have the problem anymore with last 2 nvidia driver releases except typical visual glitches on wakeup: https://my.mixtape.moe/uibotu.webm, I'm on 418.43 now and also have newer KDE Frameworks and Plasma.


Nvidia 418.43 driver, GTX 980
Operating System: Kubuntu 18.10
KDE Plasma Version: 5.15.2
KDE Frameworks Version: 5.54.0
Qt Version: 5.11.1
Kernel Version: 4.18.0-15-generic
Comment 9 Sergey 2020-05-18 08:16:31 UTC
reproducible with nvidia drivers 440.82
A workaround is to make a wrapper for kscreenlocker_greet with env QSG_RENDER_LOOP=basic

But the trace goes deep to nvidia libraries for me. So maybe different.