It’s not a bug but according to design and documentation. The reserved tags continue-on-failure and recursive-continue-on-failure apply to Test Cases. The Suite Setup and Suite Teardown are not part of the Test Case scope. I’m not entirely sure if Test Setup and Test Teardown are considered in the Test Case scope, I would guess not.
I believe being able to use robot:continue-on-failure at a keyword level was discussed at some point, but it raises my issues that can lead to conflicting behavior.
Helio is correct, it’s the difference between a keyword failure and an error. If Set Test variable ${toto} 4 is changed to Fail (= regular keyword failure), Log Release 3 and Log Release 4 are executed as expected. If it’s changed to Fatal Error, we get the result you’re seeing.
While this could be more clear in the documentation, I understand why this difference is there; if a Fatal Error occurs, that’s a hard override the regular flow…trying to continue should be considered pointless at that point. This allows us to abort a Teardown, if needed / desired, which would be impossible if any error / failure was ignored during Teardown.