diff --git a/tools/python/xen/lowlevel/checkpoint/checkpoint.c b/tools/python/xen/lowlevel/checkpoint/checkpoint.c index 7545d7deb6..1581b64095 100644 --- a/tools/python/xen/lowlevel/checkpoint/checkpoint.c +++ b/tools/python/xen/lowlevel/checkpoint/checkpoint.c @@ -80,6 +80,9 @@ static PyObject* pycheckpoint_close(PyObject* obj, PyObject* args) { CheckpointObject* self = (CheckpointObject*)obj; + if (checkpoint_resume(&self->cps) < 0) + fprintf(stderr, "%s\n", checkpoint_error(&self->cps)); + checkpoint_close(&self->cps); Py_XDECREF(self->suspend_cb); diff --git a/tools/python/xen/remus/save.py b/tools/python/xen/remus/save.py index 71517da8c1..9858aec571 100644 --- a/tools/python/xen/remus/save.py +++ b/tools/python/xen/remus/save.py @@ -158,9 +158,13 @@ class Saver(object): self.checkpointer.open(self.vm.domid) self.checkpointer.start(self.fd, self.suspendcb, self.resumecb, self.checkpointcb, self.interval) - self.checkpointer.close() except xen.lowlevel.checkpoint.error, e: raise CheckpointError(e) + finally: + try: #errors in checkpoint close are not critical atm. + self.checkpointer.close() + except: + pass def _resume(self): """low-overhead version of XendDomainInfo.resumeDomain"""