It will be good to see current backup-lock state using context variable rather tnan query mon$database (which, in turn, requires commit/rollback before such query if we want to see actual value).
Such variable (e.g. rdb$get_context('SYSTEM', 'BACKUP_LOCK') ) must show the same as mon$database.mon$backup_state: 0, 1 or 2 - but obtaining its value should not require COMMIT / ROLLBACK prior it.