Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice
  3. Join us on November 16th, 2023, between 1 pm and 9 pm CET for Ask the Experts Online on Discord and on Unity Discussions.
    Dismiss Notice

IndexOutOfRangeException: NetworkReader:ReadByte out of range Problem

Discussion in 'Multiplayer' started by clerg0, Nov 18, 2015.

  1. clerg0

    clerg0

    Joined:
    Jun 16, 2015
    Posts:
    4
    Hi all,

    I'm working an collaborative VR application. I have a host and some distante client. I modified the network manager to have three player game object (head, hand and a ray).

    Since 2 days, my client catch this exception just after the connection to the host and before spawning player object:
    IndexOutOfRangeException: NetworkReader:ReadByte out of range:NetBuf sz:1 pos:1
    UnityEngine.Networking.NetBuffer.ReadByte () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkBuffer.cs:35)
    UnityEngine.Networking.NetworkReader.ReadUInt32 () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkReader.cs:199)
    UnityEngine.Networking.NetworkReader.ReadSingle () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkReader.cs:270)
    UnityEngine.Networking.NetworkReader.ReadVector3 () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkReader.cs:346)...

    There no logic about when it occurs. Sometimes i don't get this exception and all is fine, and sometimes i can't test my application about this exception.

    I don't know how to tackle this issue...

    If someone got an idea i would appreciate that.

    Damien
     
  2. clerg0

    clerg0

    Joined:
    Jun 16, 2015
    Posts:
    4
    If I put the entire message:

    IndexOutOfRangeException: NetworkReader:ReadByte out of range:NetBuf sz:1 pos:1
    UnityEngine.Networking.NetBuffer.ReadByte () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkBuffer.cs:35)
    UnityEngine.Networking.NetworkReader.ReadUInt32 () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkReader.cs:199)
    UnityEngine.Networking.NetworkReader.ReadSingle () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkReader.cs:270)
    UnityEngine.Networking.NetworkReader.ReadVector3 () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkReader.cs:346)
    UnityEngine.Networking.NetworkTransform.UnserializeModeTransform (UnityEngine.Networking.NetworkReader reader, Boolean initialState) (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkTransform.cs:450)
    UnityEngine.Networking.NetworkTransform.OnDeserialize (UnityEngine.Networking.NetworkReader reader, Boolean initialState) (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkTransform.cs:376)
    UnityEngine.Networking.NetworkIdentity.OnUpdateVars (UnityEngine.Networking.NetworkReader reader, Boolean initialState) (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkIdentity.cs:628)
    UnityEngine.Networking.ClientScene.ApplySpawnPayload (UnityEngine.Networking.NetworkIdentity uv, Vector3 position, System.Byte[] payload, NetworkInstanceId netId, UnityEngine.GameObject newGameObject) (at C:/buildslave/unity/build/Extensions/Networking/Runtime/ClientScene.cs:388)
    UnityEngine.Networking.ClientScene.OnObjectSpawnScene (UnityEngine.Networking.NetworkMessage netMsg) (at C:/buildslave/unity/build/Extensions/Networking/Runtime/ClientScene.cs:499)
    UnityEngine.Networking.NetworkConnection.HandleReader (UnityEngine.Networking.NetworkReader reader, Int32 receivedSize, Int32 channelId) (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkConnection.cs:416)
    UnityEngine.Networking.NetworkConnection.HandleBytes (System.Byte[] buffer, Int32 receivedSize, Int32 channelId) (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkConnection.cs:372)
    UnityEngine.Networking.NetworkConnection.TransportRecieve (System.Byte[] bytes, Int32 numBytes, Int32 channelId) (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkConnection.cs:522)
    UnityEngine.Networking.NetworkClient.Update () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkClient.cs:560)
    UnityEngine.Networking.NetworkClient.UpdateClients () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkClient.cs:774)
    UnityEngine.Networking.NetworkIdentity.UNetStaticUpdate () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkIdentity.cs:910)

    we can guess that it appear at the first spawning on a variable of networkTransform.
    As if the position or the rotation is empty.

    but i don't have access to unity networking source so i'm really lost...

    Damien
     
  3. clerg0

    clerg0

    Joined:
    Jun 16, 2015
    Posts:
    4
    I just replace NetworkTransform component by my own implementation of NetworkTransform. (Position and rotation with syncvar).

    I got the same error:

    IndexOutOfRangeException: NetworkReader:ReadByte out of range:NetBuf sz:1 pos:1
    UnityEngine.Networking.NetBuffer.ReadByte () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkBuffer.cs:35)
    UnityEngine.Networking.NetworkReader.ReadUInt32 () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkReader.cs:198)
    UnityEngine.Networking.NetworkReader.ReadSingle () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkReader.cs:270)
    UnityEngine.Networking.NetworkReader.ReadVector3 () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkReader.cs:346)
    MyNetworkTransform.OnDeserialize (UnityEngine.Networking.NetworkReader reader, Boolean initialState)
    UnityEngine.Networking.NetworkIdentity.OnUpdateVars (UnityEngine.Networking.NetworkReader reader, Boolean initialState) (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkIdentity.cs:628)
    UnityEngine.Networking.ClientScene.ApplySpawnPayload (UnityEngine.Networking.NetworkIdentity uv, Vector3 position, System.Byte[] payload, NetworkInstanceId netId, UnityEngine.GameObject newGameObject) (at C:/buildslave/unity/build/Extensions/Networking/Runtime/ClientScene.cs:388)
    UnityEngine.Networking.ClientScene.OnObjectSpawnScene (UnityEngine.Networking.NetworkMessage netMsg) (at C:/buildslave/unity/build/Extensions/Networking/Runtime/ClientScene.cs:499)
    UnityEngine.Networking.NetworkConnection.HandleReader (UnityEngine.Networking.NetworkReader reader, Int32 receivedSize, Int32 channelId) (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkConnection.cs:416)
    UnityEngine.Networking.NetworkConnection.HandleBytes (System.Byte[] buffer, Int32 receivedSize, Int32 channelId) (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkConnection.cs:372)
    UnityEngine.Networking.NetworkConnection.TransportRecieve (System.Byte[] bytes, Int32 numBytes, Int32 channelId) (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkConnection.cs:522)
    UnityEngine.Networking.NetworkClient.Update () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkClient.cs:560)
    UnityEngine.Networking.NetworkClient.UpdateClients () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkClient.cs:774)
    UnityEngine.Networking.NetworkIdentity.UNetStaticUpdate () (at C:/buildslave/unity/build/Extensions/Networking/Runtime/NetworkIdentity.cs:910)

    with the difference that is MyNetworkTransform at the place of NetworkTransform.

    So it doesn't come from NetworkTransform...

    damien
     
  4. chrismarch

    chrismarch

    Joined:
    Jul 24, 2013
    Posts:
    465
    In my experience, this usually means either
    1. you are attempting to connect a client built from older or newer versions of the scripts to a server
    2. you have a mismatch in the number of bytes written and read in an OnSerialze and/or OnDeserialize method