Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Bad type/missing conversion in `RecvProxy_StringToString`

Open
#210 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
52/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
csharp
Domain
backend, game-dev

Research direction

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.

Written by the indexing model from the issue text.

Description

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
Dominant language
C#
Stars
104
Forks
9
Avg merge
6h 45m
Merged PRs (30d)
118

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from SourceDotNET/Source.NET

All issues in SourceDotNET/Source.NET

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.