Client connection dropped due to GUID with no object on server error

Build: 4.3.1 (binary)

Problem: When testing networked games in PIE mode, my clients occasionally lose their connection to the server. I originally thought it was related to my respawn functionality, but I think I’ve narrowed it down to the function responsible for cosmetically destroying the player’s vehicle. I haven’t gotten very far in looking at this over the past day or so beyond narrowing down the probably responsible function.

Essentially, the player is hit, their vehicle is destroyed, usually they respawn correctly, sometimes they get dropped from the server immediately upon being hit and respawn in a different session on the default map. Here’s the log output:

LogBlueprintUserMessages: Client 1: Projectile Dropped (Multicast)
LogBlueprintUserMessages: Client 1: Projectile Dropped (Multicast)
LogBlueprintUserMessages: Client 2: Projectile Dropped (Multicast)
LogBlueprintUserMessages: Client 2: Projectile Dropped (Multicast)
LogNetPackageMap:Error: GetObjectFromNetGUID: Guid with no object on server. Path: None, NetGUID: 14
LogNetPackageMap:Warning: InternalLoadObject: Unable to resolve object. Cached Path: None, NetGUID: 14
LogNetTraffic:Error: ReadContentBlockHeader: Client attempted to create sub-object. Actor: Omni_C_0
LogNet:Error: UActorChannel::ReceivedBunch: ReadContentBlockHeader FAILED. Bunch.IsError() == TRUE.  Closing connection.
LogNet: UNetConnection::Close: Name: IpConnection_6, Driver: GameNetDriver IpNetDriver_3, PC: OmniPlayerController_C_4, Owner: OmniPlayerController_C_4, Channels: 19, RemoteAddr: 127.0.0.1:62726, Time: 2014.08.13-19.44.13
LogNet: UChannel::Close: Sending CloseBunch. ChIndex == 0. Name: ControlChannel_6
LogNetTraffic:Error: UChannel::ReceivedRawBunch: Bunch.IsError() after ReceivedNextBunch 1
LogNetTraffic:Error: Received corrupted packet data from client 127.0.0.1.  Disconnecting.
LogNet: UChannel::ReceivedSequencedBunch: Bunch.bClose == true. ChIndex == 0. Calling ConditionalCleanUp.
LogNet: UChannel::CleanUp: [GameNetDriver] [OmniPlayerController_C_6] [OmniPlayerController_C_6]. ChIndex == 0. Closing connection.
LogNet: UNetConnection::Close: Name: IpConnection_4, Driver: GameNetDriver IpNetDriver_4, PC: OmniPlayerController_C_6, Owner: OmniPlayerController_C_6, Channels: 19, RemoteAddr: 127.0.0.1:7777, Time: 2014.08.13-19.44.13
LogNet: UChannel::Close: Sending CloseBunch. ChIndex == 0. Name: ControlChannel_4
LogNet:Warning: Network Failure: GameNetDriver[ConnectionLost]: Your connection to the host has been lost.
LogNet:Warning: Network Failure: GameNetDriver[ConnectionLost]: Your connection to the host has been lost.
LogNet: NetworkFailure: ConnectionLost, Error: 'Your connection to the host has been lost.'
LogNet: DestroyNamedNetDriver IpNetDriver_4 [GameNetDriver]
LogExit: GameNetDriver IpNetDriver_4 shut down
LogPlayerController:Warning: Calling IsLocalController() while Player is NULL is undefined!
LogPlayerController:Warning: Calling IsLocalController() while Player is NULL is undefined!
LogNet: NotifyAcceptingConnection: Server City accept
LogNet: Open City 08/13/14 12:44:13 127.0.0.1
LogNet: Added client connection.  Remote address = 127.0.0.1:62726
LogNetTraffic:Error: UNetConnection::ReceivedPacket: Received control channel close before open
LogNet: UNetConnection::Close: Name: IpConnection_8, Driver: GameNetDriver IpNetDriver_3, PC: NULL, Owner: NULL, Channels: 1, RemoteAddr: 127.0.0.1:62726, Time: 2014.08.13-19.44.13
LogNet: Multicast function called on connection with no Viewer
LogNet: Multicast function called on connection with no Viewer
LogNet: Multicast function called on connection with no Viewer
LogNet: Multicast function called on connection with no Viewer
LogNet: Multicast function called on connection with no Viewer
LogNet: Multicast function called on connection with no Viewer
LogNet: Multicast function called on connection with no Viewer
LogNet: Multicast function called on connection with no Viewer
LogNet: Browse: /Game/Maps/Example_Map?closed
LogNet: Failed; returning to Entry
LogLoad: LoadMap: /Game/Maps/Example_Map?closed

I believe this is due to the following blueprint execution:

Destroy vehicle function:

Calling chain:

Specifically, things seem to go awry if I include the Mesh->DestroyComponent and VehicleMovement->DestroyComponent functions. Excluding those calls presents undesirable behavior; you can still collide with pawns after you’ve “destroyed” them. I haven’t found a better way to deactivate these two components such that other pawns don’t collide with them, other than destroying them (it’s worth nothing that Mesh is the Root component, and that messing with the physics of the skeletal Root Mesh of a vehicle component causes a crash).

My next step is to figure out a way to output the GUID of each object so I can start to track down the origin of this error:

LogNetPackageMap:Error: GetObjectFromNetGUID: Guid with no object on server. Path: None, NetGUID: 14

I have an archive of the project available for download from S3 if anyone is willing to take a closer look.

Thanks, any ideas or insight are appreciated!

I solved this issue by removing the calls to VehicleMovement->DestroyComponent and Mesh->DestroyComponent. I don’t understand exactly what was causing the issue, but I suspect that removing the Root component of the vehicle and jettisoning the turret, driver, and projectile, all of which contain references to the vehicle and are responsible for spawning subobjects, like projectiles, could have been the cause.

I replaced the destroy calls with the following: (image: http://i.imgur.com/MTjTUuL.png)

Mesh->SetCollisionProfileName(‘OverlapAll’)
Mesh->SetVisibility(false)
VehicleMovement->StopMovementImmediately
VehicleMovement->StopActiveMovement

I also set a bool to prevent further vehicle movement and other input.