diff --git a/nipype/pipeline/engine/utils.py b/nipype/pipeline/engine/utils.py
index 78d9417f9f..d7a65b74de 100644
--- a/nipype/pipeline/engine/utils.py
+++ b/nipype/pipeline/engine/utils.py
@@ -291,7 +291,7 @@ def load_resultfile(results_file, resolve=True):
         raise FileNotFoundError(results_file)
 
     result = loadpkl(results_file)
-    if resolve and result.outputs:
+    if resolve and getattr(result, "outputs", None):
         try:
             outputs = result.outputs.get()
         except TypeError:  # This is a Bunch
diff --git a/nipype/pipeline/plugins/tests/test_sgelike.py b/nipype/pipeline/plugins/tests/test_sgelike.py
new file mode 100644
index 0000000000..9c7cdc1412
--- /dev/null
+++ b/nipype/pipeline/plugins/tests/test_sgelike.py
@@ -0,0 +1,35 @@
+from nipype.pipeline.plugins.base import SGELikeBatchManagerBase
+from nipype.interfaces.utility import Function
+import nipype.pipeline.engine as pe
+import pytest
+from unittest.mock import patch
+import subprocess
+
+
+def crasher():
+    raise ValueError()
+
+
+def submit_batchtask(self, scriptfile, node):
+    self._pending[1] = node.output_dir()
+    subprocess.call(["bash", scriptfile])
+    return 1
+
+
+def is_pending(self, taskid):
+    return False
+
+
+@patch.object(SGELikeBatchManagerBase, "_submit_batchtask", new=submit_batchtask)
+@patch.object(SGELikeBatchManagerBase, "_is_pending", new=is_pending)
+def test_crashfile_creation(tmp_path):
+    pipe = pe.Workflow(name="pipe", base_dir=str(tmp_path))
+    pipe.config["execution"]["crashdump_dir"] = str(tmp_path)
+    pipe.add_nodes([pe.Node(interface=Function(function=crasher), name="crasher")])
+    sgelike_plugin = SGELikeBatchManagerBase("")
+    with pytest.raises(RuntimeError) as e:
+        assert pipe.run(plugin=sgelike_plugin)
+    assert str(e.value) == "Workflow did not execute cleanly. Check log for details"
+
+    crashfiles = tmp_path.glob("crash*crasher*.pklz")
+    assert len(list(crashfiles)) == 1