← Back to team overview

touch-packages team mailing list archive

[Bug 1446865] Re: KDE5/Qt5 does not support session restoration

 

Launchpad has imported 9 comments from the remote bug at
https://bugs.kde.org/show_bug.cgi?id=354724.

If you reply to an imported comment from within Launchpad, your comment
will be sent to the remote bug automatically. Read more about
Launchpad's inter-bugtracker facilities at
https://help.launchpad.net/InterBugTracking.

------------------------------------------------------------------------
On 2015-11-02T07:34:43+00:00 Leslie Zhai wrote:

When open chromium, konsole, thunderbird, then logout, relogin, but only
thunderbird successful WM_SAVE_YOURSELF, chromium or konsole failed to
be opened.

plasma-workspace: 5.4.90
KF5: 5.15.0
Qt5: 5.5.1 

Reproducible: Always

Steps to Reproduce:
1. open chromium, konsole, thunderbird, then logout
2. relogin

Actual Results:  
but only thunderbird successful WM_SAVE_YOURSELF

Expected Results:  
chromium and konsole able to be opened.

Reply at: https://bugs.launchpad.net/ubuntu/+source/plasma-
workspace/+bug/1446865/comments/76

------------------------------------------------------------------------
On 2015-11-02T07:36:53+00:00 Leslie Zhai wrote:

my ~/.config/ksmserverrc 
[General]
screenCount=1

[LegacySession: saved at previous logout]
clientMachine1=localhost
command1=thunderbird
count=1

[Session: saved at previous logout]
clientId1=1014cd7d2d4000144435205700000012260003
clientId2=1014cd7d2d4000144435208500000012260012
clientId3=10bd534f46000144610537700000070460007
count=3
discardCommand1[$e]=rm,$HOME/.config/session/kwin_1014cd7d2d4000144435205700000012260003_1446105607_787343
discardCommand2[$e]=rm,$HOME/.config/session/kmix_1014cd7d2d4000144435208500000012260012_1446105607_737385
program1=kwin_x11
program2=/bin/kmix
program3=/usr/lib/mozilla/kmozillahelper
restartCommand1=kwin_x11,-session,1014cd7d2d4000144435205700000012260003_1446105607_787343
restartCommand2=/bin/kmix,-session,1014cd7d2d4000144435208500000012260012_1446105607_737385
restartCommand3=/usr/lib/mozilla/kmozillahelper,-session,10bd534f46000144610537700000070460007_1446105607_737492
restartStyleHint1=0
restartStyleHint2=0
restartStyleHint3=0
userId1=lesliezhai
userId2=lesliezhai
userId3=lesliezhai
wasWm1=true
wasWm2=false
wasWm3=false

Reply at: https://bugs.launchpad.net/ubuntu/+source/plasma-
workspace/+bug/1446865/comments/77

------------------------------------------------------------------------
On 2015-11-05T08:31:53+00:00 Leslie Zhai wrote:

When open konsole, dolphin, systemsettings5, then logout

legacy.cpp, line 113
windowSessionId(*it, leader) is NOT EMPTY!

legacy.cpp, line 214
windowWmCommand(w) is EMPTY!

Reply at: https://bugs.launchpad.net/ubuntu/+source/plasma-
workspace/+bug/1446865/comments/78

------------------------------------------------------------------------
On 2015-11-23T01:42:30+00:00 maelcum wrote:

While debugging the problem with Konsole, I found a common problem with
Qt5 applications:

QGuiApplicationPrivate::commitData() (supposed to make sure that the session is saved) calls
QApplicationPrivate::tryCloseAllWindows() which, when QGuiApplication::quitOnLastWindowClosed() is true, invokes
QApplication::quit()

which terminates the application immediately after it reports successful session saving to the session manager ksmserver.
During session shutdown, ksmserver still removes its bookkeeping data about applications that were terminated for any reason - including those that quit right after session saving. When ksmserver saves the list of existing application slightly later, konsole is gone and, while it has a session save file, that file isn't "registered" in ksmserverrc, which makes it useless.

There are at several problems:
- QGuiApplicationPrivate::commitData() effectively quits the application if the application didn't call QGuiApplication::setQuitOnLastWindowClosed(false). This is despite Qt's own documentation recommending against quitting the application due to a request to save the session data.
- setQuitOnLastWindowClosed(false) is not a good solution. Quit on last window closed is a useful feature, the problem is more that session saving implies closing windows, which doesn't make too much sense. It is supposed to prevent interaction with a state that won't be saved anymore, but there are other ways to do that, e.g. preventing user input and network event handling.
- ksmserver should maybe stop removing applications from its internal list while shutting down. Because shutdown can be aborted, changes would have to be queued and applied after an aborted shutdown.

Reply at: https://bugs.launchpad.net/ubuntu/+source/plasma-
workspace/+bug/1446865/comments/79

------------------------------------------------------------------------
On 2015-11-23T01:56:17+00:00 Leslie Zhai wrote:

Hi Andreas,

Thanks for your analysis, I wrongly argued that it might be libSM issue,
I will try your solution.

Reply at: https://bugs.launchpad.net/ubuntu/+source/plasma-
workspace/+bug/1446865/comments/80

------------------------------------------------------------------------
On 2015-11-23T11:53:00+00:00 maelcum wrote:

Hello Leslie, just in case you were planning to change ksmserver, I've since realized that saving the session restore data of each application right away (just after receiving its session restore data) in a separate, dedicated data structure is a much better idea than messing around with the main clients list.
When session saving is aborted, simply throw that data away. No interactions to worry about.

I still don't agree with Qt's session saving behavior... but I doubt
that it's fixable, for compatibility reasons.

Reply at: https://bugs.launchpad.net/ubuntu/+source/plasma-
workspace/+bug/1446865/comments/81

------------------------------------------------------------------------
On 2015-12-07T06:11:19+00:00 Leslie Zhai wrote:

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

Reply at: https://bugs.launchpad.net/ubuntu/+source/plasma-
workspace/+bug/1446865/comments/87

------------------------------------------------------------------------
On 2015-12-11T07:45:20+00:00 Leslie Zhai wrote:

Hi Andreas https://git.reviewboard.kde.org/r/126311/ workaround monkey
patch ;P hope you can fix it in right way ;-)

Reply at: https://bugs.launchpad.net/ubuntu/+source/plasma-
workspace/+bug/1446865/comments/88

------------------------------------------------------------------------
On 2015-12-11T08:26:39+00:00 Thomas-luebking wrote:

I don't know whether there's a QTBUG reported, but the problem is that
QGuiApplication tries to ::tryCloseAllWindows() in
QGuiApplicationPrivate::commitData()

This is plain wrong, since the window should NOT be closed as long as the session is running.
If the session survives for some reason, you'd end up with a half-destroyed environment.

=> Window closing and process termination has to happen by the smserver
once it's clear that the session is gonna end.


What the routine *wanted* to do was to send close events to all toplevel widgets (to allow clients to perform last clean-ups, data storage etc.) and check whether all events are accepted. If not, that means some client wanted some window to remain open and that should break the session termination, but without having closed half other windows and maybe some processes before.

Don't you dare to call window->closeEvent() directly, the client logic
may be in some eventfilter ;-)

Reply at: https://bugs.launchpad.net/ubuntu/+source/plasma-
workspace/+bug/1446865/comments/89


** Changed in: kdebase-workspace
   Importance: Unknown => Medium

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to qtbase-opensource-src in
Ubuntu.
https://bugs.launchpad.net/bugs/1446865

Title:
  KDE5/Qt5 does not support session restoration

Status in KDE Base Workspace:
  Unknown
Status in Qt:
  New
Status in plasma-workspace package in Ubuntu:
  Confirmed
Status in qtbase-opensource-src package in Ubuntu:
  New

Bug description:
  KDE5/Qt5 does not support proper session restoration.

  ProblemType: Bug
  DistroRelease: Ubuntu 15.10

To manage notifications about this bug go to:
https://bugs.launchpad.net/kdebase-workspace/+bug/1446865/+subscriptions