[CRIU] CRIU: Is trying to dump and restore Chromium browser state hopeless? ("Unsupported mapping found")
Dmitry Safonov
0x7f454c46 at gmail.com
Thu May 11 12:48:37 PDT 2017
2017-05-11 12:36 GMT+03:00 Brinkmann, Harald
<Harald.Brinkmann at bst-international.com>:
>
> We want to save and restore a Chromium web browser process with a
> complicated web page loaded. The hope is that restoring the browser
> state is faster than reloading and reprocessing the web page.
>
> I can dump and restore a simple test process, so criu itself (commit
> ed87c0f821a2) works.
>
> With Chromium everything looks fine until until I see that "Unsupported
> mapping found" message in the criu dump log. I have modified criu to
> print the vmflags and not to stop at the first "Unsupported mapping
> found":
>
>
> (00.892318) Dumping path for -3 fd via self 7 [/tmp/.org.chromium.Chromium.yo2UhN (deleted)]
> (00.892343) Strip ' (deleted)' tag from './tmp/.org.chromium.Chromium.yo2UhN (deleted)'
> (00.892359) Dumping ghost file for fd 7 id 0x20
> (00.892376) mnt: Path `/tmp/.org.chromium.Chromium.yo2UhN' resolved to `./tmp' mountpoint
> (00.892394) Dumping ghost file contents (id 0x5)
> (00.913748) Warn (criu/proc_parse.c:108): parse_vmflags: 'rd wr sh mr mw me ms '
> (00.913913) Warn (criu/proc_parse.c:108): parse_vmflags: 'rd wr sh mr mw me ms pf io dc de dd '
> (00.913942) Warn (criu/proc_parse.c:638): Unsupported mapping found 000000005f4bd000-000000005f4dd000
> (00.914113) Warn (criu/proc_parse.c:108): parse_vmflags: 'rd wr sh mr mw me ms pf io dc de dd '
> (00.914141) Warn (criu/proc_parse.c:638): Unsupported mapping found 000000005f4dd000-000000005f4fd000
>
>
> Eventually criu gives up with this message:
>
> (01.873078) Warn (criu/proc_parse.c:108): parse_vmflags: 'rd wr sh mr mw me ms pf io dc de dd '
> (01.873127) Warn (criu/proc_parse.c:638): Unsupported mapping found 00000000632f0000-0000000063310000
> (01.873371) Warn (criu/proc_parse.c:108): parse_vmflags: 'rd wr sh mr mw me ms pf io dc de dd '
> (01.873421) Warn (criu/proc_parse.c:638): Unsupported mapping found 0000000063310000-0000000063330000
> (01.873668) Warn (criu/proc_parse.c:108): parse_vmflags: 'rd wr sh mr mw me ms pf io dc de dd '
> (01.874293) Warn (criu/proc_parse.c:638): Unsupported mapping found 0000000063330000-0000000063350000
> (01.874504) Error (criu/proc_parse.c:568): Can't handle non-regular mapping on 3844's map 63350000
> (01.874652) Error (criu/cr-dump.c:1223): Collect mappings (pid: 3844) failed with -1
>
>
> Here are my questions:
>
> In addition to the pf and io flags that criu doesn't like, the dc, dd
> and de flags are also set. While pf and io mean that a page cannot be
> restored by criu, the others seem to indicate that it *should* not be
> dumped in the first place. Could this be resolved by criu not dumping
> and restoring these pages or would that just not work?
No, that doesn't seem to be sane and shouldn't work.
dc means that vma will not be copied on fork();
dd - that pages will not be included in coredump;
de just means that vma's size can't be changed.
Regardless of those flags, application might need them and very likely
will miss them after restoring.
What I suspect - is that those mappings are related to gpu/drm/ion.
And at this moment criu can't restore graphics context.
Likely you can simply check if it's so by `cat /proc/<chromium_pid>/maps
for those vmas.
> We are building Chromium from source, so provided we know what we are
> doing, modifying it is a theoretical possibility. E.g. Modifying the
> memory mapping?
If the conjecture about graphic mappings is right then you can hack around
that by running chromium in vnc: https://criu.org/VNC
But that will add performance degradation (how much? depends!), which
you try to minimize, AFAICS.
Another way would be to add C/R of gpu context..
At this moment there was no progress made in that direction, AFAIK,
by the following reasons:
1) It is a HUGE task.
2) We don't know any customer ready to pay for it.
3) No one in criu community does patches for that (likely by the same reasons).
So, I might be wrong and these aren't gpu mappings - please, check it.
--
Dmitry
More information about the CRIU
mailing list