Page MenuHomePhabricator

session recovery broken
Closed, ResolvedPublic


broken by patchset ending with rEFLf449fca9d65c514dc87b4d2b927fe7a3a8dddda9

I fixed the changes to wl2 hide functions to restore previous behavior during recovery, but rendering is still broken. it's supposed to flush a full canvas redraw and it no longer does this.

zmike created this task.Dec 14 2016, 8:50 AM
devilhorns reassigned this task from devilhorns to ManMower.Jan 5 2017, 11:20 AM
devilhorns added a subscriber: devilhorns.
raster added a subscriber: raster.Jan 10 2017, 1:50 AM

please.... stop using remembers for this. i know why it's quick but you really want to:

  1. open 1 or 2 files and mmap them, grow and shrink
  2. 1 file is just an indexed dataset of ALL windows (their uuid, geometry, state, etc. etc.)
  3. another file is probably a stacking index into the first.

and just modify files to mirror e_client state whenever you eval a client i guess (and rewrite the stacking file if stacking changed since last eval).

enlightenment_start deletes the state files by default so a fresh run starts fresh. otherwise all clients are matched to this state file and forcibly given the exact stacking and state there.

this way you can't lose state at all - or well you lose it only since last eval. let kernel disk cache avoid writing to disk OR write in /tmp or somewhere that will be in a ramdisk...

this way it wont conflict with remembers which are EXPLICIT requests to remember state by a user across multiple sessions...

ManMower reassigned this task from ManMower to devilhorns.Mar 1 2017, 8:15 AM

I fixed it for sw rendering a while back, and now it's broken for both sw and gl again.

Broken by the fix to T5209 (commit 38f3854f)

This somehow causes an evas to be registered a second time with _ecore_evas_register when recovering from crash, so it's inserted into its own inlist and we livelock fairly quickly.

Re-assigning to devilhorns - you break it, you get to keep both pieces.

devilhorns reassigned this task from devilhorns to ManMower.Mar 1 2017, 10:16 AM

Ok, reverted the commit which broke SR in software. Back to you...

ManMower closed this task as Resolved.Mar 1 2017, 2:20 PM

ok, so apparently session recovery is functional on GL and software rendering at commit b7f1c66d3a
so we can bisect to there next time it gets stomped out.

Closing this ticket

ManMower reopened this task as Open.Mar 2 2017, 10:09 AM

Nope - gl still broken even at that commit.

raster added a comment.Mar 2 2017, 3:51 PM

yup. still broken. also other fun borks like run terminology from ibar and the ibar icon keeps "busy spinning" as if its starting until you run the 2nd terminal and it appears... then it works fine...

i get segv's when closing apps... never mind... lots of things to hunt and fix.

segv when closing apps should be resolved as of... yesterday? It's recent anyway. if it's still happening on today's git it's new.

raster added a comment.Mar 2 2017, 4:59 PM

i have a bt at home no my pi... the e client list next/prev linked list ptrs are being fucked up... i have to be at work tho so i cant debug there right now...

ApB added a subscriber: ApB.Mar 4 2017, 2:10 AM

This is not supposed to work for internal windows right?? (ie EFM)

Also one more thing i noticed is that focus is fucked up after recovery. >

ManMower edited projects, added enlightenment-git; removed efl.Mar 4 2017, 6:37 AM
ManMower lowered the priority of this task from Showstopper Issues to Incoming Queue.
ManMower removed ManMower as the assignee of this task.
ManMower reopened this task as Open.

Those appear to be Enlightenment problems, not EFL ones - so I'm going to re-open this ticket but not as an efl show stopper anymore.

I have no idea about internal windows, but the focus issue looks like a bug.

Fortunately for me, I'm not the best person to track this down anymore. \o/

zmike closed this task as Resolved.Feb 23 2018, 11:04 AM

Session recovery is currently working as intended. There are some improvements to be made, but the protocol is undergoing standardization so new tickets can be opened for individual issues as they are found.