• Adrian Reber's avatar
    criu: fix segfault in pre-dump · 134c7c27
    Adrian Reber authored
    By accident I found a segfault using pre-dump in combination with the
    page-server. Doing the following I was able to trigger it:
    
     * criu page-server -D /tmp/1
     * criu pre-dump -t PID -D /tmp/3 --track-mem
     * criu page-server -D /tmp/4 --prev-images-dir ../1
     * criu pre-dump -t PID -D /tmp/3 --track-mem
     --> segfault
    
    ...
    (00.010090) Warn  (criu/image.c:134): Failed to open parent directory
    ...
    (00.012984) Error (criu/mem.c:318): Pid-reuse detection failed: no parent inventory, check warnings in get_parent_stats
    ...
    (00.013037) Error (criu/mem.c:544): Can't dump page with parasite
    ...
    (00.013955) Pre-dumping tasks' memory
    (00.013966) 	Pre-dumping 8793
    (00.014380) Transferring pages:
    Segmentation fault (core dumped)
    
    Looking in cr-dump.c at cr_pre_dump_finish(int ret) the function gets
    the return code of the previous operations in 'ret' but it is
    immediately overwritten and never used.
    
    In older CRIU versions it used to be:
    
    	if (ret < 0)
    		goto err;
    
    but that is gone now. So this reintroduces the check for the int
    parameter given to cr_pre_dump_finish() by the function caller.
    
    As the commands used to trigged the segfault do not make much sense the
    result is still not usable and the same 'Warn' and 'Error' messages are
    printed, but the segfault is gone.
    
    V2:
      * set the return value correctly
    Signed-off-by: 's avatarAdrian Reber <areber@redhat.com>
    Signed-off-by: 's avatarAndrei Vagin <avagin@gmail.com>
    134c7c27
Name
Last commit
Last update
Documentation Loading commit data...
compel Loading commit data...
contrib Loading commit data...
coredump Loading commit data...
crit Loading commit data...
criu Loading commit data...
images Loading commit data...
include/common Loading commit data...
lib Loading commit data...
scripts Loading commit data...
soccr Loading commit data...
test Loading commit data...
.gitignore Loading commit data...
.mailmap Loading commit data...
.travis.yml Loading commit data...
COPYING Loading commit data...
CREDITS Loading commit data...
INSTALL.md Loading commit data...
Makefile Loading commit data...
Makefile.compel Loading commit data...
Makefile.config Loading commit data...
Makefile.install Loading commit data...
Makefile.versions Loading commit data...
README.md Loading commit data...