/sbin/rc contains the function try. This function does: local errstr="$((eval $*) 2>&1 >/dev/null)" retval=$? in this code, retval will _always_ be 0, because local is a command that never fails. So the error handling code below it is never executed. Solution: first do local errstr and then do the assignment in the next line.
Updated in cvs. Thanks.