<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://criu.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ymanton</id>
	<title>CRIU - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://criu.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ymanton"/>
	<link rel="alternate" type="text/html" href="https://criu.org/Special:Contributions/Ymanton"/>
	<updated>2026-04-09T13:46:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.6</generator>
	<entry>
		<id>https://criu.org/index.php?title=CLI/opt/--tcp-close&amp;diff=5427</id>
		<title>CLI/opt/--tcp-close</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=CLI/opt/--tcp-close&amp;diff=5427"/>
		<updated>2023-10-19T15:19:34Z</updated>

		<summary type="html">&lt;p&gt;Ymanton: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Main article: [[TCP connection]]''&lt;br /&gt;
&lt;br /&gt;
tldr; This option is only used with CRIU restore command.&lt;br /&gt;
It allows your listening (server) TCP sockets to exist after process tree c/r. It drops all the other TCP connections in the process tree.&lt;br /&gt;
All your server clients will be able reconnect to its listening sockets created during process tree restore.&lt;br /&gt;
--tcp-close option allows you to migrate your servers to environments with different ip addresses if your sockets listen on addresses such as 0.0.0.0.&lt;br /&gt;
Moreover you'll be able to restore many copies of your server on different machines in this case.&lt;br /&gt;
--tcp-close option works well with another one that allows to change ip addresses of sockets in CRIU image files. It is not implemented yet (https://github.com/checkpoint-restore/criu/issues/211).&lt;br /&gt;
&lt;br /&gt;
Some details:&lt;br /&gt;
&lt;br /&gt;
All the original process tree sockets data is preserved in process tree image files.&lt;br /&gt;
--tcp-close option affects all the process tree TCP sockets that have any TCP state except CLOSED and LISTEN.&lt;br /&gt;
Those affected sockets are restored in CLOSED TCP state (TCP_CLOSE Linux macro).&lt;br /&gt;
Userspace code that uses those affected sockets will just get errors from its syscalls. Then it would assume that there was a networking/peer problem&lt;br /&gt;
and it would execute usual error handling code path.&lt;br /&gt;
&lt;br /&gt;
[[Category: CLI]]&lt;br /&gt;
[[Category:Sockets]]&lt;br /&gt;
[[Category:Editor_help_needed]]&lt;/div&gt;</summary>
		<author><name>Ymanton</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Validate_files_on_restore&amp;diff=5426</id>
		<title>Validate files on restore</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Validate_files_on_restore&amp;diff=5426"/>
		<updated>2023-10-19T14:27:59Z</updated>

		<summary type="html">&lt;p&gt;Ymanton: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes what CRIU does to make sure it restores the correct set of files and how this file validation is implemented in CRIU. This project was completed under the [https://summerofcode.withgoogle.com/projects/#5773537320632320 GSoC 2020 program].&lt;br /&gt;
&lt;br /&gt;
Note: This is NOT merged to CRIU, see https://github.com/checkpoint-restore/criu/pull/1148&lt;br /&gt;
&lt;br /&gt;
== The previous implementation ==&lt;br /&gt;
Since CRIU doesn’t carry the contents of files into images while dumping (Except for ghost files), files that are being restored must be validated to make sure they are the “same” as they were during the dumping process (Especially true for ELF files since there is a risk of restoring executables or libraries of a different version). This was being done by only storing and comparing the size of the file. By itself, this isn’t a very strong check.&lt;br /&gt;
&lt;br /&gt;
== The current implementation ==&lt;br /&gt;
The file size method is used as a preliminary method, if it fails there’s no need to do any of the more intensive checks, instead it will immediately give out an error and stop restoring. Stronger checks are used only if it passes.&lt;br /&gt;
&lt;br /&gt;
The simplest and strongest check is to calculate the checksum for the entire file but this would be very intensive for large files and therefore not always feasible. A reasonable compromise would be to calculate the checksum only for certain parts of the file. This is the checksum method and it is one of the two methods that have been implemented in CRIU.&lt;br /&gt;
&lt;br /&gt;
The other method is the build-ID method. The build-ID is a &amp;quot;strongly unique embedded identifier&amp;quot; that (If present) is stored in a particular note section of ELF files.&lt;br /&gt;
&lt;br /&gt;
== Build-ID ==&lt;br /&gt;
The build-ID (If present) is stored in a note of type &amp;lt;code&amp;gt;NT_GNU_BUILD_ID&amp;lt;/code&amp;gt; in the ELF file. All notes are in the note section which is a program header of type &amp;lt;code&amp;gt;PT_NOTE&amp;lt;/code&amp;gt; in the ELF file. After the file has been mmap-ed, the first thing that needs to be done is to check whether the file is an ELF file or not. This is done by checking for the magic number. The next thing to do is to identify whether the file is a 32-bit ELF file or a 64-bit ELF file since the data types of the variables used to parse the ELF file will change depending on the bitness of the file (There are specific 32-bit and 64-bit variants of the data structures in &amp;lt;code&amp;gt;elf.h&amp;lt;/code&amp;gt;) but the procedure will remain the same.&lt;br /&gt;
&lt;br /&gt;
The position of the program headers is stored as an offset in &amp;lt;code&amp;gt;phoff&amp;lt;/code&amp;gt;. Since all the program headers are stored in an arbitrary order, each program header needs to be checked. If a program header of type &amp;lt;code&amp;gt;PT_NOTE&amp;lt;/code&amp;gt; is found, the position of this note section is stored as an offset in &amp;lt;code&amp;gt;p_offset&amp;lt;/code&amp;gt;. The notes are stored in an arbitrary order as well, so each note needs to be checked. If a note of type &amp;lt;code&amp;gt;NT_GNU_BUILD_ID&amp;lt;/code&amp;gt; is found, the build-ID is present in its description.&lt;br /&gt;
&lt;br /&gt;
== Checksum ==&lt;br /&gt;
CRC32C is used to calculate the checksum. The only difference between CRC32C and CRC32 is the polynomial being used. CRC32C uses the Castagnoli polynomial (0x82F63B78 in little-endian notation) and CRC32 uses 0xEDB88320 (In little-endian notation).&lt;br /&gt;
&lt;br /&gt;
The file is mapped 10 MB at a time and the checksum is calculated on the required bytes (Depending on the configuration set - Entire file, First N bytes of the file, or Every Nth byte of the file). N is the checksum parameter.&lt;br /&gt;
&lt;br /&gt;
Adding a new configuration is quite simple and only requires the iterator to be moved to the necessary bytes (0 refers to the first byte of the file and 1 refers to the second byte and so on):&lt;br /&gt;
# Input handling for the new configuration&lt;br /&gt;
# The &amp;lt;code&amp;gt;checksum_iterator_init&amp;lt;/code&amp;gt; function in ''&amp;quot;criu/files-reg.c”'' sets the initial iterator position (The first byte to calculate the checksum)&lt;br /&gt;
# The &amp;lt;code&amp;gt;checksum_iterator_next&amp;lt;/code&amp;gt; function in ''“criu/files-reg.c”'' moves the iterator to the next position (The next byte to calculate the checksum)&lt;br /&gt;
# The &amp;lt;code&amp;gt;checksum_iterator_stop&amp;lt;/code&amp;gt; function in ''“criu/files-reg.c”'' returns true when the iterator has reached its final position&lt;br /&gt;
There is a separate check in the &amp;lt;code&amp;gt;calculate_checksum&amp;lt;/code&amp;gt; function to make sure the iterator refers to a valid byte (Not negative and smaller than the total number of bytes in the file). If the iterator is outside the mapped region but still valid, the required region of the file will be mapped.&lt;br /&gt;
&lt;br /&gt;
== Using different validation methods and parameters ==&lt;br /&gt;
The build-ID method is much less intensive compared to the checksum method while still being a much stronger check than simply comparing the file size and is therefore the default. In other words, &amp;lt;code&amp;gt;--file-validation buildid&amp;lt;/code&amp;gt; will not make a difference as this is the default method.&lt;br /&gt;
&lt;br /&gt;
CRIU can also be configured to use the checksum method by default by using the &amp;lt;code&amp;gt;--file-validation option&amp;lt;/code&amp;gt;:&lt;br /&gt;
* &amp;lt;code&amp;gt;--file-validation checksum-full&amp;lt;/code&amp;gt; to calculate and use the checksum on the entire file.&lt;br /&gt;
* &amp;lt;code&amp;gt;--file-validation checksum&amp;lt;/code&amp;gt; to calculate and use the checksum on the first N bytes of the file. The parameter N is set by using the &amp;lt;code&amp;gt;--checksum-parameter&amp;lt;/code&amp;gt; option.&lt;br /&gt;
* &amp;lt;code&amp;gt;--file-validation checksum-period&amp;lt;/code&amp;gt; to calculate and use the checksum on every Nth byte of the file (Including the first byte of the file). The parameter N is set by using the &amp;lt;code&amp;gt;--checksum-parameter option&amp;lt;/code&amp;gt;.&lt;br /&gt;
By default, the checksum parameter N is set to 1024. If a method that doesn’t require the checksum parameter is being used, then the checksum parameter is simply ignored.&lt;br /&gt;
For example, to use the checksum method on the first 2048 bytes of the file: &amp;lt;code&amp;gt;--file-validation checksum --checksum-parameter 2048&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the build-ID method is being used and is inconclusive (Maybe because the ELF file doesn’t contain a build-ID), then the checksum method on the first 1024 bytes of the file is used as a fallback. If the checksum method is being used and is inconclusive, then the build-ID method is used as a fallback. If both are inconclusive, only the file size check is used (And a warning is put out to inform the user that only a weak check has been used for that particular file).&lt;br /&gt;
&lt;br /&gt;
To explicitly use only the file size check all the time, the following command-line option can be used: &amp;lt;code&amp;gt;--file-validation filesize&amp;lt;/code&amp;gt; (This is the fastest and least intensive check).&lt;br /&gt;
&lt;br /&gt;
== Performance impact ==&lt;br /&gt;
The values shown below are the average times it took to finish the ZDTM tests over multiple runs, and are only to indicate the impact each method has in general.&lt;br /&gt;
&lt;br /&gt;
Each test has 3 files (Of sizes: 0.09 MB, 2 MB and 0.17 MB approximately) and each test is run 3 times (In Host, Namespace and User Namespace). For each file the checksum/build-ID is obtained twice (During dump and restore) therefore the function to find checksum/build-ID is called 18 times overall per test.&lt;br /&gt;
&lt;br /&gt;
For reference, these tests were run on tmpfs (To remove any disk latency) and on an undervolted i5 4800H.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&lt;br /&gt;
|+zdtm/transition/shmem:&lt;br /&gt;
|-&lt;br /&gt;
|File Size&lt;br /&gt;
|3.782s&lt;br /&gt;
|-&lt;br /&gt;
|Build-ID&lt;br /&gt;
|4.153s (~9% increase)&lt;br /&gt;
|-&lt;br /&gt;
|Checksum (First 1024 bytes)&lt;br /&gt;
|4.465s (~18% increase)&lt;br /&gt;
|-&lt;br /&gt;
|Checksum (Entire File)&lt;br /&gt;
|4.722s (~24% increase)&lt;br /&gt;
|-&lt;br /&gt;
|Checksum (Every 1024th byte)&lt;br /&gt;
|4.498s (~19% increase)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&lt;br /&gt;
|+zdtm/static/maps04:&lt;br /&gt;
|-&lt;br /&gt;
|File Size&lt;br /&gt;
|35.317s&lt;br /&gt;
|-&lt;br /&gt;
|Build-ID&lt;br /&gt;
|35.720s (~1% increase)&lt;br /&gt;
|-&lt;br /&gt;
|Checksum (First 1024 bytes)&lt;br /&gt;
|35.919s (~2% increase)&lt;br /&gt;
|-&lt;br /&gt;
|Checksum (Entire File)&lt;br /&gt;
|36.679s (~4% increase)&lt;br /&gt;
|-&lt;br /&gt;
|Checksum (Every 1024th byte)&lt;br /&gt;
|36.476s (~3% increase)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Scope for improvement and future work ==&lt;br /&gt;
* Calculating the checksum can be made faster by using a lookup table.&lt;br /&gt;
&lt;br /&gt;
[[Category:Files]]&lt;br /&gt;
[[Category:Under the hood]]&lt;/div&gt;</summary>
		<author><name>Ymanton</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=CRIT&amp;diff=5323</id>
		<title>CRIT</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=CRIT&amp;diff=5323"/>
		<updated>2022-11-04T16:31:05Z</updated>

		<summary type="html">&lt;p&gt;Ymanton: /* Check/validate images */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page describes the CRIT Python tool. For the Go library, see [[CRIT (Go library)]]''.&lt;br /&gt;
&lt;br /&gt;
CRiu Image Tool is a feature-rich replacement for existing &amp;quot;criu show&amp;quot;.&lt;br /&gt;
It is written completely in Python, so it is quite easy to read the code and extend its features.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usage: crit [-h] {decode,encode,info,x,show} ...&lt;br /&gt;
&lt;br /&gt;
CRiu Image Tool&lt;br /&gt;
&lt;br /&gt;
positional arguments:&lt;br /&gt;
  {decode,encode,info,x,show}&lt;br /&gt;
                        Use crit CMD --help for command-specific help&lt;br /&gt;
    decode              convert criu image from binary type to json&lt;br /&gt;
    encode              convert criu image from json type to binary&lt;br /&gt;
    info                show info about image&lt;br /&gt;
    x                   explore image dir&lt;br /&gt;
    show                convert criu image from binary to human-readable json&lt;br /&gt;
&lt;br /&gt;
optional arguments:&lt;br /&gt;
  -h, --help            show this help message and exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pretty output ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;crit decode&amp;lt;/code&amp;gt; prints JSON text in one line. This can be read by any further JSON-aware tool for parsing. For human eyes it's more convenient to read JSON multi-line with indentation. CRIT can do this when using the &amp;lt;code&amp;gt;show&amp;lt;/code&amp;gt; action or the &amp;lt;code&amp;gt;--pretty&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
Wend doing pretty optput CRIT does a little bit more, than just multiline indented JSON.&lt;br /&gt;
&lt;br /&gt;
; Addresses and registers&lt;br /&gt;
: VM addresses and core.img register values are all printed in hex. Since JSON doesn't support this form of numbers, such fields are encoded as strings.&lt;br /&gt;
&lt;br /&gt;
; Bit-fields&lt;br /&gt;
: Such things as flags and masks (e.g. sig-block mask) are also better understood when written in hex, so CRIT does this.&lt;br /&gt;
&lt;br /&gt;
; IP addresses&lt;br /&gt;
: By default those a printed in decimal, but the &amp;quot;1.2.3.4&amp;quot; for v4 or &amp;quot;::1&amp;quot; for v6 can be seen in the --pretty mode.&lt;br /&gt;
&lt;br /&gt;
; Symbolic names for flags&lt;br /&gt;
: Some known bit sets (e.g. MAP_PRIVATE, MAP_ANONYMOUS, etc. for vma-&amp;gt;flags) are shown with names.&lt;br /&gt;
&lt;br /&gt;
; Device numbers&lt;br /&gt;
: If the field is known to be of &amp;lt;code&amp;gt;dev_t&amp;lt;/code&amp;gt; type, it's printed in the &amp;lt;code&amp;gt;major:minor&amp;lt;/code&amp;gt; manner&lt;br /&gt;
&lt;br /&gt;
== Functionality ==&lt;br /&gt;
&lt;br /&gt;
=== Convert images from IMG to JSON ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;crit decode&amp;lt;/code&amp;gt; is the replacement for the (rather nasty) &amp;lt;code&amp;gt;criu show&amp;lt;/code&amp;gt; code. This is also the way to edit the images before restoring from them.&lt;br /&gt;
&lt;br /&gt;
It uses [https://developers.google.com/protocol-buffers/docs/reference/python/google.protobuf.text_format-module text_format] as a human-readable format for protobuf messages.&lt;br /&gt;
&lt;br /&gt;
The output file is structured in the following way.&lt;br /&gt;
&lt;br /&gt;
Without &amp;quot;--pretty&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ &amp;quot;magic&amp;quot; : &amp;quot;FOO&amp;quot;, &amp;quot;entries&amp;quot; : [{&amp;quot;foo&amp;quot;: &amp;quot;bar&amp;quot;, &amp;quot;bar&amp;quot;: &amp;quot;foo&amp;quot;, &amp;quot;extra&amp;quot;: &amp;quot;abc&amp;quot;}, {&amp;quot;foo&amp;quot;: &amp;quot;bar&amp;quot;, &amp;quot;bar&amp;quot; : &amp;quot;foo&amp;quot;, &amp;quot;extra&amp;quot; : &amp;quot;abc&amp;quot;} ]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With &amp;quot;--pretty&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;magic&amp;quot; : &amp;quot;FOO&amp;quot;,&lt;br /&gt;
    &amp;quot;entries&amp;quot; : [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;foo&amp;quot; : &amp;quot;bar&amp;quot;,&lt;br /&gt;
            &amp;quot;bar&amp;quot; : &amp;quot;foo&amp;quot;,&lt;br /&gt;
            &amp;quot;extra&amp;quot; : &amp;quot;abc&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;foo&amp;quot; : &amp;quot;bar&amp;quot;,&lt;br /&gt;
            &amp;quot;bar&amp;quot; : &amp;quot;foo&amp;quot;,&lt;br /&gt;
            &amp;quot;extra&amp;quot; : &amp;quot;abc&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:800px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example(&amp;quot;crit decode -i core-5679.img --pretty&amp;quot;)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;amp;quot;magic&amp;amp;quot;: &amp;amp;quot;CORE&amp;amp;quot;, &lt;br /&gt;
    &amp;amp;quot;entries&amp;amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;amp;quot;mtype&amp;amp;quot;: &amp;amp;quot;X86_64&amp;amp;quot;, &lt;br /&gt;
            &amp;amp;quot;thread_core&amp;amp;quot;: {&lt;br /&gt;
                &amp;amp;quot;futex_rla_len&amp;amp;quot;: 24, &lt;br /&gt;
                &amp;amp;quot;sched_policy&amp;amp;quot;: 0, &lt;br /&gt;
                &amp;amp;quot;sched_nice&amp;amp;quot;: 0, &lt;br /&gt;
                &amp;amp;quot;futex_rla&amp;amp;quot;: 0, &lt;br /&gt;
                &amp;amp;quot;signals_p&amp;amp;quot;: {}, &lt;br /&gt;
                &amp;amp;quot;sas&amp;amp;quot;: {&lt;br /&gt;
                    &amp;amp;quot;ss_size&amp;amp;quot;: 0, &lt;br /&gt;
                    &amp;amp;quot;ss_sp&amp;amp;quot;: 0, &lt;br /&gt;
                    &amp;amp;quot;ss_flags&amp;amp;quot;: 2&lt;br /&gt;
                }&lt;br /&gt;
            }, &lt;br /&gt;
            &amp;amp;quot;thread_info&amp;amp;quot;: {&lt;br /&gt;
                &amp;amp;quot;fpregs&amp;amp;quot;: {&lt;br /&gt;
                    &amp;amp;quot;st_space&amp;amp;quot;: [&lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0&lt;br /&gt;
                    ], &lt;br /&gt;
                    &amp;amp;quot;fop&amp;amp;quot;: 0, &lt;br /&gt;
                    &amp;amp;quot;rdp&amp;amp;quot;: 0, &lt;br /&gt;
                    &amp;amp;quot;twd&amp;amp;quot;: 0, &lt;br /&gt;
                    &amp;amp;quot;mxcsr&amp;amp;quot;: 8064, &lt;br /&gt;
                    &amp;amp;quot;swd&amp;amp;quot;: 0, &lt;br /&gt;
                    &amp;amp;quot;rip&amp;amp;quot;: 0, &lt;br /&gt;
                    &amp;amp;quot;xsave&amp;amp;quot;: {&lt;br /&gt;
                        &amp;amp;quot;ymmh_space&amp;amp;quot;: [&lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0&lt;br /&gt;
                        ], &lt;br /&gt;
                        &amp;amp;quot;xstate_bv&amp;amp;quot;: 2&lt;br /&gt;
                    }, &lt;br /&gt;
                    &amp;amp;quot;xmm_space&amp;amp;quot;: [&lt;br /&gt;
                        0, &lt;br /&gt;
                        4278190080, &lt;br /&gt;
                        4294967295, &lt;br /&gt;
                        4294967295, &lt;br /&gt;
                        1701145715, &lt;br /&gt;
                        3219568, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        33, &lt;br /&gt;
                        0, &lt;br /&gt;
                        792358505, &lt;br /&gt;
                        1953460082, &lt;br /&gt;
                        1852400175, &lt;br /&gt;
                        0, &lt;br /&gt;
                        942882145, &lt;br /&gt;
                        876295483, &lt;br /&gt;
                        774519349, &lt;br /&gt;
                        1031303283, &lt;br /&gt;
                        893073459, &lt;br /&gt;
                        976565307, &lt;br /&gt;
                        1937255978, &lt;br /&gt;
                        859661936, &lt;br /&gt;
                        993344312, &lt;br /&gt;
                        3814708, &lt;br /&gt;
                        65, &lt;br /&gt;
                        0, &lt;br /&gt;
                        37049520, &lt;br /&gt;
                        0, &lt;br /&gt;
                        37049632, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        4294901760, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0&lt;br /&gt;
                    ], &lt;br /&gt;
                    &amp;amp;quot;cwd&amp;amp;quot;: 0, &lt;br /&gt;
                    &amp;amp;quot;mxcsr_mask&amp;amp;quot;: 65535&lt;br /&gt;
                }, &lt;br /&gt;
                &amp;amp;quot;clear_tid_addr&amp;amp;quot;: 0, &lt;br /&gt;
                &amp;amp;quot;gpregs&amp;amp;quot;: {&lt;br /&gt;
                    &amp;amp;quot;gs&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;ip&amp;amp;quot;: &amp;amp;quot;0x7f172cf1ea04&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;cx&amp;amp;quot;: &amp;amp;quot;0xffffffffffffffff&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;cs&amp;amp;quot;: &amp;amp;quot;0x33&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;ax&amp;amp;quot;: &amp;amp;quot;0x38&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;orig_ax&amp;amp;quot;: &amp;amp;quot;0x38&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;di&amp;amp;quot;: &amp;amp;quot;0x1200011&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;es&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;gs_base&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;r14&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;r15&amp;amp;quot;: &amp;amp;quot;0x2355e00&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;r12&amp;amp;quot;: &amp;amp;quot;0x7ffffdbf74f0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;r13&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;r10&amp;amp;quot;: &amp;amp;quot;0x7f172d83d9d0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;r11&amp;amp;quot;: &amp;amp;quot;0x246&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;fs_base&amp;amp;quot;: &amp;amp;quot;0x7f172d83d700&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;bp&amp;amp;quot;: &amp;amp;quot;0x7ffffdbf7530&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;dx&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;bx&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;ds&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;ss&amp;amp;quot;: &amp;amp;quot;0x2b&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;sp&amp;amp;quot;: &amp;amp;quot;0x7ffffdbf74f0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;r8&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;r9&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;fs&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;si&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;flags&amp;amp;quot;: &amp;amp;quot;0x246&amp;amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            }, &lt;br /&gt;
            &amp;amp;quot;tc&amp;amp;quot;: {&lt;br /&gt;
                &amp;amp;quot;timers&amp;amp;quot;: {&lt;br /&gt;
                    &amp;amp;quot;real&amp;amp;quot;: {&lt;br /&gt;
                        &amp;amp;quot;isec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;vusec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;iusec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;vsec&amp;amp;quot;: 0&lt;br /&gt;
                    }, &lt;br /&gt;
                    &amp;amp;quot;virt&amp;amp;quot;: {&lt;br /&gt;
                        &amp;amp;quot;isec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;vusec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;iusec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;vsec&amp;amp;quot;: 0&lt;br /&gt;
                    }, &lt;br /&gt;
                    &amp;amp;quot;prof&amp;amp;quot;: {&lt;br /&gt;
                        &amp;amp;quot;isec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;vusec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;iusec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;vsec&amp;amp;quot;: 0&lt;br /&gt;
                    }&lt;br /&gt;
                }, &lt;br /&gt;
                &amp;amp;quot;cg_set&amp;amp;quot;: 1, &lt;br /&gt;
                &amp;amp;quot;signals_s&amp;amp;quot;: {}, &lt;br /&gt;
                &amp;amp;quot;blk_sigset&amp;amp;quot;: &amp;amp;quot;0x10002&amp;amp;quot;, &lt;br /&gt;
                &amp;amp;quot;exit_code&amp;amp;quot;: 0, &lt;br /&gt;
                &amp;amp;quot;rlimits&amp;amp;quot;: {&lt;br /&gt;
                    &amp;amp;quot;rlimits&amp;amp;quot;: [&lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 18446744073709551615&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 18446744073709551615&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 18446744073709551615&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 8388608&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 0&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 18446744073709551615&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 62844, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 62844&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 4096, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 1024&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 65536, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 65536&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 18446744073709551615&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 18446744073709551615&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 62844, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 62844&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 819200, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 819200&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 0, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 0&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 0, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 0&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 18446744073709551615&lt;br /&gt;
                        }&lt;br /&gt;
                    ]&lt;br /&gt;
                }, &lt;br /&gt;
                &amp;amp;quot;comm&amp;amp;quot;: &amp;amp;quot;loop.sh&amp;amp;quot;, &lt;br /&gt;
                &amp;amp;quot;flags&amp;amp;quot;: 1077960704, &lt;br /&gt;
                &amp;amp;quot;task_state&amp;amp;quot;: 1, &lt;br /&gt;
                &amp;amp;quot;personality&amp;amp;quot;: 0&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Decode also supports input via STDIN instead of the &amp;quot;-i&amp;quot; flag. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;quot;core-5679.img&amp;quot; | crit decode &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert images from JSON to IMG ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;crit encode&amp;lt;/code&amp;gt; converts the image from JSON to IMG. Standard usage would look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
crit encode -i core-5679.json -o core-5679.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Encode also supports input via STDIN instead of the &amp;quot;-i&amp;quot; flag. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;quot;core-5679.json&amp;quot; | crit encode &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Incase a &amp;quot;-o&amp;quot; flag is not specified the input is piped out to STDOUT.&lt;br /&gt;
&lt;br /&gt;
=== Generate core files out of task images ===&lt;br /&gt;
&lt;br /&gt;
Moved into separate project called [[criu-coredump]].&lt;br /&gt;
&lt;br /&gt;
=== Show images statistics ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;crit x&amp;lt;/code&amp;gt; allows you to explore image statistics.&lt;br /&gt;
E.g. Total number of processes, files, memory, sockets, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
crit x $directory_with_images &amp;lt;explore type&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supported explorers are&lt;br /&gt;
;'ps'&lt;br /&gt;
:to show process tree&lt;br /&gt;
&lt;br /&gt;
;'fds'&lt;br /&gt;
:to show files used by tasks&lt;br /&gt;
&lt;br /&gt;
;'mems'&lt;br /&gt;
:to show memory mappings info&lt;br /&gt;
&lt;br /&gt;
=== Show images Info ===&lt;br /&gt;
&lt;br /&gt;
Image of a info such as its &amp;quot;COUNT&amp;quot; and &amp;quot;MAGIC&amp;quot; can be displayed using the INFO command.&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:800px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example(&amp;quot;crit info core-5679.img&amp;quot;)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;count&amp;quot;: 1, &lt;br /&gt;
    &amp;quot;magic&amp;quot;: &amp;quot;CORE&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Planned functionality ==&lt;br /&gt;
&lt;br /&gt;
=== On-the-fly conversion ===&lt;br /&gt;
&lt;br /&gt;
There's an idea to make CRIU spawn CRIT and read images &amp;quot;through&amp;quot; it, to allow for at-the-restore-time modifications. For details, see https://github.com/checkpoint-restore/criu/issues/59.&lt;br /&gt;
&lt;br /&gt;
=== Convert between different image versions ===&lt;br /&gt;
&lt;br /&gt;
Right now we store the images version in inventory.img and collect info about [[what's bad with V1 images]]. If some day we have v2, CRIT will convert from v1. And for backward compatibility we'll use on-the-fly conversion when restoring from old images.&lt;br /&gt;
&lt;br /&gt;
=== Check/validate images ===&lt;br /&gt;
&lt;br /&gt;
Check that&lt;br /&gt;
* all images are present&lt;br /&gt;
* the inter-images IDs are in consistent state&lt;br /&gt;
&lt;br /&gt;
For details, see https://github.com/checkpoint-restore/criu/issues/44.&lt;br /&gt;
&lt;br /&gt;
=== [[Anonymize image files]] ===&lt;br /&gt;
&lt;br /&gt;
Since images contain raw memory dumps people may refuse to send us images for debugging. Need to anonymize them, i.e. -- remove this sensitive information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Images]]&lt;br /&gt;
[[Category:API]]&lt;/div&gt;</summary>
		<author><name>Ymanton</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=CRIT&amp;diff=5322</id>
		<title>CRIT</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=CRIT&amp;diff=5322"/>
		<updated>2022-11-04T15:22:47Z</updated>

		<summary type="html">&lt;p&gt;Ymanton: /* On-the-fly conversion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page describes the CRIT Python tool. For the Go library, see [[CRIT (Go library)]]''.&lt;br /&gt;
&lt;br /&gt;
CRiu Image Tool is a feature-rich replacement for existing &amp;quot;criu show&amp;quot;.&lt;br /&gt;
It is written completely in Python, so it is quite easy to read the code and extend its features.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usage: crit [-h] {decode,encode,info,x,show} ...&lt;br /&gt;
&lt;br /&gt;
CRiu Image Tool&lt;br /&gt;
&lt;br /&gt;
positional arguments:&lt;br /&gt;
  {decode,encode,info,x,show}&lt;br /&gt;
                        Use crit CMD --help for command-specific help&lt;br /&gt;
    decode              convert criu image from binary type to json&lt;br /&gt;
    encode              convert criu image from json type to binary&lt;br /&gt;
    info                show info about image&lt;br /&gt;
    x                   explore image dir&lt;br /&gt;
    show                convert criu image from binary to human-readable json&lt;br /&gt;
&lt;br /&gt;
optional arguments:&lt;br /&gt;
  -h, --help            show this help message and exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pretty output ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;crit decode&amp;lt;/code&amp;gt; prints JSON text in one line. This can be read by any further JSON-aware tool for parsing. For human eyes it's more convenient to read JSON multi-line with indentation. CRIT can do this when using the &amp;lt;code&amp;gt;show&amp;lt;/code&amp;gt; action or the &amp;lt;code&amp;gt;--pretty&amp;lt;/code&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
Wend doing pretty optput CRIT does a little bit more, than just multiline indented JSON.&lt;br /&gt;
&lt;br /&gt;
; Addresses and registers&lt;br /&gt;
: VM addresses and core.img register values are all printed in hex. Since JSON doesn't support this form of numbers, such fields are encoded as strings.&lt;br /&gt;
&lt;br /&gt;
; Bit-fields&lt;br /&gt;
: Such things as flags and masks (e.g. sig-block mask) are also better understood when written in hex, so CRIT does this.&lt;br /&gt;
&lt;br /&gt;
; IP addresses&lt;br /&gt;
: By default those a printed in decimal, but the &amp;quot;1.2.3.4&amp;quot; for v4 or &amp;quot;::1&amp;quot; for v6 can be seen in the --pretty mode.&lt;br /&gt;
&lt;br /&gt;
; Symbolic names for flags&lt;br /&gt;
: Some known bit sets (e.g. MAP_PRIVATE, MAP_ANONYMOUS, etc. for vma-&amp;gt;flags) are shown with names.&lt;br /&gt;
&lt;br /&gt;
; Device numbers&lt;br /&gt;
: If the field is known to be of &amp;lt;code&amp;gt;dev_t&amp;lt;/code&amp;gt; type, it's printed in the &amp;lt;code&amp;gt;major:minor&amp;lt;/code&amp;gt; manner&lt;br /&gt;
&lt;br /&gt;
== Functionality ==&lt;br /&gt;
&lt;br /&gt;
=== Convert images from IMG to JSON ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;crit decode&amp;lt;/code&amp;gt; is the replacement for the (rather nasty) &amp;lt;code&amp;gt;criu show&amp;lt;/code&amp;gt; code. This is also the way to edit the images before restoring from them.&lt;br /&gt;
&lt;br /&gt;
It uses [https://developers.google.com/protocol-buffers/docs/reference/python/google.protobuf.text_format-module text_format] as a human-readable format for protobuf messages.&lt;br /&gt;
&lt;br /&gt;
The output file is structured in the following way.&lt;br /&gt;
&lt;br /&gt;
Without &amp;quot;--pretty&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{ &amp;quot;magic&amp;quot; : &amp;quot;FOO&amp;quot;, &amp;quot;entries&amp;quot; : [{&amp;quot;foo&amp;quot;: &amp;quot;bar&amp;quot;, &amp;quot;bar&amp;quot;: &amp;quot;foo&amp;quot;, &amp;quot;extra&amp;quot;: &amp;quot;abc&amp;quot;}, {&amp;quot;foo&amp;quot;: &amp;quot;bar&amp;quot;, &amp;quot;bar&amp;quot; : &amp;quot;foo&amp;quot;, &amp;quot;extra&amp;quot; : &amp;quot;abc&amp;quot;} ]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With &amp;quot;--pretty&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;magic&amp;quot; : &amp;quot;FOO&amp;quot;,&lt;br /&gt;
    &amp;quot;entries&amp;quot; : [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;foo&amp;quot; : &amp;quot;bar&amp;quot;,&lt;br /&gt;
            &amp;quot;bar&amp;quot; : &amp;quot;foo&amp;quot;,&lt;br /&gt;
            &amp;quot;extra&amp;quot; : &amp;quot;abc&amp;quot;&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;foo&amp;quot; : &amp;quot;bar&amp;quot;,&lt;br /&gt;
            &amp;quot;bar&amp;quot; : &amp;quot;foo&amp;quot;,&lt;br /&gt;
            &amp;quot;extra&amp;quot; : &amp;quot;abc&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:800px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example(&amp;quot;crit decode -i core-5679.img --pretty&amp;quot;)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;amp;quot;magic&amp;amp;quot;: &amp;amp;quot;CORE&amp;amp;quot;, &lt;br /&gt;
    &amp;amp;quot;entries&amp;amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;amp;quot;mtype&amp;amp;quot;: &amp;amp;quot;X86_64&amp;amp;quot;, &lt;br /&gt;
            &amp;amp;quot;thread_core&amp;amp;quot;: {&lt;br /&gt;
                &amp;amp;quot;futex_rla_len&amp;amp;quot;: 24, &lt;br /&gt;
                &amp;amp;quot;sched_policy&amp;amp;quot;: 0, &lt;br /&gt;
                &amp;amp;quot;sched_nice&amp;amp;quot;: 0, &lt;br /&gt;
                &amp;amp;quot;futex_rla&amp;amp;quot;: 0, &lt;br /&gt;
                &amp;amp;quot;signals_p&amp;amp;quot;: {}, &lt;br /&gt;
                &amp;amp;quot;sas&amp;amp;quot;: {&lt;br /&gt;
                    &amp;amp;quot;ss_size&amp;amp;quot;: 0, &lt;br /&gt;
                    &amp;amp;quot;ss_sp&amp;amp;quot;: 0, &lt;br /&gt;
                    &amp;amp;quot;ss_flags&amp;amp;quot;: 2&lt;br /&gt;
                }&lt;br /&gt;
            }, &lt;br /&gt;
            &amp;amp;quot;thread_info&amp;amp;quot;: {&lt;br /&gt;
                &amp;amp;quot;fpregs&amp;amp;quot;: {&lt;br /&gt;
                    &amp;amp;quot;st_space&amp;amp;quot;: [&lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0&lt;br /&gt;
                    ], &lt;br /&gt;
                    &amp;amp;quot;fop&amp;amp;quot;: 0, &lt;br /&gt;
                    &amp;amp;quot;rdp&amp;amp;quot;: 0, &lt;br /&gt;
                    &amp;amp;quot;twd&amp;amp;quot;: 0, &lt;br /&gt;
                    &amp;amp;quot;mxcsr&amp;amp;quot;: 8064, &lt;br /&gt;
                    &amp;amp;quot;swd&amp;amp;quot;: 0, &lt;br /&gt;
                    &amp;amp;quot;rip&amp;amp;quot;: 0, &lt;br /&gt;
                    &amp;amp;quot;xsave&amp;amp;quot;: {&lt;br /&gt;
                        &amp;amp;quot;ymmh_space&amp;amp;quot;: [&lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0, &lt;br /&gt;
                            0&lt;br /&gt;
                        ], &lt;br /&gt;
                        &amp;amp;quot;xstate_bv&amp;amp;quot;: 2&lt;br /&gt;
                    }, &lt;br /&gt;
                    &amp;amp;quot;xmm_space&amp;amp;quot;: [&lt;br /&gt;
                        0, &lt;br /&gt;
                        4278190080, &lt;br /&gt;
                        4294967295, &lt;br /&gt;
                        4294967295, &lt;br /&gt;
                        1701145715, &lt;br /&gt;
                        3219568, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        33, &lt;br /&gt;
                        0, &lt;br /&gt;
                        792358505, &lt;br /&gt;
                        1953460082, &lt;br /&gt;
                        1852400175, &lt;br /&gt;
                        0, &lt;br /&gt;
                        942882145, &lt;br /&gt;
                        876295483, &lt;br /&gt;
                        774519349, &lt;br /&gt;
                        1031303283, &lt;br /&gt;
                        893073459, &lt;br /&gt;
                        976565307, &lt;br /&gt;
                        1937255978, &lt;br /&gt;
                        859661936, &lt;br /&gt;
                        993344312, &lt;br /&gt;
                        3814708, &lt;br /&gt;
                        65, &lt;br /&gt;
                        0, &lt;br /&gt;
                        37049520, &lt;br /&gt;
                        0, &lt;br /&gt;
                        37049632, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        4294901760, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0, &lt;br /&gt;
                        0&lt;br /&gt;
                    ], &lt;br /&gt;
                    &amp;amp;quot;cwd&amp;amp;quot;: 0, &lt;br /&gt;
                    &amp;amp;quot;mxcsr_mask&amp;amp;quot;: 65535&lt;br /&gt;
                }, &lt;br /&gt;
                &amp;amp;quot;clear_tid_addr&amp;amp;quot;: 0, &lt;br /&gt;
                &amp;amp;quot;gpregs&amp;amp;quot;: {&lt;br /&gt;
                    &amp;amp;quot;gs&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;ip&amp;amp;quot;: &amp;amp;quot;0x7f172cf1ea04&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;cx&amp;amp;quot;: &amp;amp;quot;0xffffffffffffffff&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;cs&amp;amp;quot;: &amp;amp;quot;0x33&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;ax&amp;amp;quot;: &amp;amp;quot;0x38&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;orig_ax&amp;amp;quot;: &amp;amp;quot;0x38&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;di&amp;amp;quot;: &amp;amp;quot;0x1200011&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;es&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;gs_base&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;r14&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;r15&amp;amp;quot;: &amp;amp;quot;0x2355e00&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;r12&amp;amp;quot;: &amp;amp;quot;0x7ffffdbf74f0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;r13&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;r10&amp;amp;quot;: &amp;amp;quot;0x7f172d83d9d0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;r11&amp;amp;quot;: &amp;amp;quot;0x246&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;fs_base&amp;amp;quot;: &amp;amp;quot;0x7f172d83d700&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;bp&amp;amp;quot;: &amp;amp;quot;0x7ffffdbf7530&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;dx&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;bx&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;ds&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;ss&amp;amp;quot;: &amp;amp;quot;0x2b&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;sp&amp;amp;quot;: &amp;amp;quot;0x7ffffdbf74f0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;r8&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;r9&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;fs&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;si&amp;amp;quot;: &amp;amp;quot;0x0&amp;amp;quot;, &lt;br /&gt;
                    &amp;amp;quot;flags&amp;amp;quot;: &amp;amp;quot;0x246&amp;amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            }, &lt;br /&gt;
            &amp;amp;quot;tc&amp;amp;quot;: {&lt;br /&gt;
                &amp;amp;quot;timers&amp;amp;quot;: {&lt;br /&gt;
                    &amp;amp;quot;real&amp;amp;quot;: {&lt;br /&gt;
                        &amp;amp;quot;isec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;vusec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;iusec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;vsec&amp;amp;quot;: 0&lt;br /&gt;
                    }, &lt;br /&gt;
                    &amp;amp;quot;virt&amp;amp;quot;: {&lt;br /&gt;
                        &amp;amp;quot;isec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;vusec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;iusec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;vsec&amp;amp;quot;: 0&lt;br /&gt;
                    }, &lt;br /&gt;
                    &amp;amp;quot;prof&amp;amp;quot;: {&lt;br /&gt;
                        &amp;amp;quot;isec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;vusec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;iusec&amp;amp;quot;: 0, &lt;br /&gt;
                        &amp;amp;quot;vsec&amp;amp;quot;: 0&lt;br /&gt;
                    }&lt;br /&gt;
                }, &lt;br /&gt;
                &amp;amp;quot;cg_set&amp;amp;quot;: 1, &lt;br /&gt;
                &amp;amp;quot;signals_s&amp;amp;quot;: {}, &lt;br /&gt;
                &amp;amp;quot;blk_sigset&amp;amp;quot;: &amp;amp;quot;0x10002&amp;amp;quot;, &lt;br /&gt;
                &amp;amp;quot;exit_code&amp;amp;quot;: 0, &lt;br /&gt;
                &amp;amp;quot;rlimits&amp;amp;quot;: {&lt;br /&gt;
                    &amp;amp;quot;rlimits&amp;amp;quot;: [&lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 18446744073709551615&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 18446744073709551615&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 18446744073709551615&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 8388608&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 0&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 18446744073709551615&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 62844, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 62844&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 4096, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 1024&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 65536, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 65536&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 18446744073709551615&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 18446744073709551615&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 62844, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 62844&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 819200, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 819200&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 0, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 0&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 0, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 0&lt;br /&gt;
                        }, &lt;br /&gt;
                        {&lt;br /&gt;
                            &amp;amp;quot;max&amp;amp;quot;: 18446744073709551615, &lt;br /&gt;
                            &amp;amp;quot;cur&amp;amp;quot;: 18446744073709551615&lt;br /&gt;
                        }&lt;br /&gt;
                    ]&lt;br /&gt;
                }, &lt;br /&gt;
                &amp;amp;quot;comm&amp;amp;quot;: &amp;amp;quot;loop.sh&amp;amp;quot;, &lt;br /&gt;
                &amp;amp;quot;flags&amp;amp;quot;: 1077960704, &lt;br /&gt;
                &amp;amp;quot;task_state&amp;amp;quot;: 1, &lt;br /&gt;
                &amp;amp;quot;personality&amp;amp;quot;: 0&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Decode also supports input via STDIN instead of the &amp;quot;-i&amp;quot; flag. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;quot;core-5679.img&amp;quot; | crit decode &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Convert images from JSON to IMG ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;crit encode&amp;lt;/code&amp;gt; converts the image from JSON to IMG. Standard usage would look like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
crit encode -i core-5679.json -o core-5679.img&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Encode also supports input via STDIN instead of the &amp;quot;-i&amp;quot; flag. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;quot;core-5679.json&amp;quot; | crit encode &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Incase a &amp;quot;-o&amp;quot; flag is not specified the input is piped out to STDOUT.&lt;br /&gt;
&lt;br /&gt;
=== Generate core files out of task images ===&lt;br /&gt;
&lt;br /&gt;
Moved into separate project called [[criu-coredump]].&lt;br /&gt;
&lt;br /&gt;
=== Show images statistics ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;crit x&amp;lt;/code&amp;gt; allows you to explore image statistics.&lt;br /&gt;
E.g. Total number of processes, files, memory, sockets, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
crit x $directory_with_images &amp;lt;explore type&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Supported explorers are&lt;br /&gt;
;'ps'&lt;br /&gt;
:to show process tree&lt;br /&gt;
&lt;br /&gt;
;'fds'&lt;br /&gt;
:to show files used by tasks&lt;br /&gt;
&lt;br /&gt;
;'mems'&lt;br /&gt;
:to show memory mappings info&lt;br /&gt;
&lt;br /&gt;
=== Show images Info ===&lt;br /&gt;
&lt;br /&gt;
Image of a info such as its &amp;quot;COUNT&amp;quot; and &amp;quot;MAGIC&amp;quot; can be displayed using the INFO command.&lt;br /&gt;
&amp;lt;div class=&amp;quot;toccolours mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;width:800px&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Example(&amp;quot;crit info core-5679.img&amp;quot;)&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;count&amp;quot;: 1, &lt;br /&gt;
    &amp;quot;magic&amp;quot;: &amp;quot;CORE&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Planned functionality ==&lt;br /&gt;
&lt;br /&gt;
=== On-the-fly conversion ===&lt;br /&gt;
&lt;br /&gt;
There's an idea to make CRIU spawn CRIT and read images &amp;quot;through&amp;quot; it, to allow for at-the-restore-time modifications. For details, see https://github.com/checkpoint-restore/criu/issues/59.&lt;br /&gt;
&lt;br /&gt;
=== Convert between different image versions ===&lt;br /&gt;
&lt;br /&gt;
Right now we store the images version in inventory.img and collect info about [[what's bad with V1 images]]. If some day we have v2, CRIT will convert from v1. And for backward compatibility we'll use on-the-fly conversion when restoring from old images.&lt;br /&gt;
&lt;br /&gt;
=== Check/validate images ===&lt;br /&gt;
&lt;br /&gt;
Check that&lt;br /&gt;
* all images are present&lt;br /&gt;
* the inter-images IDs are in consistent state&lt;br /&gt;
&lt;br /&gt;
For details, see https://github.com/xemul/criu/issues/44.&lt;br /&gt;
&lt;br /&gt;
=== [[Anonymize image files]] ===&lt;br /&gt;
&lt;br /&gt;
Since images contain raw memory dumps people may refuse to send us images for debugging. Need to anonymize them, i.e. -- remove this sensitive information.&lt;br /&gt;
&lt;br /&gt;
[[Category:Images]]&lt;br /&gt;
[[Category:API]]&lt;/div&gt;</summary>
		<author><name>Ymanton</name></author>
	</entry>
	<entry>
		<id>https://criu.org/index.php?title=Statistics&amp;diff=5299</id>
		<title>Statistics</title>
		<link rel="alternate" type="text/html" href="https://criu.org/index.php?title=Statistics&amp;diff=5299"/>
		<updated>2022-07-25T16:55:30Z</updated>

		<summary type="html">&lt;p&gt;Ymanton: Update show command to use crit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;CRIU generates a set of &amp;lt;code&amp;gt;stats-&amp;lt;type&amp;gt;&amp;lt;/code&amp;gt; files that contain statistics about how dump/restore went. These files are in google-protocol-buffers format, just like the [[images]] are, and can be viewed using the &amp;lt;code&amp;gt;crit show [FILE]&amp;lt;/code&amp;gt; command (&amp;lt;code&amp;gt;criu show -f [FILE]&amp;lt;/code&amp;gt; in previous versions).&lt;br /&gt;
&lt;br /&gt;
== Dump/Pre-dump stats ==&lt;br /&gt;
&lt;br /&gt;
These are in &amp;lt;code&amp;gt;stats-dump&amp;lt;/code&amp;gt; file. Fields are:&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;freezing_time&amp;lt;/code&amp;gt;&lt;br /&gt;
:Time it took criu to freeze the process tree&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;frozen_time&amp;lt;/code&amp;gt;&lt;br /&gt;
:Time tasks were in frozen state&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;memdump_time&amp;lt;/code&amp;gt;&lt;br /&gt;
:Time criu spent grabbing required pages out of processes. This time does ''not'' include the next time&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;memwrite_time&amp;lt;/code&amp;gt;&lt;br /&gt;
:Time criu spend transferring memory pages into image files (locally or on page-server)&lt;br /&gt;
&lt;br /&gt;
All the above times are in microseconds.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;pages_scanned&amp;lt;/code&amp;gt;&lt;br /&gt;
:The number of pages criu looked at to decide whether or not to dump them&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;pages_skipped_parent&amp;lt;/code&amp;gt;&lt;br /&gt;
:The number of pages criu skipped due to they were found in parent images (read about [[memory changes tracking]])&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;pages_written&amp;lt;/code&amp;gt;&lt;br /&gt;
:The total number of pages criu put into image files&lt;br /&gt;
&lt;br /&gt;
== Restore stats ==&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;forking_time&amp;lt;/code&amp;gt;&lt;br /&gt;
:Time took to fork the tree of processes (with groups and sessions)&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;restore_time&amp;lt;/code&amp;gt;&lt;br /&gt;
:Total time of restore&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;pages_compared&amp;lt;/code&amp;gt;&lt;br /&gt;
:Number of pages compared for being COW-ed&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;pages_skipped_cow&amp;lt;/code&amp;gt;&lt;br /&gt;
:Number of pages, restoration of which was skipped due to COW setup&lt;br /&gt;
&lt;br /&gt;
[[Category:API]]&lt;/div&gt;</summary>
		<author><name>Ymanton</name></author>
	</entry>
</feed>