SEQUENCE 254

Indította Alone, 2019-07-30, 15:49:40

Szép napot. A ch1 syserr folyamatosan ezt logolja:
IdézProcess: SEQUENCE 65315400 mismatch 0x48 != 0xfc header 254
ezt követően a ch1 leál.

Na most ugye jöhet az ember azzal, hogy számtalan leírás van róla, hogy ez fixálva legyen.
Sajnos keresgéltem és normális leírást nem találtam róla hogyan lehetne ezt orvosolni mivel a leírásokban a "fix" csak eltünteti a syserr ből hogy ne logolja fel ezt a hibát, de a problémát nem orvosolja gondolok itt a sok közül az egyik leírásra pl:
Idézhttps://metin2.dev/board/index.php?/topic/10834-fix-sequence-mismatch-header-254-c/

Esetleg valaki akinek volt hasonló hibája tudna némi segítséget nyújtani, hogy mégis hol lehet a hiba forrása?
Nem vagyok profi,de amiben tudok segítek!


Ezt használom viszont amióta ezt használom azóta nem leáll a ch, hanem ki dob loginba teljesen random játék közben és elég sűrűn.
Nem vagyok profi,de amiben tudok segítek!

2019-07-31, 06:01:36 #3 Utolsó szerkesztés: 2019-07-31, 06:04:02 Szerző: Chookez™
Szedd ki amiket beraktál erre a hibára "FIX"-eket.

PythonNetworkStreamModule.cpp

Keres:
PyObject* netRecvGuildSymbol(PyObject* poSelf, PyObject* poArgs)

Ezt a részt:
CGuildMarkDownloader& rkGuildMarkDownloader=CGuildMarkDownloader::Instance();
if (!rkGuildMarkDownloader.ConnectToRecvSymbol(kAddress, 0, 0, kVec_dwGuildID))
{
assert(!"Failed connecting to recv symbol");
}


Cseréld le erre:
if (kVec_dwGuildID.size() > 0)
{
CGuildMarkDownloader& rkGuildMarkDownloader = CGuildMarkDownloader::Instance();
if (!rkGuildMarkDownloader.ConnectToRecvSymbol(kAddress, 0, 0, kVec_dwGuildID))
{
assert(!"Failed connecting to recv symbol");
}
}


PythonNetworkStreamPhaseGame.cpp


Keres:
bool CPythonNetworkStream::RecvLandPacket()

Ezt a részt:
}

__DownloadSymbol(kVec_dwGuildID);

return true;
}


Cseréld le erre:
}

if (kVec_dwGuildID.size() > 0)
__DownloadSymbol(kVec_dwGuildID);

return true;
}


A magyarázat, persze angolul:
This happens due to a bug on the TODO_RECV_SYMBOL phase when calling the __SendSymbolCRCList.
That function will connect via MarkServer_Login and iterate m_kVec_dwGuildID to send sub-"HEADER_CG_SYMBOL_CRC" packets.
If m_kVec_dwGuildID is 0, the server will never receive packets after logged in the MarkServer, and the connection won't be closed.
When a connection is established, a ping_event will be triggered every 60 seconds.
When the time will come, a ping packet will be send to the client, and the client will reply back with a pong one.
In this case, the secondary marklogin connection would be asynchronous, and the packet sequence for the pong mismatched too.
After the sequence error occurs, the marklogin connection will be finally closed.

In few words, everytime someone logs in the server (after character selection),
the syserr will get once the mismatch error after 60 seconds.
The fix is to not establish a marklogin connection for TODO_RECV_SYMBOL if the m_kVec_dwGuildID is 0.

Chookez ez tényleg működik? :D
Ha segítettem vagy akármi érted, akkor a +-t elfogadom.

Hát tény ami tény, hogy amióta ki szedtem az előző "FIX" et azóta nem dob ki loginba a kliens! Viszont azt nem tudom, hogy működik-e a leírás, ha továbbra is logolja a syserr akkor ott már bajok vannak. Ami nagyobb érdekesség, hogy előző forrást használva könnyedén megoldottam ugyan ezt a jelenséget viszont itt eddig nem nagyon sikerült.  Bár erős gyanum hogy a ch leállás ez miatt volt:
IdézSet(HEADER_CG_PONG, sizeof(BYTE), "Pong", true);
Most át írtam "false" -re. Meglátjuk lesz e leállás.
Nem vagyok profi,de amiben tudok segítek!