by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Adrian Reber
    @adrianreber
    When we do orphan-pts-master action-script call, the FD is sent to the process calling CRIU and in Go it can be read using ReadMsgUnix() to get the protobuf message and the FDs, how do I do that in C? Any ideas? we currently do recv() in libcriu to get the protobuf message, how do I get the FDs which are also being sent? recvmsg()? Bit confused right now how to get the protobuf message and also the FDs?
    Navdeepuniyal
    @Navdeepuniyal

    Hi guys,
    I am using Podman to do CRIU. Wit hone of my container, I am getting the segmentation fault on restore.

    (00.365963) 301: Error (criu/cr-restore.c:1480): 41 killed by signal 11: Segmentation fault

    Any hints what could be causing this? --> Podman(CRIU) or container itself?

    Adrian Reber
    @adrianreber
    @Navdeepuniyal best would be to open a ticket on https://github.com/checkpoint-restore/criu with the logs and the version of all the involved components
    Navdeepuniyal
    @Navdeepuniyal
    @adrianreber done that.#1066 thanks.
    In the meanwhile, could you please suggest me what could be the potential issue as the deadline looms to finish my project.
    Adrian Reber
    @adrianreber
    @Navdeepuniyal not sure what is happening
    Pavel Tikhomirov
    @Snorch
    @Navdeepuniyal it looks like a real segfault, please collect coredump
    Navdeepuniyal
    @Navdeepuniyal
    @Snorch Can't find coredump for the restore
    Syslogs say this: podman kernel: [585510.354693] criu[522]: segfault at 4c ip 000055888aa48dc9 sp 00007ffea08586b0 error 4 in criu
    Pavel Tikhomirov
    @Snorch

    Adrian already hinted about coredumpctl in the issue. Also you can do it manually:
    1) set coresize to unlimited
    ulimit -c unlimited
    2) setup coredump collection path
    echo /my-core > /proc/sys/kernel/core_pattern
    3) run criu
    4)tricky part here is that core is created relative to current mountns which can have shifted root, so you have nothing except below to find the core
    find / | grep my-core

    But maybe you are lucky and the core would be in "/"

    Adrian Reber
    @adrianreber
    I just booted an Ubuntu 18.04 VM and there is no coredumpctl, so it has to be done manually as described
    Navdeepuniyal
    @Navdeepuniyal
    Pavel Tikhomirov
    @Snorch
    can you also please download the criu binary
    Navdeepuniyal
    @Navdeepuniyal
    i am running criu 3.14 from PPA on ubuntu18.04
    minhbq-99
    @minhbq-99
    Hi I tried to use soft dirty in my own project on android. I read the pagemap but there is not a single time that soft dirty bit is 1 even when I write to that page. I can see that this feature is merged into kernel in 3.5 version. Is that feature not on android (I have just tested on genymotion, android emulator) or I make some common mistakes? Very appreciated for your help
    Pavel Tikhomirov
    @Snorch

    Hi @minh1811. Can you please tell more about why and how you want use soft-dirty tracking, it may help understand the problem you're experiensing.

    There is no info if you've initialized dirty trackgin through /proc/pid/clear_refs or not. There is no info on how you read /proc/<pid>/pagemap do you check soft-dirty bit on the right offset addr/PAGE_SIZE*sizeof(uint64_t) or not?

    You can also see kerndat_get_dirty_track in criu code base and documentation https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/mm/soft-dirty.rst for reference.
    Adrian Reber
    @adrianreber
    @minh1811 soft-dirty does not work on arm as far as I know, it is not implemented on arm (or aarch64 or both) in the kernel
    minhbq-99
    @minhbq-99
    Hi @Snorch I write “4” to clear_refs, then I pursposedly write to a page then I read from pagemap. I also dump all pagemap and I just see entry 0xa100... and 0x8100... I know that lower bit are not permitted to read from normal user so they are 0 but I cannot see any entries has 55th bit on
    @adrianreber I run on genymotion on x86-64 I can see that when cat /proc/cpuinfo. However, if soft-dirty is not working on arm maybe I cannot use this approach. But I have read some android kernel code, I still see the soft-dirty related implementation in clear_refs_write and pagemap_read
    Adrian Reber
    @adrianreber
    @minh1811 if you grep through the linux kernel code you will see that arm does not have CONFIG_HAVE_ARCH_SOFT_DIRTY
    Zeyad Yasser
    @ZeyadYasser
    Hi, I have submitted a PR a while ago, I also got approved nearly 2 months ago, but it hasn't been merged until now. Is this normal?
    Adrian Reber
    @adrianreber
    @ZeyadYasser which PR
    Zeyad Yasser
    @ZeyadYasser
    I don't want to sound pushy, I just thought it might have been forgotten because it was too long
    It is just a simple optimization
    Adrian Reber
    @adrianreber
    I restarted the one CI test with the error (because out of disk space) and now it is all green. I see you already pinged Andrei some time ago, just ping him once more
    Zeyad Yasser
    @ZeyadYasser
    Great, I will.Thank you.
    Pavel Tikhomirov
    @Snorch
    This message was deleted
    Pavel Tikhomirov
    @Snorch

    @minh1811 Sorry didn't know arm has no sort-dirty-tracking. I see much more bits when print pagemap on x86_64:

    [snorch@snorch criu]$ sudo rm /run/criu.kdat
    [snorch@snorch criu]$ sudo ./criu/criu check
    Error (criu/kerndat.c:352): DEBUG 0x8180000000018b55
    Looks good.
    [snorch@snorch criu]$ git diff
    diff --git a/criu/kerndat.c b/criu/kerndat.c
    index 831f9f72a..daf21f777 100644
    --- a/criu/kerndat.c
    +++ b/criu/kerndat.c
    @@ -349,6 +349,7 @@ static int kerndat_get_dirty_track(void)
            close(pm2);
            munmap(map, PAGE_SIZE);
    
    +       pr_err("DEBUG 0x%"PRIx64"\n", pmap);
            if (pmap & PME_SOFT_DIRTY) {
                    pr_info("Dirty track supported on kernel\n");
                    kdat.has_dirty_track = true;

    Bits are [0, 2, 4, 6, 8, 9, 11, 15, 16, 55, 56, 63]

    minhbq-99
    @minhbq-99
    @Snorch @adrianreber I got it, thank you very much :)
    Nicolas Viennot
    @nviennot
    Hello everyone :) :)
    Adrian Reber
    @adrianreber
    @nviennot welcome :)
    Alexander Mihalicyn
    @mihalicyn
    Hello! :)
    Manas Mangaonkar
    @Pac23
    Hello :)
    prakritigoyal19
    @prakritigoyal19
    Hi everyone!
    I am working on the optimizing logging engine project using the flog code written in this repo here.
    I have added this to criu and have called it in criu/log.c here.
    While running the Travis checks, all except three jobs have passed successfully. One of the failures is in centos architecture. The error produced is "implicit declaration of the function _Generic" which is included here. This _Generic macro is supported from C11 and forth, and centos doesn't support this version yet, thus the error is generated.
    Should I rewrite that code and use some other alternatives like the ones mentioned here, or is there any other alternative to solve this issue?
    Thanks in advance!
    The link to Travis build is also attached here.
    cyrill gorcunov
    @cyrillos_twitter
    The _Generic helper is needed to traverse the types (as far as I remember). So I think we need some kind of workaround (if only it won't take too much time to implement).
    Andrei Vagin
    @avagin
    I think we can postpone this issue and concentrate on integrating flog into criu.
    cyrill gorcunov
    @cyrillos_twitter
    if there is a simple way to skip this tests on travis then sure
    the https://gustedt.wordpress.com/2012/01/02/emulating-c11-compiler-features-with-gcc-_generic/ provides P99_GENERIC macro example which should be easy to test
    i'm fine with any option (skip testing on centos or implement workaround)
    prakritigoyal19
    @prakritigoyal19
    I have been trying to run the code provided in this link and there are a few errors generated, I will try to fix to these error over these 2 days. Otherwise would it be alright to postpone this issue for the time being and revisit it after the completion of rest of the project?
    cyrill gorcunov
    @cyrillos_twitter
    Yeah, no rush, we can back to this later.
    Aryaman Puri
    @aryamanpuri
    Is there any open source internship opportunity?
    I have worked with React and Node.
    Manas Mangaonkar
    @Pac23
    does anyone have and are willing to share .img files that use the following handlers/magic - ipc_shm , ipc_msg, ipc_sem,sk_queues wanted these to test the decode functionality of "port of crit to go"
    Pavel Tikhomirov
    @Snorch

    @Pac23 zdtm test zdtm/static/shm produces test/dump/zdtm/static/shm/51/1/ipcns-shm-11.img maybe it's what you need? If so just lookup relevant tests for other primitives and they would generate images for you if you run them with

    ./test/zdtm.py run -t zdtm/static/shm -k always

    Manas Mangaonkar
    @Pac23
    Thanks @Snorch i will look into this and get back
    ashwani29
    @ashwani29
    what does fdstore_init() do during restore of the container?
    Pavel Tikhomirov
    @Snorch
    Initializes fdstore as it's name states. checkpoint-restore/criu@4d06aa1 You can search commit comments in git first before asking a question =) We always add meaningful comments to explain each commit.
    rajbhar
    @rajbhar
    Hello.. can this be used for informal discussion/criu related queries or the preferred way is mailing list? I am starting to work on adding device file support for a gpu device
    Pavel Tikhomirov
    @Snorch
    You can surely start a discussion here and ask questions, we would try to help to the best of our knowledge.