: These show that something goes really wrong. If an error message appears on the screen CRIU doesn't complete the operation and exits with error. At the same time, if CRIU's exit code is not 0, there should be an error message. Typically there are several of them, but only the first one denotes the real obstacle CRIU has hit, all subsequent ones can be due to this first.
+
: These show that something goes really wrong. If an error message appears on the screen CRIU doesn't complete the operation and exits with an error. At the same time, if CRIU's exit code is not 0, there should be an error message. Typically there are several of them, but only the first one denotes the real obstacle CRIU has hit, all subsequent ones can be due to this first.
; Warnings
; Warnings
Line 49:
Line 49:
Telling <code>-v0</code> will shut CRIU up, but that's really not recommended.
Telling <code>-v0</code> will shut CRIU up, but that's really not recommended.
+
+
=== Early logging ===
+
+
During CRIU initialization some things can fail, i.e., [[Kerndat|reading the kerndat file]]. Those failures may happen before the logging is set up (log file descriptors open etc.). The failures might even happen while setting up the logging. For all those nuisances, there is a static buffer that stores everything until logging has successfully initialized. The buffer has compile-time size of <code>EARLY_LOG_BUF_LEN</code> and serves only on early CRIU initialization. Afterwards, it always flushes: if the logging was set up successfully, to the corresponding logs; to <code>stderr</code> in case CRIU caught early fault and is about to exit.