Skip to content

Bots freeze permanently on dm2: one embedded in world solid, one starved of goals #257

Description

@saworbit

A dm2 deathmatch tape recorded a single bot frozen for 144.2 s of a 190 s match. That is the longest freeze in the project's history. It reproduces in a second tape at 87.0 s with a different bot, in a different place, on a different build.

Evidence

dm2, current main:   Carmack   t 28.7..172.9  (144.2s) at '2273 -170 -136'  mode 2
dm2, door fix build: Joe Rogan t 104.3..191.3 ( 87.0s) at '1931 -1153 344'  mode 2
                     Romero    t 132.1..139.8 (  7.7s) at '2536 -224 120'   mode 2

Both long ones are mode 2, spd 0, and emit no stall events, which means a stall suppressed hold rather than a wedge. The give up clocks are 8 s for doors and 15 s for trains, so something is holding well past every cap we have.

The tell

Joe Rogan's freeze starts immediately after a vertical jump:

t 103.8  pos '1936 -1221  21.4'  spd 30.2  mode 2
t 104.3  pos '1931 -1153 344.0'  spd  0    mode 2

322 units of z in half a second, onto dm2's east train deck, and ARGEVT Carmack train fires in the same window. So the bot arrived on a mover and then never moved again.

Carmack's 144 s freeze at '2273 -170 -136' starts right after ARGEVT Carmack engage Joe Rogan, from 259 u/s to 0 in one sample.

Why it matters more than the count suggests

A freeze detector counts this as one event, so a tape with a bot doing nothing for 76 per cent of the match still reads as "1 freeze" beside a tape with five short ones. The gate does not weight duration. Worth considering whether the freeze gate should fail on total frozen time as well as on count and worst case.

Suspects, in order

  1. ar_liftwait set and never cleared. It is a physics level hold, and the keyed door branch in the door handler sets it with no timeout at all, unlike the ar_doortime branch below it.
  2. The train ride hold, given the mover arrival immediately before.
  3. Something in the teleport exit coast, given the instantaneous position change.

edicts injected while the bot is frozen would settle this in one command by printing ar_liftwait, ar_door, ar_hoptrain and ar_node directly. See #255.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions