Bug 444192 - Apps crash in QMenuBarPrivate::updateGeometries() when DisplayPort monitor is connected
Summary: Apps crash in QMenuBarPrivate::updateGeometries() when DisplayPort monitor is...
Status: RESOLVED WORKSFORME
Alias: None
Product: KScreen
Classification: Plasma
Component: common (show other bugs)
Version: 5.23.0
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: kscreen-bugs-null@kde.org
URL:
Keywords:
: 450591 (view as bug list)
Depends on:
Blocks:
 
Reported: 2021-10-21 13:07 UTC by René Serral
Modified: 2024-04-09 19:42 UTC (History)
4 users (show)

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


Attachments
my screen layout (2.80 KB, text/plain)
2024-04-09 10:21 UTC, Björn Bidar (Thaodan)
Details

Note You need to log in before you can comment on or make changes to this bug.
Description René Serral 2021-10-21 13:07:52 UTC
SUMMARY
I just bought a Displayport Samsung monitor and when connecting it through USB-C and DisplayLink on my Ubuntu 21.04 a really weird behavior happens. The moment I connect the monitor KDE applications start to randomly crash and from then they cannot be started anymore. Looking at the logs I can repeatedly (around 3 million times!!) see the message:
[warn] epoll_wait: Bad file descriptor

I'm not able to see any other relevant log message.

The most strange issue is that if I disconnect the monitor or if I connect it through regular HDMI the problem instantly disappears.

I don't really know if it's a plasma or displaylink bug. The problem does not happen with other non plasma applications (chrome, firefox...)

I filed a bug on DisplayLink already without answer yet:
https://www.displaylink.org/forum/showthread.php?t=67936


Any hint what can be wrong?
No


STEPS TO REPRODUCE
1. Connect the monitor through displayport 
2. continue working as usual
3. observe crashes kontact, dolphin, systemsettings, ...

EXPECTED RESULT
No crashes and regular workflow

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: 5.23 (but the behavior is the same in 5.21 and 5.22
My KUbuntu is 21.10 (but before upgrading, the problem was present in 21.04)

KDE Frameworks Version: 5.87, but with 5.86 was the same
Qt Version: 5.15.2
Comment 1 Nate Graham 2021-10-21 17:36:11 UTC
Can you please attach a backtrace of the crash? See https://community.kde.org/Guidelines_and_HOWTOs/Debugging/How_to_create_useful_crash_reports
Comment 2 René Serral 2021-10-25 10:40:27 UTC
Sorry for the delay I had to get back to the office to test. Here you have a crash report for the systemsettings app. Hope this helps:

Application: System Settings (systemsettings5), signal: Segmentation fault

[KCrash Handler]
#4  QWidget::hide (this=0x55f992e69294) at kernel/qwidget.cpp:7916
#5  0x00007fd5be68156d in QMenuBarPrivate::updateGeometries (this=0x55fccd2a3f20) at widgets/qmenubar.cpp:256
#6  0x00007fd5be6861a0 in QMenuBar::changeEvent (this=0x55fccd32cb70, e=0x7ffd6b1ab0a0) at widgets/qmenubar.cpp:1446
#7  0x00007fd5be52e146 in QWidget::event (this=0x55fccd32cb70, event=0x7ffd6b1ab0a0) at kernel/qwidget.cpp:8961
#8  0x00007fd5be4eb6b3 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x55fccd32cb70, e=0x7ffd6b1ab0a0) at kernel/qapplication.cpp:3632
#9  0x00007fd5bd8ee16a in QCoreApplication::notifyInternal2 (receiver=0x55fccd32cb70, event=0x7ffd6b1ab0a0) at kernel/qcoreapplication.cpp:1063
#10 0x00007fd5be51f305 in QWidgetPrivate::updateFont (this=this@entry=0x55fccd2a3f20, font=...) at kernel/qwidget.cpp:4654
#11 0x00007fd5be52e600 in QWidget::event (this=0x55fccd32cb70, event=0x7ffd6b1ab250) at kernel/qwidget.cpp:9055
#12 0x00007fd5be4eb6b3 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x55fccd32cb70, e=0x7ffd6b1ab250) at kernel/qapplication.cpp:3632
#13 0x00007fd5bd8ee16a in QCoreApplication::notifyInternal2 (receiver=0x55fccd32cb70, event=0x7ffd6b1ab250) at kernel/qcoreapplication.cpp:1063
#14 0x00007fd5be547596 in sendScreenChangeRecursively (widget=0x55fccd32cb70) at kernel/qwidgetwindow.cpp:752
#15 0x00007fd5be5475c6 in sendScreenChangeRecursively (widget=<optimized out>) at kernel/qwidgetwindow.cpp:757
#16 0x00007fd5be547696 in QWidgetWindow::handleScreenChange (this=0x55fccd33a130) at kernel/qwidgetwindow.cpp:764
#17 QWidgetWindow::qt_static_metacall (_c=QMetaObject::InvokeMetaMethod, _a=<optimized out>, _id=<optimized out>, _o=0x55fccd33a130) at .moc/moc_qwidgetwindow_p.cpp:77
#18 QWidgetWindow::qt_static_metacall (_o=0x55fccd33a130, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at .moc/moc_qwidgetwindow_p.cpp:70
#19 0x00007fd5bd925a88 in doActivate<false> (sender=0x55fccd33a130, signal_index=3, argv=0x7ffd6b1ab3c0) at kernel/qobject.cpp:3898
#20 0x00007fd5bd91ed67 in QMetaObject::activate (sender=sender@entry=0x55fccd33a130, m=m@entry=0x7fd5be365300 <QWindow::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffd6b1ab3c0) at kernel/qobject.cpp:3946
#21 0x00007fd5bdde77b3 in QWindow::screenChanged (this=this@entry=0x55fccd33a130, _t1=<optimized out>, _t1@entry=0x55fcccf27710) at .moc/moc_qwindow.cpp:729
#22 0x00007fd5bdde8001 in QWindowPrivate::emitScreenChangedRecursion (this=<optimized out>, newScreen=0x55fcccf27710) at kernel/qwindow.cpp:484
#23 0x00007fd5be5204d5 in QWidgetPrivate::create (this=this@entry=0x55fcccd712d0) at kernel/qwidget.cpp:1288
#24 0x00007fd5be5207fe in QWidget::create (this=0x55fcccfcb710, window=<optimized out>, initializeWindow=<optimized out>, destroyOldWindow=<optimized out>) at kernel/qwidget.cpp:1179
#25 0x00007fd5be683adf in QMenuBarPrivate::handleReparent (this=<optimized out>) at widgets/qmenubar.cpp:1421
#26 0x00007fd5be683fa9 in QMenuBarPrivate::init (this=0x55fccd2a3f20) at widgets/qmenubar.cpp:705
#27 0x00007fd5be684198 in QMenuBar::QMenuBar (this=<optimized out>, parent=<optimized out>) at widgets/qmenubar.cpp:741
#28 0x00007fd5be6456c2 in QMainWindow::menuBar (this=0x55fcccfcb710) at widgets/qmainwindow.cpp:508
#29 0x00007fd5beef4c3b in KXmlGuiWindow::createGUI(QString const&) () from /lib/x86_64-linux-gnu/libKF5XmlGui.so.5
#30 0x00007fd5beef55db in KXmlGuiWindow::setupGUI(QSize const&, QFlags<KXmlGuiWindow::StandardWindowOption>, QString const&) () from /lib/x86_64-linux-gnu/libKF5XmlGui.so.5
#31 0x00007fd5beef5721 in KXmlGuiWindow::setupGUI(QFlags<KXmlGuiWindow::StandardWindowOption>, QString const&) () from /lib/x86_64-linux-gnu/libKF5XmlGui.so.5
#32 0x000055fccb9b3288 in ?? ()
#33 0x000055fccb9b0560 in ?? ()
#34 0x00007fd5bd221fd0 in __libc_start_call_main (main=main@entry=0x55fccb9afae0, argc=argc@entry=1, argv=argv@entry=0x7ffd6b1aba78) at ../sysdeps/nptl/libc_start_call_main.h:58
#35 0x00007fd5bd22207d in __libc_start_main_impl (main=0x55fccb9afae0, argc=1, argv=0x7ffd6b1aba78, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffd6b1aba68) at ../csu/libc-start.c:409
#36 0x000055fccb9b12d5 in ?? ()
[Inferior 1 (process 72725) detached]
Comment 3 Nate Graham 2021-10-25 16:20:58 UTC
Thanks!

#4  QWidget::hide (this=0x55f992e69294) at kernel/qwidget.cpp:7916
#5  0x00007fd5be68156d in QMenuBarPrivate::updateGeometries (this=0x55fccd2a3f20) at widgets/qmenubar.cpp:256

This is very suspicious to me. It seems like the geometry of the new screen is causing Qt to freak out and do something invalid. This might be an issue with the screen itself, or it might be a problem with how KScreen is presenting it. Moving to KScreen.
Comment 4 René Serral 2021-10-25 16:24:46 UTC
Thanks a lot for the prompt feedback. Just for the record I tried this with 3 different physical monitors and happens with all of them (they are from the same brand and model though).

Don't hesitate to ask for more details if necessary.

Thanks once again!
Comment 5 Nicolas Fella 2022-02-20 14:07:49 UTC
*** Bug 450591 has been marked as a duplicate of this bug. ***
Comment 6 Nate Graham 2022-11-10 17:55:22 UTC
I'm now suspecting a Qt issue. Can we ask you to please check if this is still an issue with Plasma 5.25 or 5.26 when using the latest version of the KDE Qt patch collection?

If it is, please change the status to CONFIRMED when replying. If not, or if you can't because you no longer use this setup, you can change the status to RESOLVED WORKSFORME. Thanks a lot!
Comment 7 Bug Janitor Service 2022-11-25 05:21:47 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 8 Bug Janitor Service 2022-12-10 05:18:28 UTC
This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now 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

Thank you for helping us make KDE software even better for everyone!
Comment 9 Björn Bidar (Thaodan) 2024-04-09 10:20:40 UTC
For me the bug seems to happen to. I noticed it only happens when I have Plasma shell active with the Globalmenu in them. If I stop Plasma the bug won't happen. But I have Plasma running with Global menu and my screen not mirrored than the bug doesn't happen.
Have to check if it still happens with Qt6.

#4  0x00007f5d0afcfd75 in QWidget::hide() () at /lib64/libQt5Widgets.so.5
#5  0x00007f5d0b1357f5 in  () at /lib64/libQt5Widgets.so.5
#6  0x00007f5d0b13a219 in QMenuBar::changeEvent(QEvent*) () at /lib64/libQt5Widgets.so.5
#7  0x00007f5d0afe6d17 in QWidget::event(QEvent*) () at /lib64/libQt5Widgets.so.5
#8  0x00007f5d0afa51ae in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib64/libQt5Widgets.so.5
#9  0x00007f5d0a2ee1d8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib64/libQt5Core.so.5
#10 0x00007f5d0afd82a2 in QWidgetPrivate::updateFont(QFont const&) () at /lib64/libQt5Widgets.so.5
#11 0x00007f5d0afe77b8 in QWidget::event(QEvent*) () at /lib64/libQt5Widgets.so.5
#12 0x00007f5d0afa51ae in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib64/libQt5Widgets.so.5
#13 0x00007f5d0a2ee1d8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /lib64/libQt5Core.so.5
#14 0x00007f5d0afff416 in  () at /lib64/libQt5Widgets.so.5
#15 0x00007f5d0afff446 in  () at /lib64/libQt5Widgets.so.5
#16 0x00007f5d0afff50e in  () at /lib64/libQt5Widgets.so.5
#17 0x00007f5d0a326423 in  () at /lib64/libQt5Core.so.5
#18 0x00007f5d0a78067f in QWindow::screenChanged(QScreen*) () at /lib64/libQt5Gui.so.5
#19 0x00007f5d0a780ecf in QWindowPrivate::emitScreenChangedRecursion(QScreen*) () at /lib64/libQt5Gui.so.5
#20 0x00007f5d0afd944d in QWidgetPrivate::create() () at /lib64/libQt5Widgets.so.5
#21 0x00007f5d0afd979b in QWidget::create(unsigned long long, bool, bool) () at /lib64/libQt5Widgets.so.5
#22 0x00007f5d0b137cc3 in  () at /lib64/libQt5Widgets.so.5
#23 0x00007f5d0b1380b5 in  () at /lib64/libQt5Widgets.so.5
#24 0x00007f5d0b0fa8ea in QMainWindow::menuBar() const () at /lib64/libQt5Widgets.so.5
#25 0x00007f5d0b9597ac in Konsole::MainWindow::setupActions() () at /lib64/libkonsoleapp.so.1
#26 0x00007f5d0b95c5b9 in Konsole::MainWindow::MainWindow() () at /lib64/libkonsoleapp.so.1
#27 0x00007f5d0b95cf0c in Konsole::Application::newMainWindow() () at /lib64/libkonsoleapp.so.1
#28 0x00007f5d0b95d488 in Konsole::Application::processWindowArgs(bool&) () at /lib64/libkonsoleapp.so.1
#29 0x00007f5d0b95d78a in Konsole::Application::newInstance() () at /lib64/libkonsoleapp.so.1
#30 0x00005634c10c81dc in  ()
#31 0x00007f5d0982a1f0 in __libc_start_call_main (main=main@entry=0x5634c10c66a0, argc=argc@entry=1, argv=argv@entry=0x7ffccf975258) at ../sysdeps/nptl/libc_start_call_main.h:58
#32 0x00007f5d0982a2b9 in __libc_start_main_impl (main=0x5634c10c66a0, argc=1, argv=0x7ffccf975258, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffccf975248) at ../csu/libc-start.c:360
#33 0x00005634c10c8985 in  ()
[Inferior 1 (process 6264) detached]
Comment 10 Björn Bidar (Thaodan) 2024-04-09 10:21:31 UTC
Created attachment 168304 [details]
my screen layout
Comment 11 Björn Bidar (Thaodan) 2024-04-09 10:26:50 UTC
Also it only happens if I mirror one of my 3 screens with the left most screen.
Comment 12 Björn Bidar (Thaodan) 2024-04-09 10:33:25 UTC
Change left most screen with the screen that isn't market as the primary screen that is used 
as a source for a mirror with the 3rd screen.,,,,,,,,,,,
Comment 13 Nate Graham 2024-04-09 19:42:54 UTC
Björn, this bug report is closed, and the crash you're experiencing looks different. Please submit a new bug report about it, and make sure that the backtrace you include has full debug symbols. Thanks!