The issue appears to come from the way that data is saved to a player profile. Somehow they got the beans above the frank in A20.4 b42 and messed up their serialization code. When a player's profile is read, it cant read the new serialization value and causes a Run Time Error on the client side. It looks like this is just in relation to drones, but have seen it caused by accessing a gyrocopter (couldn't replicate it though).
Look familiar?
2022-04-29T12:32:37 666.749 EXC Memory stream is not expandable.
at System.IO.MemoryStream.set_Capacity (System.Int32 value) [0x0003d] in <695d1cc93cca45069c528c15c9fdd749>:0
at System.IO.MemoryStream.EnsureCapacity (System.Int32 value) [0x00061] in <695d1cc93cca45069c528c15c9fdd749>:0
at System.IO.MemoryStream.Write (System.Byte[] buffer, System.Int32 offset, System.Int32 count) [0x000b3] in <695d1cc93cca45069c528c15c9fdd749>:0
at StreamUtils.StreamCopy (System.IO.Stream _source, System.IO.Stream _destination, System.Byte[] _tempBuf, System.Boolean _bFlush) [0x00029] in :0
at PlayerDataFile.Write (PooledBinaryWriter _bw) [0x003b3] in :0
at NetPackagePlayerId.write (PooledBinaryWriter _writer) [0x00020] in :0
at NetConnectionSimple.taskSerialize (ThreadManager+ThreadInfo _threadInfo) [0x004f3] in :0
UnityEngine.StackTraceUtility:ExtractStringFromException(Object)
Log:Exception(Exception)
NetConnectionSimple:taskSerialize(ThreadInfo)
ThreadManager:myThreadInvoke(Object)
System.Threading.ThreadHelper:ThreadStart_Context(Object)
System.Threading.ExecutionContext:RunInternal(ExecutionContext, ContextCallback, Object, Boolean)
System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object, Boolean)
System.Threading.ExecutionContext:Run(ExecutionContext, ContextCallback, Object)
System.Threading.ThreadHelper:ThreadStart(Object)
So how do you fix it?
If your hosting provider allows you, change the server to BETA version Alpha 20.3.
*your clients will need to do this too
Once thats been done, restore the affected player's profile (~/Save/../Player/<steam_id>.ttp) from the .bak version.
Delete drone.dat and drone.bak to force a recreation with an accurate serialization object stream
Bounce the box
Have affected user log in
Go to the Winchester have a nice cold pint