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
C/R 32-bit tasks on x86_64 #43
Comments
@cyrillos in Cc :) |
Yes, we've compat mode (ie 32bit tasks running on x86-64 kernel) in my todo list. It will require kernel patching. Thanks for reminder ;) |
@0x7f454c46 is working on it |
Hi guys, just curious if you have an estimate when this feature might be added. Guessing this is low priority fix? |
Cc @0x7f454c46 and @cyrillos |
We're working on it. |
Ok, thanks for the update. I'm a developer, if there are any small tasks that you think someone could easily pick up I'd be happy to help |
Sure, thanks. Once I manage to split this task into pieces I'll ping you. |
Hi @rockymtnman,
There are a couple of tests failing at this moment, you can find a list of them here. The easiest things to fix are:
|
Ok, it'll take me a little bit to get up to speed, but I'll give it a try |
Hi @0x7f454c46 where can I find the patchfile or source for your patch? I see the affected files listed, but not sure how to get access to your source. I have v4.9.9 kernel building now (first time) |
Dima's patches can be fetched here https://patchwork.kernel.org/project/LKML/list/?page=37 |
Forgot to mention: Before compiling the kernel don't forget to enable criu-specific configs like CONFIG_CHECKPOINT_RESTORE. You can find the list of needed configs here https://criu.org/Installation#Configuring_the_kernel |
Thanks guys, I'll try to make some progress this weekend |
The some of the patches didn't merge cleanly with the source from the latest stable kernel I pulled, so I'm merging the changes by hand. Guessing the source files got updated from when you did the patching originally? Am I missing something? |
The patches are for latest master git. Just do
to fetch latest sources (or drop |
Awesome, that should save a lot of time, thanks |
So I've got ZDTM running now, but not sure if the results are correct:
|
@rockymtnman check, that you run 32-bit tests: |
Thanks 0x7f454c46, I wasn't on the dev branch, and was still missing some i386 deps. file test/zdtm/static/busyloop00 returns a 32-bit compatible ELF now... however I'm getting 220 failures. All are either zdtm/transition/xxx(unkown) or zdtm/static/xxx(unkown). Guessing this means something is wrong with my kernel config?? Here's my latest kernel build info: |
Well, I guess they fail with "Can't dump 32-bit application" or something alike.
What I think is that you didn't have 32-bit building environment, but installed it when tests wanted it.
So, when you don't have compat environment (that is `gcc-multilib' and `libc6.so.i686' basically) CRIU builds successfully, but without compat support.
I think, if you rebuild CRIU at this moment after you've installed libs for compat tests - then you may have better results.
If it's not so - then please, provide how tests fail (error messages).
14 фев 2017 г. 8:26 пользователь "rockymtnman" <notifications@github.com>
написал:
… Thanks 0x7f454c46, I wasn't on the dev branch, and was still missing some
i386 deps. file test/zdtm/static/busyloop00 returns a 32-bit compatible ELF
now... however I'm getting 220 failures. All are either
zdtm/transition/xxx(unkown) or zdtm/static/xxx(unkown). Guessing this means
something is wrong with my kernel config?? Here's my latest kernel build
info:
Linux ubuntu 4.10.0-rc7+ #1 <https://github.com/xemul/criu/issues/1> SMP
Sat Feb 11 17:15:26 PST 2017 x86_64 x86_64 x86_64 GNU/Linux
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<https://github.com/xemul/criu/issues/43#issuecomment-279611802>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AH6vcVI2aTu5c4AoGQNvAZPchckYOIhjks5rcTsEgaJpZM4GCdI4>
.
|
Успех! Needed to rebuild the kernel with x86 supporting libs. The majority of tests pass now, but it's hanging forever on test 221 (static/autofs). Does this test just take a really long time? I think I'm almost to the point where I can actually do something useful... |
@rockymtnman Yes, autofs test is broken now in 32-bit version. |
@rockymtnman If you want, you can start with autofs test, but I'm not sure how simple it is to fix. |
It may be simple as test hangs without C/R (which shouldn't happen) - so it may be only error in the test itself. |
Sorry got crazy busy at work this week. Looks like quite a lot got fixed! Should have some time on Sunday to look into the bug list now that I have the dev environment all set up |
@0x7f454c46 autofs appears to be more than a script issue. Packet size is different (301 vs 300 bytes) also having issues with mounting and unmounting (hangs instead of timing out). More time needed to better understand this |
@rockymtnman ok, no problem :) |
@0x7f454c46 - I'll drop some notes in the wiki if I get stuck and move on to another |
Looks like a bounty was posted for this fix |
Next release will be 3.0 with 32bit support in it. |
@xemul @0x7f454c46 Are these the only necessary kernel patches to enable C/R for 32-bit tasks? Or are there plans to make additional submissions? I'd like to test this change with the appropriate kernel mods |
@rockymtnman but if you have older than v4.9 kernel - you'll need some more patches, you can find them with x86 subject here: https://criu.org/Upstream_kernel_commits |
@0x7f454c46 The linux-next/criu 3.0 build worked great and I'm able to C/R 32-bit tasks using criu dump/restore. I'm also able to checkpoint a simple looper shell script in 32 bit debian container. However, when I attempt to save a unique 32-bit task (https:www.qemu.org) I get the same error: |
Note this looks like it has to do with the tty session established by the emulator/container (I think this was what required the --shell-job option for the native task). When I use the -it option to run the container with the shell script I get the same error |
Here is my pull-request to support C/R of containers with external terminals |
Great work guys, За тебя! |
@rockymtnman You're welcome! |
C/R of embedded devices (thus 32 bit processes). It's an obscure use case but comes in handy :-) Might want to add to your list |
@rockymtnman Sounds cool! |
For x86 we only dump and restore 64-bit tasks. Doing 32-bit should also be done, but keep in mind, that not only 64-bit tree OR 32-bit tree should be supported. There can be mixed 64-and-32-bit trees out there and CRIU should support those too.
The text was updated successfully, but these errors were encountered: