-
Notifications
You must be signed in to change notification settings - Fork 561
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unable to restore processes with vDSO unmapped #488
Comments
Cc: @cyrillos @0x7f454c46 |
Ugh, that's mine. |
A-ha, so what I did in the test - I've unmapped vdso and vvar. Which is kinda unexpected. The commit doesn't specify why "the vdso will be at a random address Anyway, I can make it work with vvar mapped and vdso unmapped, but that needs a bit of care in case of migration: we need to make sure that vvar is the same on the target machine. |
JFI: I sent an email asking valgrind folks why they unmap() vdso, but leave vvar in place. Also why don't they mremap() vdso. I think it's not always possible to restore an application with vdso unmapped, but vvar present. The reason is that if vdso blob differs after C/R (say migration scenario or after kernel update) - we do proxify vdso entries on vdso from image file to the new vdso from the system. But we can't proxify vvar. It's a page that is being constantly updated by kernel and shared-mapped in all processes. So if the format of the page changed after C/R - restore should exit with an error. So, we definitely can improve a bit situation where vvar (and vdso) are still the same - as we sure the offsets of variables on vvar are same - but that will require a bit of work to save some info from dump in images where vvar is present and verify that it's still same on restore. Might be worth to do. |
A friendly reminder that this issue had no activity for 30 days. |
A friendly reminder that this issue had no activity for 30 days. |
A friendly reminder that this issue had no activity for 30 days. |
Hello,
CRIU fails to restore applications that have unmapped the vDSO segment. One such
application is Valgrind. When the checkpoint is restored CRIU complains that the
vDSO segment is not found in the checkpoint image and will not restore.
Steps to reproduce:
By commenting out the call to vdso_proxify in criu/pie/restorer.c:1360 I'm able
to successfully restore the Valgrind process. However, the newly created process
has the vDSO mapped again which can be a problem for this kind of application
that has explicitly unmapped its vDSO.
The text was updated successfully, but these errors were encountered: