diff --git a/bilby/bilby_mcmc/sampler.py b/bilby/bilby_mcmc/sampler.py
index 6676c76d37ac89ab912a824c18e0d3b175b785c1..c8ccf253f087fdd66f0a3cacf17a4ca92fc38f30 100644
--- a/bilby/bilby_mcmc/sampler.py
+++ b/bilby/bilby_mcmc/sampler.py
@@ -388,7 +388,9 @@ class Bilby_MCMC(MCMCSampler):
             If true, resume file was successfully loaded, otherwise false
 
         """
-        if os.path.isfile(self.resume_file) is False:
+        if os.path.isfile(self.resume_file) is False or not os.path.getsize(
+            self.resume_file
+        ):
             return False
         import dill
 
diff --git a/bilby/core/sampler/dynesty.py b/bilby/core/sampler/dynesty.py
index 852fb88c192195c7fb08d7bd9654dda9126e7ca5..bb931ed3b8ffc9d619f8f69de800dcf14b805a75 100644
--- a/bilby/core/sampler/dynesty.py
+++ b/bilby/core/sampler/dynesty.py
@@ -736,7 +736,10 @@ class Dynesty(NestedSampler):
         if os.path.isfile(self.resume_file):
             logger.info(f"Reading resume file {self.resume_file}")
             with open(self.resume_file, "rb") as file:
-                sampler = dill.load(file)
+                try:
+                    sampler = dill.load(file)
+                except EOFError:
+                    sampler = None
 
                 if not hasattr(sampler, "versions"):
                     logger.warning(
diff --git a/bilby/core/sampler/emcee.py b/bilby/core/sampler/emcee.py
index db88ee5a2207f85616f081aa3ee31585c5ad2da1..76e4dd1ebec11907cd3c90552ecfe2f188f9961d 100644
--- a/bilby/core/sampler/emcee.py
+++ b/bilby/core/sampler/emcee.py
@@ -311,7 +311,11 @@ class Emcee(MCMCSampler):
         """
         if hasattr(self, "_sampler"):
             pass
-        elif self.resume and os.path.isfile(self.checkpoint_info.sampler_file):
+        elif (
+            self.resume
+            and os.path.isfile(self.checkpoint_info.sampler_file)
+            and os.path.getsize(self.checkpoint_info.sampler_file)
+        ):
             import dill
 
             logger.info(
diff --git a/bilby/core/sampler/kombine.py b/bilby/core/sampler/kombine.py
index bda7c6d4f06686bf48c142acf726a145da05c760..467751959013a7db6a7e5332bbd7c1044d55c91d 100644
--- a/bilby/core/sampler/kombine.py
+++ b/bilby/core/sampler/kombine.py
@@ -166,7 +166,11 @@ class Kombine(Emcee):
         return self.sampler.chain[:nsteps, :, :]
 
     def check_resume(self):
-        return self.resume and os.path.isfile(self.checkpoint_info.sampler_file)
+        return (
+            self.resume
+            and os.path.isfile(self.checkpoint_info.sampler_file)
+            and os.path.getsize(self.checkpoint_info.sampler_file) > 0
+        )
 
     @signal_wrapper
     def run_sampler(self):
diff --git a/bilby/core/sampler/ptemcee.py b/bilby/core/sampler/ptemcee.py
index fd927235d370bbb0800ea805b64f8e9e495c9b78..1d74a6f6adc1871eb2fb68d8ed4dbe1301639493 100644
--- a/bilby/core/sampler/ptemcee.py
+++ b/bilby/core/sampler/ptemcee.py
@@ -415,7 +415,11 @@ class Ptemcee(MCMCSampler):
             # This is a very ugly hack to support numpy>=1.24
             ptemcee.sampler.np.float = float
 
-        if os.path.isfile(self.resume_file) and self.resume is True:
+        if (
+            os.path.isfile(self.resume_file)
+            and os.path.getsize(self.resume_file)
+            and self.resume is True
+        ):
             import dill
 
             logger.info(f"Resume data {self.resume_file} found")
@@ -513,7 +517,7 @@ class Ptemcee(MCMCSampler):
         logger.info("Starting to sample")
 
         while True:
-            for (pos0, log_posterior, log_likelihood) in sampler.sample(
+            for pos0, log_posterior, log_likelihood in sampler.sample(
                 self.pos0,
                 storechain=False,
                 iterations=self.convergence_inputs.niterations_per_check,