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.

Reply via email to