SMSG_UPDATE_OBJECT errors caused by using multiple threads
まだ誰も着手していません。
評価
調査の方向性
報告された行にある WowPacketParserModule/V8_0_1_27101/Parsers/UpdateFieldsHandler820.cs から始め、次に WowPacketParser/Misc/DynamicUpdateField.cs と UpdateHandler.cs を調査します。リンクされた設定を使用し、Threads を 1 より大きくしてパースを再現し、Threads を 1 に設定した場合と比較します。複数のスレッドを有効にした場合でも、同じ sniffs が報告されたインデックスエラーなしにパースできれば完了です。
索引モデルが issue の本文から書いたものです。
説明
During my massparses i noticed thats SMSG_UPDATE_OBJECT randomy causes errors when using more threads than one.
The error is not guaranteed to occur, it kinda only happens 3 times in 10 sniff parses.
Used config: https://gist.github.com/mdX7/63df65b085f011a0a087d08b0b63713e
This happened on Linux (via. Docker) and on Windows aswell.
It appears to be related to new updatefield system (introduced in 8.1.0).
Release Stacktrace (on Linux):
System.ArgumentOutOfRangeException
Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
at WowPacketParserModule.V8_0_1_27101.UpdateFields.V8_2_0_30898.UpdateFieldHandler.ReadUpdateUnitData(Packet packet, IUnitData existingData, Object[] indexes) in /app/src/WowPacketParserModule.V8_0_1_27101/Parsers/UpdateFieldsHandler820.cs:line 918
at WowPacketParserModule.V8_0_1_27101.Parsers.UpdateHandler.HandleUpdateObject(Packet packet) in /app/src/WowPacketParserModule.V8_0_1_27101/Parsers/UpdateHandler.cs:line 71
at WowPacketParser.Parsing.Handler.Parse(Packet packet, Boolean isMultiple) in /app/src/WowPacketParser/Parsing/Handler.cs:line 149
Debug Stacktrace (parsed by @matanshukry on Windows)
System.ArgumentOutOfRangeException
Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
at System.Collections.Generic.List`1.set_Item(Int32 index, T value)
at WowPacketParser.Misc.DynamicUpdateField`1.set_Item(Int32 index, T value) in D:\dev\Games\tc\WowPacketParser\WowPacketParser\Misc\DynamicUpdateField.cs:line 18
at WowPacketParserModule.V8_0_1_27101.UpdateFields.V8_2_0_30898.UpdateFieldHandler.ReadUpdateUnitData(Packet packet, IUnitData existingData, Object[] indexes) in D:\dev\Games\tc\WowPacketParser\WowPacketParserModule.V8_0_1_27101\Parsers\UpdateFieldsHandler820.cs:line 986
at WowPacketParserModule.V8_0_1_27101.Parsers.UpdateHandler.HandleUpdateObject(Packet packet) in D:\dev\Games\tc\WowPacketParser\WowPacketParserModule.V8_0_1_27101\Parsers\UpdateHandler.cs:line 71
at WowPacketParser.Parsing.Handler.Parse(Packet packet, Boolean isMultiple) in D:\dev\Games\tc\WowPacketParser\WowPacketParser\Parsing\Handler.cs:line 149
These stacktraces actually show a different line, but both are using the same sniff with Threads set to 0. When Threads is limited to 1 everything will parse successfully, even with ~1000 sniffs.
- 主要言語
- C#
- スター
- 522
- フォーク
- 387
- 平均マージ
- 3日 6時間
- マージ済み PR(30日)
- 4
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
TrinityCore/WowPacketParser のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
TrinityCore/WowPacketParser#990 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
TrinityCore/WowPacketParser#953 ·
-
3.4.3.55392 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 20/100
TrinityCore/WowPacketParser#866 · コメント 1 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
TrinityCore/WowPacketParser#836 · コメント 2 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
TrinityCore/WowPacketParser#833 ·
TrinityCore/WowPacketParser の issue をすべて見る
似ている issue
-
type/automation type/tech-debt
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
-
t/bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
-
ci-failure-cause test-failure
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
-
area:auth FE mvp P3
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
klasolsson81/jobbliggaren#1788 ·