From fa88a12ba48af022dd88048bfca344e9ac6284e3 Mon Sep 17 00:00:00 2001 From: Gabriel Corona Date: Tue, 4 Nov 2014 12:09:07 +0100 Subject: [PATCH] [mc] Fix FD checkpoint/restore --- src/mc/mc_checkpoint.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/mc/mc_checkpoint.c b/src/mc/mc_checkpoint.c index 41b3738c3f..8c3c47d71e 100644 --- a/src/mc/mc_checkpoint.c +++ b/src/mc/mc_checkpoint.c @@ -612,7 +612,7 @@ static void MC_get_current_fd(mc_snapshot_t snapshot){ fd->filename = strdup(line); fd->filename[strlen(line)-1] = '\0'; fd->number = fd_value; - fd->flags = fcntl(fd_value, F_GETFD); + fd->flags = fcntl(fd_value, F_GETFL) | fcntl(fd_value, F_GETFD) ; fd->current_position = lseek(fd_value, 0, SEEK_CUR); snapshot->current_fd = xbt_realloc(snapshot->current_fd, (snapshot->total_fd + 1) * sizeof(fd_infos_t)); snapshot->current_fd[snapshot->total_fd] = fd; @@ -710,8 +710,9 @@ void MC_restore_snapshot(mc_snapshot_t snapshot) if(new_fd != -1 && new_fd != snapshot->current_fd[i]->number){ dup2(new_fd, snapshot->current_fd[i]->number); //fprintf(stderr, "%p\n", fdopen(snapshot->current_fd[i]->number, "rw")); - lseek(snapshot->current_fd[i]->number, snapshot->current_fd[i]->current_position, SEEK_SET); + close(new_fd); }; + lseek(snapshot->current_fd[i]->number, snapshot->current_fd[i]->current_position, SEEK_SET); } if (_sg_mc_sparse_checkpoint && _sg_mc_soft_dirty) { -- 2.20.1