diff --git a/src/g_game.cpp b/src/g_game.cpp
--- a/src/g_game.cpp
+++ b/src/g_game.cpp
@@ -3718,4 +3718,10 @@
 		SERVERCOMMANDS_SetMapMusic( SERVER_GetMapMusic( ));
 	}
 
+	// [BB] TThinkerIterator<AActor> doesn't seem to like if we create new actors while
+	// iterating. So just create a list with all current actors and then go through it.
+	TArray<AActor *> existingActors;
+	while (( pActor = ActorIterator.Next( )) != NULL )
+		existingActors.Push ( pActor );
+
 	// Reload the actors on this level.
@@ -3721,6 +3727,8 @@
 	// Reload the actors on this level.
-	while (( pActor = ActorIterator.Next( )) != NULL )
-	{
+	for ( unsigned int i = 0; i < existingActors.Size(); ++i )
+	{
+		pActor = existingActors[i];
+
 		// Don't reload players.
 		// [BB] but reload voodoo dolls.
 		if ( pActor->IsKindOf( RUNTIME_CLASS( APlayerPawn )) && pActor->player && ( pActor->player->mo == pActor ) )
