Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Bad type/missing conversion in `RecvProxy_StringToString`

オープン
#210 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
52/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
csharp
領域
backend, game-dev

調査の方向性

Start in Source.NET/Source.Common/DtRecv.cs at RecvProxy_StringToString, then follow the stack trace into FieldAccessors.cs and FieldAccess.cs to understand the failed Char-to-InlineArray512 conversion. Reproduce the crash while loading a map with the affected entities; the issue does not identify which entities. Done when those entities load without the conversion exception.

索引モデルが issue の本文から書いたものです。

説明

Prevents loading into servers on maps with certain entities (unknown what exact entities are causing it)

Unhandled exception. System.NotSupportedException: No conversion from System.Char to Source.InlineArray512`1[System.Char]
   at Source.Common.FieldConvert`2.Create() in Source.NET/Source.Common/FieldAccessors.cs:line 176
   at Source.Common.ArrayFieldAccessor`2.SetElement[T](Object instance, Int32 index, T& value) in Source.NET/Source.Common/FieldAccessors.cs:line 143
   at Source.Common.DynamicArrayIndexAccessor.SetValue[T](Object instance, T& value) in Source.NET/Source.Common/FieldAccess.cs:line 66
   at Source.Common.DynamicAccessor.CopyFrom[T](Object instanceFrom, Span`1 target) in Source.NET/Source.Common/FieldAccess.cs:line 169
   at Source.Common.RecvPropHelpers.RecvProxy_StringToString(RecvProxyData& data, Object instance, IFieldAccessor field) in Source.NET/Source.Common/DtRecv.cs:line 75
   at Source.Engine.PropTypeFns.String_Decode(DecodeInfo& decodeInfo) in Source.NET/Source.Engine/DtEncode.cs:line 465
   at Source.Engine.PropTypeFns.Array_Decode(DecodeInfo& decodeInfo) in Source.NET/Source.Engine/DtEncode.cs:line 573
   at Source.Engine.EngineRecvTable.Decode(RecvTable table, Object instance, bf_read inRead, Int32 objectID, Boolean updateDTI) in Source.NET/Source.Engine/EngineRecvTable.cs:line 393
   at Source.Engine.CL.CopyNewEntity(EntityReadInfo u, Int32 iClass, Int32 iSerialNum) in Source.NET/Source.Engine/CL.cs:line 572
   at Source.Engine.Client.ClientState.ReadEnterPVS(EntityReadInfo u) in Source.NET/Source.Engine/Client/ClientState.cs:line 1229
   at Source.Engine.Client.ClientState.ReadPacketEntities(EntityReadInfo u) in Source.NET/Source.Engine/Client/ClientState.cs:line 1143
   at Source.Engine.CL.ProcessPacketEntities(SVC_PacketEntities entmsg) in Source.NET/Source.Engine/CL_EntsParse.cs:line 57
   at Source.Engine.Client.ClientState.ProcessPacketEntities(SVC_PacketEntities msg) in Source.NET/Source.Engine/Client/ClientState.cs:line 506
   at Source.Engine.Client.BaseClientState.ProcessMessage[T](T message) in Source.NET/Source.Engine/Client/BaseClientState.cs:line 331
   at Source.Common.Networking.NetMessage.Process() in Source.NET/Source.Common/Networking/IConnectionlessPacketHandler.cs:line 312
   at Source.Common.Networking.NetChannel.ProcessMessages(bf_read buf) in Source.NET/Source.Engine/NetChannel.cs:line 906
   at Source.Common.Networking.NetChannel.CheckReceivingList(FragmentStream list) in Source.NET/Source.Engine/NetChannel.cs:line 741
   at Source.Common.Networking.NetChannel.ProcessPacket(NetPacket packet, Boolean hasHeader) in Source.NET/Source.Engine/NetChannel.cs:line 705
   at Source.Common.Networking.Net.ProcessSocket(NetSocketType sock, IConnectionlessPacketHandler handler) in Source.NET/Source.Engine/Net.cs:line 289
   at Source.Engine.CL.ReadPackets(Boolean finalTick) in Source.NET/Source.Engine/CL.cs:line 97
   at Source.Engine.Host._RunFrame_Client(Boolean finalTick) in Source.NET/Source.Engine/Host.cs:line 393
   at Source.Engine.Host._RunFrame(Double time) in Source.NET/Source.Engine/Host.cs:line 253
   at Source.Engine.Host.RunFrame(Double frameTime) in Source.NET/Source.Engine/Host.cs:line 426
   at Source.Engine.HostState.State_Run(Double frameTime) in Source.NET/Source.Engine/HostState.cs:line 248
   at Source.Engine.HostState.Source.Common.Engine.IHostState.Frame(Double time) in Source.NET/Source.Engine/HostState.cs:line 91
   at Source.Engine.GameEngine.Frame() in Source.NET/Source.Engine/GameEngine.cs:line 151
   at Source.Engine.ClientLauncherAPI.MainLoop() in Source.NET/Source.Engine/ClientLauncherAPI.cs:line 162
   at Source.Engine.Mod.Main() in Source.NET/Source.Engine/Mod.cs:line 34
   at Source.Engine.ClientLauncherAPI.RunListenServer() in Source.NET/Source.Engine/ClientLauncherAPI.cs:line 79
   at Source.Engine.ClientLauncherAPI.Main() in Source.NET/Source.Engine/ClientLauncherAPI.cs:line 102
   at Source.Engine.ClientLauncherAPI.Run() in Source.NET/Source.Engine/ClientLauncherAPI.cs:line 94
   at Source.Launcher.Bootloader.Boot() in Source.NET/Source.Launcher/Program.cs:line 110
   at Source.Launcher.Program.Main(String[] _) in Source.NET/Source.Launcher/Program.cs:line 153
主要言語
C#
スター
104
フォーク
9
平均マージ
6時間 45分
マージ済み PR(30日)
118

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

SourceDotNET/Source.NET のほかの issue

SourceDotNET/Source.NET の issue をすべて見る

似ている issue

C# の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。