<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    -------- Original Message --------
    <div class="moz-forward-container">
      <table class="moz-email-headers-table" border="0" cellpadding="0"
        cellspacing="0">
        <tbody>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Subject:
            </th>
            <td>Re: [CRIU] Self Restoring</td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Date: </th>
            <td>Thu, 24 Apr 2014 17:19:33 +0400</td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">From: </th>
            <td>Ruslan Kuprieiev <a class="moz-txt-link-rfc2396E" href="mailto:kupruser@gmail.com">&lt;kupruser@gmail.com&gt;</a></td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap="nowrap" valign="BASELINE">To: </th>
            <td><a class="moz-txt-link-abbreviated" href="mailto:criu@openvz.org">criu@openvz.org</a></td>
          </tr>
        </tbody>
      </table>
      <br>
      <br>
      <meta content="text/html; charset=ISO-8859-1"
        http-equiv="Content-Type">
      <div class="moz-cite-prefix">Hi Maximilian!<br>
        <br>
        Thank you for your question!<br>
        Looks like your problem is a sub-problem of <a
          moz-do-not-send="true" href="http://criu.org/Applying_images">applying
          images on a working </a><br>
        <a moz-do-not-send="true" href="http://criu.org/Applying_images">process</a>,
        which I'm currently trying to solve. I'm on some initial stages
        of solving,<br>
        without any submitted code yet. It's planned to add "apply"
        request to RPC after.<br>
        <br>
        On 24.04.2014 16:29, Maximilian Kleber wrote:<br>
      </div>
      <blockquote
        cite="mid:611AC132-C05B-48C0-9995-95733E0BB8D0@stud.uni-saarland.de"
        type="cite">
        <meta http-equiv="Content-Type" content="text/html;
          charset=ISO-8859-1">
        Hello everybody,
        <div><br>
        </div>
        <div>I&#8217;m currently working with CRIU as a part of my bachelor
          thesis.</div>
        <div>One of the ideas is to provide CRIU access via a library
          approach for Java applications.</div>
        <div><br>
        </div>
        <div>For this I&#8217;m using the provided C Library and JNI.</div>
        <div><br>
        </div>
        <div>One of the goals is that an application can checkpoint and
          restore itself.&nbsp;</div>
        <div>To be able to restore itself later, I&#8217;ll set the
          leave_running option when issuing the checkpoint request (I
          know this should be avoided, but elsewise this feature does
          not make much sense).</div>
        <div><br>
        </div>
        <div>Checkpointing, restoring via command line or restoring an
          older session within the application works. But I can&#8217;t
          checkpoint and then restore this checkpoint directly
          afterwards. I guess CRIU tries to restore the original PID but
          since the original application is still running, this results
          in a conflict and a restoring failure.&nbsp;</div>
        <div><br>
        </div>
        <div>So I guess process duplication is not possible but <i>is
            there a way an application can replace itself with an older
            checkpoint of the same execution session?</i></div>
        <div><br>
        </div>
        <div>I already tried to fork a child before restoring the
          application and within this child I kill the parent process
          and restore then the older checkpoint, which seems to work
          fine but I can only work if the child has no other siblings,
          since then the PID conflicts occur again.</div>
        <div>Another issue is, that killing an application does not
          always terminate the application instantly, I have to somehow
          wait for the process to terminate. Another idea was to send
          the kill signal to the whole process group to reach all child
          processes but this would also affect the forked child which I
          need to restore the application once all processes have been
          terminated. Maybe I find a way to somehow detach the forked
          child from the parent and the whole process group.</div>
        <div><br>
        </div>
        <div>I would be glad if anyone has an idea how to solve the
          problem of self-restoring. Any comments are welcome!</div>
        <div><br>
        </div>
        <div>Thank you in advance!</div>
        <div><br>
        </div>
        <div>Best regards,</div>
        <div>Maximilian Kleber</div>
        <br>
        <fieldset class="mimeAttachmentHeader"></fieldset>
        <br>
        <pre wrap="">_______________________________________________
CRIU mailing list
<a moz-do-not-send="true" class="moz-txt-link-abbreviated" href="mailto:CRIU@openvz.org">CRIU@openvz.org</a>
<a moz-do-not-send="true" class="moz-txt-link-freetext" href="https://lists.openvz.org/mailman/listinfo/criu">https://lists.openvz.org/mailman/listinfo/criu</a>
</pre>
      </blockquote>
      <br>
      <br>
    </div>
    <br>
  </body>
</html>