Can be triggered by submitting the missing parent block at the end of the feature_prune_stale_block functional test. The restart isn't even needed.
diff --git a/test/functional/feature_prune_stale_fork.py b/test/functional/feature_prune_stale_fork.py
index 5badca0a7c..0ecb9f2b47 100755
--- a/test/functional/feature_prune_stale_fork.py
+++ b/test/functional/feature_prune_stale_fork.py
@@ -30,8 +30,12 @@ class FeaturePruneStaleForkTest(BitcoinTestFramework):
node.pruneblockchain(node.getblockcount() - 100)
assert_raises_rpc_error(-1, "Block not available (pruned data)", node.getblock, side_child.hash_hex)
- self.log.info("Restart and mine; node must reload cleanly after the stale-fork child was pruned")
- self.restart_node(0)
+ self.log.info("Submit the missing parent block")
+ node.submitblock(side_parent.serialize().hex())
+
self.generate(node, 1)
So it’s the same stale-fork pruned block setup as #35050 and #35168, but without the restart requirement.
This was found with a test running on Antithesis.