Quartz Clock Proxy Unstable for Xbox Development

josharaed
Thu, 07 Aug 2025 15:55:55 +0000
Audio

While testing a dynamic music system on Xbox One X, periodically and seemingly randomly, the Quartz Clock or the Quartz Clock Proxy will become invalid when checked and then fail. This is a C++ implementation where I have saved the UQuartzClockHandle into a pointer after calling CreateNewClock from the Quartz Subsystem.

This is how I create a new Quartz Clock:

UQuartzClockHandle* Metronome = nullptr;

Metronome = QuartzSubsystem->CreateNewClock(WorldObject, "MyClock", settings);
if (Metronome->IsValidLowLevel())
{
	Metronome->SetBeatsPerMinute(WorldObject, quantizationBoundary, delegateBP, Metronome, CurrentSong->BPM);

	// Bind our beat event to the function
	BeatEvent.BindUFunction(this, "OnBeat");
	Metronome->SubscribeToQuantizationEvent(WorldObject, EQuartzCommandQuantization::Beat, BeatEvent, Metronome);
}

However, while testing it will consistently fail at:

Metronome->DoesClockExist(WorldObject)

And:

Metronome->GetEstimatedRunTime(WorldObject)

Even though in the previous line it checks to see if the Metronome or UQuartzClockHandle* is valid.

These lines are consistently what causes the crashes:

[2025.07.16-09.22.49:512][478]LogXboxCommonOutputDevices: Error: [Callstack] 0x00007ff6739a5c5d Cobalt.exe!Audio::FQuartzClockProxy::DoesClockExist []

And

[2025.07.16-09.45.34:340][703]LogXboxCommonOutputDevices: Error: [Callstack] 0x00007ff79f75cc5d Cobalt.exe!Audio::FQuartzClockProxy::GetEstimatedClockRunTimeSeconds []

Is there anything that I missed with setting up the Quartz Clock or starting it that may cause a periodic crash from the Quartz Clock Proxy?