If you don’t already know the solution to this problem.
You can add a proc call to the SwInitUserIO routine in the SwErrorRecover routine.
That will solve the problem, the routine SwErrorRecover is no longer called from the weld task but from the robot task (T_ROB1) and the reference to the signals are lost, so a new init needs to be done.
Example:
PROC SwErrorRecover (num GunNum,
num ErrType,
string ErrText,
um CurrThickness,
INOUT num Status)
VAR btnres answer;