When setting the lifetime of our projectile to 20.0 seconds and the speed of it to 110,000.0 cm/s the engine will crash after printing out the following messages.
[2014.11.02-02.46.54:948][185]LogProjectileMovement:Warning: BP_M791_C_3 is outside the world bounds!
[2014.11.02-02.46.54:963][186]LogProjectileMovement:Warning: BP_M791_C_2 is outside the world bounds!
Ensure condition failed: this->IsBound() [File:d:\unrealengine\engine\source\runtime\core\public\delegates\DelegateSignatureImpl.inl] [Line: 2039]
Unable to bind delegate to '&UMovementComponent::PhysicsVolumeChanged' (function might not be marked as a UFUNCTION)
UE4Editor.exe has triggered a breakpoint.
From what I can see in the code in the ProjectileMovementComponent.cpp file, there is a function called CheckStillInWorld() and it crashes in the SetUpdatedComponent() function of the UMovementComponent class tries to call UpdatedComponent->PhysicsVolumeChangedDelegate.RemoveDynamic(this, &UMovementComponent::PhysicsVolumeChanged);.
Well there is an ensureMsgf debug hook (in DelegateSignatureImpl.inl) that gets triggered because the PhysicsVolumeChanged is no longer bound to any delegates. I have checked the code with IsBound() before calling RemoveDynamic but it still gets in there and crashes.
The only work-around we can currently employ is to limit the lifetime of our projectile to something quite a bit less than 20 seconds (we actually used 3 seconds) so that it will not go out of bounds.