mirror of
https://github.com/checkpoint-restore/criu.git
synced 2026-01-23 02:14:37 +00:00
No description
blcrcheckpointcontainercontainerscriudmtcphighly-availablelinuxmemory-trackingmigrationparasitepost-copyrestoresnapshotsuspenduserfaultfdzero-downtime
We found a weird case of parasite code dying of SIGSEGV when clang is used as a compiler (see [1] for more details). Apparently, it was caused by clang optimizing our builtin_memset() by inserting a call to memset(). It is a valid compiler optimization, aside from the fact that in our code memset() is defined as a weak alias to builtin_memset(), which of course lead to infinite recursion and stack growth. This might be a bug in compiler, but there are ways to avoid it: 1. Rewrite builtin_memset() in asm (note it needs to be done for every architecture supported). 2. Disable compiler optimizations for this code (say, by using -O0). 3. Declare the pointer inside builtin_memcpy() as volatile. The last approach looks more appealing -- mostly for being simple. [1] https://github.com/xemul/criu/issues/279 travis-ci: success for string.h: fix memset over-optimization with clang Cc: Andrei Vagin <avagin@virtuozzo.com> Cc: Dmitry Safonov <dsafonov@virtuozzo.com> Cc: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by: Kir Kolyshkin <kir@openvz.org> Acked-by: Cyrill Gorcunov <gorcunov@openvz.org> Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com> |
||
|---|---|---|
| contrib | ||
| coredump | ||
| crit | ||
| criu | ||
| Documentation | ||
| images | ||
| include/common | ||
| lib | ||
| scripts | ||
| soccr | ||
| test | ||
| .gitignore | ||
| .mailmap | ||
| .travis.yml | ||
| COPYING | ||
| CREDITS | ||
| INSTALL.md | ||
| Makefile | ||
| Makefile.config | ||
| Makefile.install | ||
| Makefile.versions | ||
| README.md | ||
CRIU (Checkpoint and Restore in Userspace)
An utility to checkpoint/restore tasks. Using this tool, you can freeze a running application (or part of it) and checkpoint it to a hard drive as a collection of files. You can then use the files to restore and run the application from the point it was frozen at. The distinctive feature of the CRIU project is that it is mainly implemented in user space.
The project home is at http://criu.org.
Pages worth starting with are:
- Kernel configuration, compilation, etc
- A simple example of usage
- More sophisticated example with graphical app
A video tour on basic CRIU features
How to contribute
- How to submit patches;
- Send all bug reports to mailing list;
- Spread the word about CRIU in social networks;
