Page MenuHomeFeedback Tracker

1.16.154567 - Server script_*.log file repeatedly filled with player logout "already removed" messages
Assigned, NormalPublic

Description

Every once in a while (perhaps once every couple of months), my vanilla DayZ server suddenly spams the script_*.log file with messages similar to the following:

SCRIPT       : [Logout]: Skipping player dFjrJT7Lqwc6GrBAFdB_ix_9Kn1QIbwbp3hU8fAczt4=, already removed
SCRIPT       : [Logout]: Skipping player dFjrJT7Lqwc6GrBAFdB_ix_9Kn1QIbwbp3hU8fAczt4=, already removed
SCRIPT       : [Logout]: Skipping player dFjrJT7Lqwc6GrBAFdB_ix_9Kn1QIbwbp3hU8fAczt4=, already removed
SCRIPT       : [Logout]: Skipping player dFjrJT7Lqwc6GrBAFdB_ix_9Kn1QIbwbp3hU8fAczt4=, already removed
SCRIPT       : [Logout]: Skipping player dFjrJT7Lqwc6GrBAFdB_ix_9Kn1QIbwbp3hU8fAczt4=, already removed
SCRIPT       : [Logout]: Skipping player dFjrJT7Lqwc6GrBAFdB_ix_9Kn1QIbwbp3hU8fAczt4=, already removed
SCRIPT       : [Logout]: Skipping player dFjrJT7Lqwc6GrBAFdB_ix_9Kn1QIbwbp3hU8fAczt4=, already removed
...

These messages continue to spam the log file until my host's 100GB file system quota is exhausted and the server completely locks up. The only way to recover is to stop the server, delete the script_*.log file, and then start the server again.

The corresponding DayZServer_x64_*.RPT file does not show anything out of the ordinary

Details

Severity
Major
Resolution
Open
Reproducibility
Have Not Tried
Operating System
Windows 10 x64
Operating System Version
21H2
Category
Server
Steps To Reproduce

I have no idea how to reproduce this issue but I did have one player report that their game crashed right before it happened. In this case, I found these log lines near the end of the DayZServer_x64_*.RPT file:

17:28:23.790 [Disconnect]: No packets from 1708722061
17:28:23.790 [Disconnect]: Start script disconnect 1708722061 (dbCharacterId 1 dbPlayerId 1) logoutTime 15

The remaining log lines in the file were just 10 seconds worth of memory usage, average server FPS, and player count messages.

Event Timeline

tjensen created this task.Mar 6 2022, 12:09 AM
Geez changed the task status from New to Assigned.Mar 7 2022, 11:57 AM

Hi sir, i got the same issue as yours.

in the dayzserver_x64.RPT file:
14:22:37.69 [Disconnect]: Client 13175054 disconnecting
14:22:37.69 [Disconnect]: Client 13175054 early disconnect
14:22:37.147 [Disconnect]: Client 730848883 disconnecting
14:22:37.147 [Disconnect]: Client 730848883 early disconnect
14:22:41.818 [Disconnect]: Client 24239622 disconnecting
14:22:41.818 [Disconnect]: Client 24239622 early disconnect

and script log file:
SCRIPT : [Logout]: Skipping player TMPsA2jeoCZUgUCqaqoIo0bn1MTmfaw5cQNkTcIt7KY=, already removed
SCRIPT : [Logout]: Skipping player TMPsA2jeoCZUgUCqaqoIo0bn1MTmfaw5cQNkTcIt7KY=, already removed
SCRIPT : [Logout]: Skipping player TMPsA2jeoCZUgUCqaqoIo0bn1MTmfaw5cQNkTcIt7KY=, already removed
SCRIPT : [Logout]: Skipping player TMPsA2jeoCZUgUCqaqoIo0bn1MTmfaw5cQNkTcIt7KY=, already removed
SCRIPT : [Logout]: Skipping player TMPsA2jeoCZUgUCqaqoIo0bn1MTmfaw5cQNkTcIt7KY=, already removed
SCRIPT : [Logout]: Skipping player TMPsA2jeoCZUgUCqaqoIo0bn1MTmfaw5cQNkTcIt7KY=, already removed

could you let know that Has the problem been solved? and how.

thank you so much.

This is still happening with DayZ 1.18. I just had it happen again on one of my servers.

lava76 added a subscriber: lava76.Jul 5 2022, 12:07 AM

A temporary workaround until this is fixed properly is to override MissionServer::UpdateLogoutPlayers:

modded class MissionServer
{
    override void UpdateLogoutPlayers()
    {
        foreach (PlayerBase player, LogoutInfo info: m_LogoutPlayers)
        {
            if (GetGame().GetTime() < info.param1 || !player)
                continue;
            
            PlayerDisconnected(player, player.GetIdentity(), info.param2);
            
            m_LogoutPlayers.Remove(player);
        }
    }
}

And the underlying issue is this: https://feedback.bistudio.com/T166724

A workable fix is to change

m_LogoutPlayers.Remove(player);

to

m_LogoutPlayers.RemoveElement(i);

Although using GetElement()/GetKey()/RemoveElement is probably not ideal to begin with due to o(n) complexity (even if the map is guaranteed to stay relatively small due to max player count usually not being higher than 60 or maybe 127 on some modded servers)

This is fixed in vanilla since 1.19 for anyone reading this.