Unidentified desync problem

Status
Not open for further replies.
Level 5
Joined
Jun 7, 2012
Messages
66
I've got an unidentified desync problem which happens in one same place but is really inconsistent. Checked all instances of GetLocalPlayer before you suggest that.

After checking desync logs from different players, differences are only and always in the same block.

=======================================================================
[Desync - 1768977253 - Turn(00001820) = 247510880]
#0#: 0x000104F0
#1#: 0x00000C7A
#2#: 0x0000DCB1
#3#: 0x019CD1E4
1768977253 equals to 'ipse'. Differences can be randomly in #1#, #2# or #3#. All other tables in logs are equal and never different.
The only info about 'ipse' I got is from old crash logs on hive which corresponds to ipse_thread.cpp

Can anyone tell me what 'ipse' corresponds to so I can try to pinpoint it instead of checking everything at once.

The only difference between players in Desync.txt is in "War3 tempest checksum". All other fields are equal.

Currently working on native function call log which is displayed during replay, but don't know if it will help with pinpointing the issue.
Lua:
local list = {}
local params = {}
local story = defaultArray(function() return 0 end)

if GetGameStatus() == GameStatus.REPLAY then
    for i, v in pairs(Native) do--Native is an array of all Native functions instead of _G
        if type(v) == 'function' then
            local f = v
            Native[i] = function(...)
                if #list > 30 then
                    table.remove(list, 1)
                    table.remove(params, 1)
                end
                table.insert(list, i)
                table.insert(params, {...})
                if GameData.time - story[i] >= 5 then
                    story[i] = GameData.time
                    print(i, ...)
                end
                return v(...)
            end
        end
    end
end

function PrintDesyncInfoOnLeave()
    if GetGameStatus() == GameStatus.REPLAY then
        story = defaultArray(function() return 0 end)
        for i = 1, #list do
            print("DESYNC: " .. list[i], table.unpack(params[i]))
        end
    end
end
 
Status
Not open for further replies.
Top