Assert in packaged development build 4.14.3 - IsInGameThread(), particle component, pausing

We get a consistent crash whenever we try to pause the game (UGameplayStatics::SetGamePaused), but only in a packaged build. It’s an oculus VR game.

The assert is in ParticleComponents.cpp line 4869 check(IsInGameThread())
The callstack shows the parent that it’s in UParticleSystemComponent::SendRenderTransform_Concurrent.

This only happens when the game is paused, and none of the particle components are TickWhenPaused (mentioned in a previous bug).

Any ideas on how to track this down?

Hello DigitalMage,

I have a few questions for you that will help narrow down what issue it is that you are experiencing.

Quick questions:

  1. Can you reproduce this issue in a clean project?
  2. If so, could you provide a detailed list of steps to reproduce this issue on our end?
  3. Could you provide screen shots of any blueprint/settings that may be involved with this issue?

Hello DigitalMage,

We have not heard back from you in a few days, so we are marking this post as Resolved for tracking purposes. If you are still experiencing the issue you reported, please respond to this message with additional information and we will follow up.

Thanks,

Sorry, it took me some time to put together a build.

It IS reproduceable in a clean project (I had to track down what was causing it)

(1) Create a camera with an attached scenecapture2D (create an arbitrary render target for the capture to point to). Mark the scenecapture2D as tickable when paused.
(2) Call the SceneCapture2D->Capture() every tick from another object (that’s also tickable when paused). Set the tick to “Physics Update”
(2) Attach a particle component to an object in the scene (I used P_Fire from the sample sidescroller game, attached to the player)
(3) Hook up an input event to SetGamePaused
(3) Play the game. Press Pause. Game crashes in one of two places.

Ok,- three more notes. I was in a VR project, and this only crashes with a Development Packaged build. It works fine in the editor, and in shipping it skips the asserts.

I identified the main culprit- setting the object that does the Scenecapture2D->Capture() to the physics update tick. Somehow we had bumped that. When I put it back to pre-physics it works.

Thanks!

I followed the information above and I was unable to reproduce this issue on our end. I noticed that you said you have reproduced the issue in a clean project. Would it be possible for you to provide that project so that I could take a closer look?

What is the right way to upload the project? It uses sample content so it’s 2.5gb ><.

I did figure out what the problem was anyways- the blueprint that called SceneCapture2D->CaptureScene() was set to tick in the Physics tick in our project (and I copied it to the sample project). As soon as I moved it back to prephysics all worked properly.

If you would like to provide the project you could do so by zipping it down and providing a link via google drive or drop box.

I think having it tick during an unsafe time (Physics tick) was the problem, so I doubt this is a bug for you guys to fix. Thanks for your time!

We are having the same issue but for us we are calling CaptureScene() when we get a hit event.

@BrianWindover - did you ever resolve this, currently got the same problem in 4.21