2D: add bounds back to the stack if the runner failed

This bug manifested when the function failed after starting the
runner. For example the function is calling a function that is not
defined on the engines will lead to a NameError, then after importing
that on the engines, you wouldn't be able to start the runner again,
because the learner would be in a bad state. This commit fixes that
3 jobs for v0.2.1 in 7 minutes and 28 seconds (queued for 1 second)