https://bugs.kde.org/show_bug.cgi?id=422522
Bug ID: 422522 Summary: konqueror: when preload is activated, konqueror doesn't quit and it's restored as blank window on next login Product: konqueror Version: 5.0.97 Platform: Gentoo Packages OS: Linux Status: REPORTED Severity: normal Priority: NOR Component: general Assignee: konq-b...@kde.org Reporter: idarktemp...@mail.ru Target Milestone: --- Created attachment 129098 --> https://bugs.kde.org/attachment.cgi?id=129098&action=edit konqueror-quit.log SUMMARY If "preload" option is active, which is a default setting AFAIK, and user session is configured to restore previous session on login, on login konqueror window might be unexpectedly restored if last time konqueror was used and closed. Reproduced on Linux/X11 with KDE desktop. STEPS TO REPRODUCE 1. go to "system settings" -> "Startup and Shutdown" -> "Desktop Session" -> select to "Restore previous session" on login and apply. 2. run "konqueror", go to menu "Settings" -> "Configure Konqueror..." -> "Performance", ensure that "Preload an instance after desktop startup" is unchecked while "Always try to have one preloaded instance" is checked. 3. If "Always try to have one preloaded instance" wasn't checked, it might be necessary to close and reopen konqueror. 4. Close konqueror. 5. Logout of desktop session 6. Login back to same session, restoring last session OBSERVED RESULT On login, konqueror with blank window is restored. Since all konqueror windows were closed, it's unexpected to have it restored. Furthermore, between steps 4 and 5, after konqueror window is closed, konqueror process doesn't quit and continues to exist. EXPECTED RESULT Either konqueror must quit when last window is closed, or it must not be restored when saved session is restored if no konqueror windows were visible in last session, or such restored windows must be invisible when restored too. SOFTWARE/OS VERSIONS Linux/KDE Plasma: (available in About System) KDE Plasma Version: 19.12.3 KDE Frameworks Version: 5.70.0 Qt Version: 5.14.2 ADDITIONAL INFORMATION It looks like unsetting "Preload an instance after desktop startup" prevents issue from appearing. Attached file contains part of gdb output for watching QCoreApplicationPrivate::quitLockRef from start of konqueror till last window is closed. Application didn't quit since one QEventLoopLockerPrivate wasn't destroyed with last window. After tracking creation and destruction of each QEventLoopLockerPrivate instance, it turned out it was an instance of KonqMainWindow created by preload with following backtrace: #0 0x00007ffff5bdb4b4 in QCoreApplicationPrivate::ref (this=this@entry=0x5555555774b0) at /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include/g++-v9/bits/atomic_base.h:318 #1 0x00007ffff5bd9d94 in QEventLoopLockerPrivate::QEventLoopLockerPrivate (app=0x5555555774b0, this=0x555555dde3f0) at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qeventloop.cpp:367 #2 QEventLoopLocker::QEventLoopLocker (this=0x555555cffaa8) at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qeventloop.cpp:428 #3 0x00007ffff73689de in KMainWindowPrivate::KMainWindowPrivate (this=0x555555cffa40) at /usr/include/qt5/QtCore/qarraydata.h:257 #4 KXmlGuiWindowPrivate::KXmlGuiWindowPrivate (this=0x555555cffa40) at /var/tmp/portage/kde-frameworks/kxmlgui-5.70.0/work/kxmlgui-5.70.0/src/kxmlguiwindow.cpp:62 #5 KXmlGuiWindow::KXmlGuiWindow (this=0x555555d17c70, __vtt_parm=0x7ffff7f74730 <VTT for KonqMainWindow+16>, parent=0x0, f=..., __in_chrg=<optimized out>) at /var/tmp/portage/kde-frameworks/kxmlgui-5.70.0/work/kxmlgui-5.70.0/src/kxmlguiwindow.cpp:83 #6 0x00007ffff79430e5 in KParts::MainWindow::MainWindow (this=0x555555d17c70, __vtt_parm=0x7ffff7f74728 <VTT for KonqMainWindow+8>, parent=<optimized out>, f=..., __in_chrg=<optimized out>) at /var/tmp/portage/kde-frameworks/kparts-5.70.0/work/kparts-5.70.0/src/mainwindow.cpp:67 #7 0x00007ffff7f0f3bd in KonqMainWindow::KonqMainWindow (this=0x555555d17c70, initialURL=..., __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /usr/include/qt5/QtCore/qflags.h:119 #8 0x00007ffff7f18823 in <lambda()>::operator() (__closure=<optimized out>) at /var/tmp/portage/kde-apps/konqueror-19.12.3/work/konqueror-19.12.3/src/konqmainwindowfactory.cpp:49 #9 QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, ensurePreloadedWindow()::<lambda()> >::call (f=..., arg=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:146 #10 QtPrivate::Functor<ensurePreloadedWindow()::<lambda()>, 0>::call<QtPrivate::List<>, void> (f=..., arg=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:256 #11 QtPrivate::QFunctorSlotObject<ensurePreloadedWindow()::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) ( which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:443 #12 0x00007ffff5c11802 in QtPrivate::QSlotObjectBase::call (a=0x7fffffffd270, r=<optimized out>, this=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398 #13 QSingleShotTimer::timerEvent (this=0x555555f05a90) at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qtimer.cpp:320 #14 0x00007ffff5c06755 in QObject::event (this=0x555555f05a90, e=0x7fffffffd700) at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qobject.cpp:1361 #15 0x00007ffff683acce in QApplicationPrivate::notify_helper (this=0x5555555774b0, receiver=0x555555f05a90, e=0x7fffffffd700) at /var/tmp/portage/dev-qt/qtwidgets-5.14.2/work/qtbase-everywhere-src-5.14.2/src/widgets/kernel/qapplication.cpp:3685 #16 0x00007ffff6837fdf in QApplication::notify (this=0x7fffffffda20, receiver=0x555555f05a90, e=0x7fffffffd700) at /var/tmp/portage/dev-qt/qtwidgets-5.14.2/work/qtbase-everywhere-src-5.14.2/src/widgets/kernel/qapplication.cpp:3025 #17 0x00007ffff5bdb16f in QCoreApplication::notifyInternal2 (receiver=0x555555f05a90, event=0x7fffffffd700) at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qcoreapplication.cpp:1075 #18 0x00007ffff5c2e7cb in QTimerInfoList::activateTimers (this=0x5555555d9700) at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qtimerinfo_unix.cpp:643 #19 0x00007ffff5c2f064 in timerSourceDispatch (source=<optimized out>) at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qeventdispatcher_glib.cpp:183 #20 0x00007ffff37fb307 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0 #21 0x00007ffff37fb590 in ?? () from /usr/lib64/libglib-2.0.so.0 #22 0x00007ffff37fb61f in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0 #23 0x00007ffff5c2f4ed in QEventDispatcherGlib::processEvents (this=0x5555555e0550, flags=...) at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qeventdispatcher_glib.cpp:423 #24 0x00007ffff5bda00b in QEventLoop::exec (this=this@entry=0x7fffffffd940, flags=..., flags@entry=...) at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/include/QtCore/../../src/corelib/global/qflags.h:136 #25 0x00007ffff5be1dd2 in QCoreApplication::exec () at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/include/QtCore/../../src/corelib/global/qflags.h:118 #26 0x00007ffff6837841 in QApplication::exec () at /var/tmp/portage/dev-qt/qtwidgets-5.14.2/work/qtbase-everywhere-src-5.14.2/src/widgets/kernel/qapplication.cpp:2825 #27 0x00007ffff7f3cd69 in kdemain (argc=<optimized out>, argv=<optimized out>) at /var/tmp/portage/kde-apps/konqueror-19.12.3/work/konqueror-19.12.3/src/konqmain.cpp:274 #28 0x00007ffff7ccee1b in __libc_start_main (main=0x555555555050 <main>, argc=1, argv=0x7fffffffdb98, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdb88) at ../csu/libc-start.c:308 #29 0x000055555555508a in _start () -- You are receiving this mail because: You are watching all bug changes.