Why are actors not being destroyed during game but they are during debugging?

that sounds logical to me.
by the name of the function “restore” maybe it’s being executed while the level actors are still being created. which in turn will make the IsValid(Level->Actors[i]) fail.
or maybe the guid is not assigned yet.

with stuff like this i would add plenty of verbose ue_logs at each step and analyze the output.

though ue doesn’t use multithread much, so i’m not sure if a debugger will, in fact, affect that or not. try the logs.