diff --git a/benchmarks/clustering/full_cal_clusters.sh b/benchmarks/clustering/full_cal_clusters.sh
index 2feb65ae30e8907a2e7b72eefe20c94f8d05ab99..00c4d0c8ed9e9a0553fac0b6bb8958c57d812cd0 100644
--- a/benchmarks/clustering/full_cal_clusters.sh
+++ b/benchmarks/clustering/full_cal_clusters.sh
@@ -122,8 +122,9 @@ mkdir -p results
 # Run Juggler
 FULL_CAL_OPTION_DIR=benchmarks/clustering/options
 gaudirun.py ${FULL_CAL_OPTION_DIR}/full_cal_reco.py
-if [[ "$?" -ne "0" ]] ; then
-  echo "ERROR running digitization (juggler)"
+status=$?
+if [[ "$status" -ne "0" && "$status" -ne "4" ]] ; then
+  echo "ERROR running juggler, got $status"
   exit 1
 fi
 
diff --git a/benchmarks/far_forward/far_forward_protons.sh b/benchmarks/far_forward/far_forward_protons.sh
index acd693d6f5c185be21e3325526fc0f5f45a04599..0ac8b16c579673b913532ed1da6c5392617a5d7e 100644
--- a/benchmarks/far_forward/far_forward_protons.sh
+++ b/benchmarks/far_forward/far_forward_protons.sh
@@ -98,8 +98,9 @@ if [[ -z "${ANALYSIS_ONLY}" ]] ;
 then
   # Need to figure out how to pass file name to juggler from the commandline
   gaudirun.py benchmarks/far_forward/options/far_forward_reconstruction.py
-  if [[ "$?" -ne "0" ]] ; then
-    echo "ERROR running juggler"
+  status=$?
+  if [[ "$status" -ne "0" && "$status" -ne "4" ]] ; then
+    echo "ERROR running juggler, got $status"
     exit 1
   fi
 fi
diff --git a/benchmarks/far_forward/run_zdc.sh b/benchmarks/far_forward/run_zdc.sh
index e9dc1666800a0b8d9d49dcc0e8aabac8b14151ca..e028557629552baf26ad625f205cbd293818c55e 100644
--- a/benchmarks/far_forward/run_zdc.sh
+++ b/benchmarks/far_forward/run_zdc.sh
@@ -117,8 +117,9 @@ rootls -t ${JUGGLER_SIM_FILE}
 if [[ -z "${ANALYSIS_ONLY}" ]] ;
 then
   gaudirun.py benchmarks/far_forward/options/zdc_reconstruction.py
-  if [[ "$?" -ne "0" ]] ; then
-    echo "ERROR running juggler"
+  status=$?
+  if [[ "$status" -ne "0" && "$status" -ne "4" ]] ; then
+    echo "ERROR running juggler, got $status"
     exit 1
   fi
 fi
diff --git a/benchmarks/imaging_ecal/run_emcal_barrel.sh b/benchmarks/imaging_ecal/run_emcal_barrel.sh
index 113184404ec9aa2415b3d5622216fb4fa9ebd651..76f0fdf321f3c4548b9e7106fecbfc27d161c17b 100644
--- a/benchmarks/imaging_ecal/run_emcal_barrel.sh
+++ b/benchmarks/imaging_ecal/run_emcal_barrel.sh
@@ -108,8 +108,9 @@ CB_EMCAL_OPTION_DIR=benchmarks/imaging_ecal/options
 # Run Juggler
 gaudirun.py ${CB_EMCAL_OPTION_DIR}/hybrid_cluster.py
 # gaudirun.py ${CB_EMCAL_OPTION_DIR}/imaging_topocluster.py
-if [[ "$?" -ne "0" ]] ; then
-  echo "ERROR running juggler"
+status=$?
+if [[ "$status" -ne "0" && "$status" -ne "4" ]] ; then
+  echo "ERROR running juggler, got $status"
   exit 1
 fi
 
diff --git a/benchmarks/imaging_ecal/run_emcal_barrel_pion_rej.sh b/benchmarks/imaging_ecal/run_emcal_barrel_pion_rej.sh
index 96a7752ae7d0a55db4c7f488a5a5f83b6fe3c84d..53bf8f1e07fe6407060dd03b0f31aa3e0dcec5a7 100755
--- a/benchmarks/imaging_ecal/run_emcal_barrel_pion_rej.sh
+++ b/benchmarks/imaging_ecal/run_emcal_barrel_pion_rej.sh
@@ -109,8 +109,9 @@ CB_EMCAL_OPTION_DIR=benchmarks/imaging_ecal/options
 # Run Juggler
 gaudirun.py ${CB_EMCAL_OPTION_DIR}/hybrid_cluster.py
 # gaudirun.py ${CB_EMCAL_OPTION_DIR}/imaging_topocluster.py
-if [[ "$?" -ne "0" ]] ; then
-  echo "ERROR running juggler"
+status=$?
+if [[ "$status" -ne "0" && "$status" -ne "4" ]] ; then
+  echo "ERROR running juggler, got $status"
   exit 1
 fi
 
diff --git a/benchmarks/imaging_ecal/run_imcal_pion0.sh b/benchmarks/imaging_ecal/run_imcal_pion0.sh
index 2c9ff8dd01e66d76f39f150e7145c64ab298c0b1..902bb9f48e3c8dff42d6ed8ec0bbf5487e63009e 100644
--- a/benchmarks/imaging_ecal/run_imcal_pion0.sh
+++ b/benchmarks/imaging_ecal/run_imcal_pion0.sh
@@ -103,8 +103,9 @@ mkdir -p results
 CB_EMCAL_OPTION_DIR=benchmarks/imaging_ecal/options
 # Run Juggler
 gaudirun.py ${CB_EMCAL_OPTION_DIR}/imaging_2dcluster.py
-if [[ "$?" -ne "0" ]] ; then
-  echo "ERROR running juggler"
+status=$?
+if [[ "$status" -ne "0" && "$status" -ne "4" ]] ; then
+  echo "ERROR running juggler, got $status"
   exit 1
 fi
 
diff --git a/benchmarks/rich/forward_hadrons.sh b/benchmarks/rich/forward_hadrons.sh
index edbda5e9ec3f6e80255b7dbcdb9732e0a024d0c0..a2193fdc1b2e5a08a6fba40b456762649a5f0683 100644
--- a/benchmarks/rich/forward_hadrons.sh
+++ b/benchmarks/rich/forward_hadrons.sh
@@ -73,8 +73,9 @@ fi
 
 # @TODO changeable simulation file name and detector xml file name
 gaudirun.py benchmarks/rich/options/rich_reco.py
-if [[ "$?" -ne "0" ]] ; then
-  echo "ERROR running juggler"
+status=$?
+if [[ "$status" -ne "0" && "$status" -ne "4" ]] ; then
+  echo "ERROR running juggler, got $status"
   exit 1
 fi
 
diff --git a/benchmarks/track_finding/multiple_tracks.sh b/benchmarks/track_finding/multiple_tracks.sh
index fc1c19c1e3cacd5dbb677be5a1d808a38efdf759..923c8b2cfe810020295a19c3b39e9f0b46e9e54d 100644
--- a/benchmarks/track_finding/multiple_tracks.sh
+++ b/benchmarks/track_finding/multiple_tracks.sh
@@ -82,8 +82,9 @@ if [[ -z "${ANALYSIS_ONLY}" ]] ;
 then
   # Need to figure out how to pass file name to juggler from the commandline
   gaudirun.py benchmarks/track_finding/options/track_reconstruction.py
-  if [[ "$?" -ne "0" ]] ; then
-    echo "ERROR running juggler"
+  status=$?
+  if [[ "$status" -ne "0" && "$status" -ne "4" ]] ; then
+    echo "ERROR running juggler, got $status"
     exit 1
   fi
 fi
diff --git a/benchmarks/track_fitting/single_tracks.sh b/benchmarks/track_fitting/single_tracks.sh
index 89b8f2ccb1ec60abd4a51ea475435218f9eb014a..50c0578c017a038819b537af95866bc949d88d65 100644
--- a/benchmarks/track_fitting/single_tracks.sh
+++ b/benchmarks/track_fitting/single_tracks.sh
@@ -85,8 +85,9 @@ if [[ -z "${ANALYSIS_ONLY}" ]] ;
 then
   # Need to figure out how to pass file name to juggler from the commandline
   gaudirun.py benchmarks/track_fitting/options/track_reconstruction.py
-  if [[ "$?" -ne "0" ]] ; then
-    echo "ERROR running juggler"
+  status=$?
+  if [[ "$status" -ne "0" && "$status" -ne "4" ]] ; then
+    echo "ERROR running juggler, got $status"
     exit 1
   fi
 fi
diff --git a/benchmarks/tracking/central_electrons.sh b/benchmarks/tracking/central_electrons.sh
index d3c3cace5be61bd9cfb6c682579357029992fb64..b5a1219b8504d01532769b1a4e89e8f4f5ed39dd 100644
--- a/benchmarks/tracking/central_electrons.sh
+++ b/benchmarks/tracking/central_electrons.sh
@@ -99,8 +99,9 @@ if [[ -z "${ANALYSIS_ONLY}" ]] ;
 then
   # Need to figure out how to pass file name to juggler from the commandline
   gaudirun.py benchmarks/tracking/options/track_reconstruction.py
-  if [[ "$?" -ne "0" ]] ; then
-    echo "ERROR running juggler"
+  status=$?
+  if [[ "$status" -ne "0" && "$status" -ne "4" ]] ; then
+    echo "ERROR running juggler, got $status"
     exit 1
   fi
 fi
diff --git a/benchmarks/tracking/central_pions.sh b/benchmarks/tracking/central_pions.sh
index 587ec115a944ab41239b1c533656bbe57faf5573..fe0e5c1704656e5578695caab3c81f9c427500be 100644
--- a/benchmarks/tracking/central_pions.sh
+++ b/benchmarks/tracking/central_pions.sh
@@ -98,8 +98,9 @@ if [[ -z "${ANALYSIS_ONLY}" ]] ;
 then
   # Need to figure out how to pass file name to juggler from the commandline
   gaudirun.py benchmarks/tracking/options/track_reconstruction.py
-  if [[ "$?" -ne "0" ]] ; then
-    echo "ERROR running juggler"
+  status=$?
+  if [[ "$status" -ne "0" && "$status" -ne "4" ]] ; then
+    echo "ERROR running juggler, got $status"
     exit 1
   fi
 fi
diff --git a/benchmarks/tracking/multiple_tracks.sh b/benchmarks/tracking/multiple_tracks.sh
index 11500869632c73aa76809b8fb4943b4f720989cb..398d6855663f7299af485d792c91367b9559c414 100644
--- a/benchmarks/tracking/multiple_tracks.sh
+++ b/benchmarks/tracking/multiple_tracks.sh
@@ -99,8 +99,9 @@ if [[ -z "${ANALYSIS_ONLY}" ]] ;
 then
   # Need to figure out how to pass file name to juggler from the commandline
   gaudirun.py benchmarks/tracking/options/track_reconstruction.py
-  if [[ "$?" -ne "0" ]] ; then
-    echo "ERROR running juggler"
+  status=$?
+  if [[ "$status" -ne "0" && "$status" -ne "4" ]] ; then
+    echo "ERROR running juggler, got $status"
     exit 1
   fi
 fi
diff --git a/benchmarks/tracking/run_tracking_benchmarks.py b/benchmarks/tracking/run_tracking_benchmarks.py
index 0cb70daacc192183efdf0968250df03676c6e8e4..b450e199c5363a95e9a27539ab03d540c1ce080b 100755
--- a/benchmarks/tracking/run_tracking_benchmarks.py
+++ b/benchmarks/tracking/run_tracking_benchmarks.py
@@ -83,7 +83,7 @@ if 'rec' in procs:
 
     rec_cmd = ['gaudirun.py', os.path.join(sdir, 'options', option_script)]
     return_code = subprocess.run(rec_cmd).returncode
-    if return_code is not None and return_code != 0:
+    if return_code is not None and return_code < 0:
         print('ERROR running juggler ({})!'.format(rec_cmd))
         exit(1)
     process = subprocess.run(['rootls', '-t', rec_file], check=True)