Synced strings over a certain length will cause an ArgumentOutOfRangeException
tracked
FairlySadPanda
- Name of the VRCSDK package you have imported.
VRCSDK3-2020.03.21.12.04
- Name of the Udon SDK package you have imported.
UDONSDK-2020.03.21.12.24
- Version/build of VRChat you’re using to test, if necessary.
Latest open beta. (906)
- A general description of the bug you’re encountering.
Attempting to send a long string, like "Trip,Bond,Diamond,Cap,Copper,Canada,Ray,Circle,Centaur,Deck,Dwarf,Wind,Arm,Seal,Pipe,Pyramid,Nail,Amazon,Queen,Theater,Screen,Jupiter,Dress,Game,Whale," over the network via synced vars will return the following error:
2020.03.21 21:33:39 Error - [FlatBufferNetworkSerializer] Caught ArgumentOutOfRangeException: Non-negative number required.
Parameter name: count
at System.Text.UTF8Encoding.GetString (System.Byte[] bytes, System.Int32 index, System.Int32 count) [0x00000] in <00000000000000000000000000000000>:0
at DŽDžDžDŽDžDžDŽDžDŽDŽDžDŽDžDžDŽDŽDŽDžDžDŽDžDžDžDžDžDžDŽDŽDžDžDžDŽDžDžDžDŽDžDžDŽDžDŽDžDŽDŽDžDžDž.DŽDžDŽDžDŽDŽDŽDžDžDžDžDžDžDžDžDžDŽDžDžDžDžDŽDŽDŽDžDŽDžDŽDŽDžDžDžDŽDžDžDžDŽDŽDžDŽDŽDžDŽDŽDžDŽDŽ (System.Int32 DžDžDžDŽDŽDžDžDŽDžDžDžDŽDŽDžDŽDžDŽDŽDŽDžDžDŽDŽDŽDžDžDžDžDžDžDŽDŽDŽDžDŽDŽDžDŽDžDŽDžDžDŽDžDŽDžDŽ, System.Int32 DŽDŽDžDŽDŽDžDžDŽDžDŽDžDŽDžDŽDžDŽDŽDžDžDŽDžDŽDŽDŽDžDžDžDŽDŽDžDžDŽDŽDŽDžDŽDŽDŽDŽDŽDžDžDŽDŽDŽDžDž) [0x00000] in <00000000000000000000000000000000>:0
at VRC.Networking.UdonSync.DŽDŽDžDŽDŽDžDžDžDŽDžDŽDŽDžDžDžDžDžDŽDžDžDŽDŽDŽDŽDžDžDŽDŽDŽDžDžDŽDžDŽDžDžDžDŽDŽDžDžDžDŽDžDŽDŽDž (DžDŽDŽDŽDžDŽDŽDŽDŽDŽDŽDŽDŽDŽDžDŽDžDžDžDžDžDžDžDžDžDŽDŽDžDžDžDžDžDžDŽDŽDŽDžDžDžDŽDžDžDŽDžDžDžDŽ DŽDŽDžDžDŽDžDŽDžDžDŽDŽDŽDŽDŽDŽDŽDžDžDŽDŽDŽDŽDžDžDžDžDžDžDŽDŽDžDŽDŽDŽDžDŽDŽDŽDžDžDŽDžDžDŽDžDŽDŽ, System.Int32 DŽDžDžDŽDžDŽDŽDŽDžDžDžDžDŽDžDžDŽDžDžDŽDžDŽDŽDŽDŽDžDžDŽDŽDŽDŽDŽDžDžDŽDŽDŽDžDžDžDŽDžDŽDŽDŽDŽDžDž, System.Type DžDŽDŽDŽDŽDŽDŽDŽDžDžDžDžDžDŽDžDžDžDŽDŽDŽDŽDžDžDžDŽDžDžDžDžDŽDžDžDžDŽDžDŽDžDŽDŽDžDžDžDŽDŽDŽDŽDž) [0x00000] in <00000000000000000000000000000000>:0
at VRC.Networking.UdonSync.DžDŽDŽDžDŽDŽDžDŽDžDžDŽDžDŽDŽDŽDŽDžDŽDžDžDŽDžDžDžDžDžDžDžDŽDžDžDžDžDŽDžDŽDžDŽDŽDžDŽDŽDŽDžDžDŽDŽ (DžDžDŽDžDžDžDžDŽDŽDŽDŽDŽDŽDžDžDŽDŽDžDŽDŽDŽDŽDžDžDžDŽDžDžDŽDžDŽDžDŽDŽDžDžDŽDžDŽDžDŽDžDžDŽDžDžDŽ DŽDŽDžDžDžDŽDŽDžDžDžDŽDŽDžDŽDŽDŽDŽDžDžDŽDžDžDžDŽDŽDŽDŽDŽDŽDžDŽDžDŽDžDžDŽDŽDŽDžDŽDŽDŽDŽDŽDŽDŽDŽ, System.Int32 DžDŽDŽDŽDŽDŽDŽDžDŽDžDžDŽDžDžDŽDŽDŽDžDŽDŽDžDžDžDžDžDŽDžDŽDžDŽDŽDžDžDžDžDŽDŽDŽDžDŽDžDŽDžDŽDŽDŽDž, System.Single DžDžDŽDžDŽDžDŽDžDŽDŽDžDŽDŽDžDžDŽDŽDžDŽDŽDŽDŽDŽDŽDžDŽDŽDžDŽDžDŽDŽDžDžDžDžDŽDžDŽDŽDŽDžDŽDŽDŽDŽDž) [0x00000] in <00000000000000000000000000000000>:0
at VRC.Networking.FlatBufferNetworkSerializer.DŽDžDŽDŽDžDžDžDžDŽDžDŽDŽDŽDŽDŽDžDžDŽDžDžDžDŽDŽDžDžDŽDŽDŽDŽDŽDŽDžDŽDŽDžDŽDŽDžDžDžDŽDŽDžDŽDžDŽDž (ExitGames.Client.Photon.EventData DŽDŽDŽDžDŽDŽDžDŽDžDžDžDŽDžDžDŽDžDžDžDžDŽDŽDžDŽDŽDŽDŽDŽDŽDžDžDŽDžDŽDžDžDžDžDžDžDžDŽDžDžDžDžDžDž) [0x00000] in <00000000000000000000000000000000>:0
at NetworkManager.DŽDžDŽDŽDžDžDžDžDŽDžDŽDŽDŽDŽDŽDžDžDŽDžDžDžDŽDŽDžDžDŽDŽDŽDŽDŽDŽDžDŽDŽDžDŽDŽDžDžDžDŽDŽDžDŽDžDŽDž (ExitGames.Client.Photon.EventData DŽDŽDŽDžDŽDŽDžDŽDžDžDžDŽDžDžDŽDžDžDžDžDŽDŽDžDŽDŽDŽDŽDŽDŽDžDžDŽDžDŽDžDžDžDžDžDžDžDŽDžDžDžDžDžDž) [0x00000] in <00000000000000000000000000000000>:0
at UnityEngine.AudioClip+PCMReaderCallback.Invoke (System.Single[] data) [0x00000] in <00000000000000000000000000000000>:0
at DŽDŽDžDžDžDžDžDžDžDžDžDžDŽDžDžDŽDžDŽDžDŽDŽDŽDžDžDžDŽDŽDŽDŽDŽDŽDŽDžDŽDžDžDžDžDžDžDŽDžDžDžDžDŽDž.OnEvent (ExitGames.Client.Photon.EventData DŽDŽDŽDžDŽDŽDžDŽDžDžDžDŽDžDžDŽDžDžDžDžDŽDŽDžDŽDŽDŽDŽDŽDŽDžDžDŽDžDŽDžDžDžDžDžDžDžDŽDžDžDžDžDžDž) [0x00000] in <00000000000000000000000000000000>:0
at DŽDžDžDŽDŽDŽDŽDžDŽDŽDžDŽDžDŽDžDŽDŽDžDŽDžDŽDžDžDŽDŽDžDžDŽDŽDŽDŽDŽDŽDžDžDžDŽDžDŽDžDŽDŽDŽDžDŽDžDŽ.OnEvent (ExitGames.Client.Photon.EventData DŽDŽDŽDžDŽDŽDžDŽDžDžDžDŽDžDžDŽDžDžDžDžDŽDŽDžDŽDŽDŽDŽDŽDŽDžDžDŽDžDŽDžDžDžDžDžDžDžDŽDžDžDžDžDžDž) [0x00000] in <00000000000000000000000000000000>:0
at ExitGames.Client.Photon.PeerBase.DeserializeMessageAndCallback (ExitGames.Client.Photon.StreamBuffer stream) [0x00000] in <00000000000000000000000000000000>:0
at ExitGames.Client.Photon.EnetPeer.DispatchIncomingCommands () [0x00000] in <00000000000000000000000000000000>:0
at ExitGames.Client.Photon.PhotonPeer.DispatchIncomingCommands () [0x00000] in <00000000000000000000000000000000>:0
at DŽDŽDŽDžDžDžDŽDžDžDŽDŽDŽDžDžDŽDžDŽDŽDŽDžDžDžDŽDŽDžDŽDŽDžDŽDŽDŽDžDŽDŽDŽDžDŽDžDžDžDŽDžDŽDŽDžDŽDŽ.DispatchIncomingCommands () [0x00000] in <00000000000000000000000000000000>:0
at Photon.Pun.PhotonHandler.FixedUpdate () [0x00000] in <00000000000000000000000000000000>:0
Sending a shorter string, like "Trip,Bond,Diamond,Cap,Copper," works without issue on the same world.
- Step by step guide how to replicate the bug.
Will get this if needed.
---
This could just be a limitation of syncing strings - if there's a hardware limit, can we have an error letting us know that the string is too long to be sent?
Log In
Phasedragon
tracked
Ok that's fair
FairlySadPanda
Reporting as not fixed: error log is still spammed.
Phasedragon
complete
I believe this was back before the udon networking update, which introduced manual sync. Continuous sync still has this limitation and it is not a bug, continuous sync is simply limited to about 256 bytes. Manual sync on the other hand allows up to around 60 thousand bytes, so I'm going to consider this complete.
MyroP
Phasedragon: Personally, the thing that bothered me the most was that this issue would cause log messages getting spammed, causing noticeable framerate drops. When that issue happened to me I was wondering why my world became really laggy.
Also the error message wasn't very clear, so it took me some time to figure out the actual cause of the issue (I only knew that it was caused by the synced string after I found this canny).
So personally, I would suggest changing the error message, and only writing it once to avoid frame drops. Another idea would be show an error message on the emitter's end, because as FairlySadPanda mentioned, that issue only happens on the receiver's ends.
hotpepper360
i have came across the same issue. Please fix it
tr1xus
Please fix this issue
LoliGoddess
Please vrchat fix this
makihiro
The same problem is happend.
Environment
- Client: build 932
- VRCSDK3+UDON: 2020.05.06.12.14
The promblem string have more then 53 character that condition (a[i]&128 != 0) in my environment.
Example Data
OK:
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
- 0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
- ¼ä¹ùíâ°áè²ÉõÆöòÚÛÜÕµÈðØÀúÌéÔÁ´ÑıÏʽ³î×Óåã÷¾Ë:P68`Nïg¿ÍÃæßøÅsBk^Yt;GlRjV]7q
NG:
- äääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääääää
I created debug world for this problem.
ଳ̴̖̕
DžDžDŽDžDžDžDžDŽDŽDŽDŽDŽDŽDžDžDŽDŽDžDŽDŽDŽDŽDžDžDžDŽDžDžDŽDžDŽDžDŽDŽDžDžDŽDžDŽDžDŽDžDžDŽDžDžDŽ DŽDŽDžDžDžDŽDŽDžDžDžDŽDŽDžDŽDŽDŽDŽDžDžDŽDžDžDžDŽDŽDŽDŽDŽDŽDžDŽDžDŽDžDžDŽDŽDŽDžDŽDŽDŽDŽDŽDŽDŽDŽ, System.Int32 DžDŽDŽDŽDŽDŽDŽDžDŽDžDžDŽDžDžDŽDŽDŽDžDŽDŽDžDžDžDžDžDŽDžDŽDžDŽDŽDžDžDžDžDŽDŽDŽDžDŽDžDŽDžDŽDŽ
FairlySadPanda
Should note that this error occurs on the reciever, not the emitter.