- 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.
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.
After checking desync logs from different players, differences are only and always in the same block.
1768977253 equals to 'ipse'. Differences can be randomly in #1#, #2# or #3#. All other tables in logs are equal and never different.=======================================================================
[Desync - 1768977253 - Turn(00001820) = 247510880]
#0#: 0x000104F0
#1#: 0x00000C7A
#2#: 0x0000DCB1
#3#: 0x019CD1E4
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