FPlatformProcess::Sleep crash in thread - bad thread use ? (flicker effect on damage)


I call a function called


when my enemy is touched.

I tried many different AsyncTask(ENamedThreads::XXX)
and it seems that more prioritized is the thread, the more the game freeze when the thread is called.

VisualStudio break point when FPlatformProcess::Sleep is called

void AMyBasicMob::twinkleDamage()

		AsyncTask(ENamedThreads::AnyBackgroundHiPriTask , [this]() // GAMETHREAD ???

			int i = 0;
			bool val = false;
			auto _mesh = this->GetMesh();
			if (_mesh) {
				while (i < 14) {
					UE_LOG(LogClass, Warning, TEXT("FLICKER LOOP"));

					if (!val) {
						_mesh->SetMaterial(0, FlikkerMaterial);
					else {
						_mesh->SetMaterial(0, BaseMaterial);

                                       // HERE ISSUE
                                       // trigger breakpoint or crash
					val = !val;
				_mesh->SetMaterial(0, BaseMaterial);
				this->hitable = true;


As you probably guest, I’m a newbie in UE4, but I’ve done many c++ projects by the past,
So somebody can tell me what’s wrong here?

Or If you have a best practice for thread that handle visual modification of actor, let me know!

thanks :slight_smile:

It is likely the calls you are making from inside the thread are not meant to be made outside of the game thread. I am not even sure logging is safe from a non-game thread! Safest position I think is not to make any engine call from a non-game thread, only handle logic there then send messages to the game thread so code there can actually call the engine. However if an UE expert could elaborate on this I would also be interested.