RealityKit crashes randomly in the simulator but not on the device

I'm writing a RealityKit/ARKit app that runs on iOS.

Starting with Xcode 16.0 beta 1, at least through Xcode 16.1 beta 2 (16B5014f), in the iOS 18 simulator, my app randomly crashes in about 20% of app sessions the first time it attempts to present an ARView.

The crashes seem to occur at multiple points within RealityKit and Metal.

Below, I've included screenshots of the call stacks of the crashes, which occur as a result of both EXC_BAD_ACCESS and assertion failures within RealityKit.

The app only crashes in the iOS 18 simulator, and does not crash in the iOS 17 simulator or earlier.

The app only crashes in the simulator, and does not crash on a device running iOS 18.

Before I investigate further, I'd appreciate it if an Apple engineer could give me a sense of if these crashes are most likely the result of known issues within RealityKit and/or the simulator, or if your opinion is that there are probably bugs in my app's code.

I've submitted several feedback issues in the past, and I'd love to submit this issue too, but I expect that I would spend many hours attempting to create a repro case in a sample app. Understandably, I'd rather not spend this time if an Apple engineer could tell me this is a known issue, for example.

Thank you.

Hello @drewolbrich,

I'm happy to look into this! Can you provide a fully symbolicated crash log?

Best regards,

Greg

Possibly related:

Sometimes, in the iOS 18 simulator only, CustomMaterial(surfaceShader:geometryModifier:lightingModel:) fails and throws the error "The building parameters were invalid". This error is preceded by the following messages in the Xcode console:

Error Domain=REMaterialBuilderErrorDomain Code=50 "Program "realitykit::fsSurfacePbr" failed due to invalid argument numbers. Constant buffer count [19] exceeds limit [14]. " UserInfo={NSLocalizedDescription=Program "realitykit::fsSurfacePbr" failed due to invalid argument numbers. Constant buffer count [19] exceeds limit [14]. }
Pipeline data for technique SurfaceShaderOpaque failed compilation!
Asset 14147473638299271299 MaterialDefinition (Framework)com.apple.CoreRE/surfaceShader.rematerialdefinition failure: Asset provider load failed: type 'Framework' -- unknown framework: com.apple.CoreRE
Asset 8115819767006447788 Material (MemoryAsset)asset29.compiledmaterial failure: failed to register asset
load failed: couldn't load '8115819767006447788 Material (MemoryAsset)asset29.compiledmaterial' (failed to register asset)

Possibly related:

While collecting the fully symbolicated crash logs I posted in an earlier comment, three times, in the iOS 18 simulator only, my app hung while loading geometry for a RealityKit scene. I paused the app in the debugger and saw the following stack trace. I couldn't use Xcode > Debug > Detach and get a crash log in this case because the app would hang and did not crash.

#0	0x00000001006ec55c in __semwait_signal ()
#1	0x00000001801695dc in nanosleep ()
#2	0x00000001801694b0 in usleep ()
#3	0x00000001aa9cf94c in re::AssetLoadRequest::Data::waitForCompletion ()
#4	0x00000001aa938068 in re::NetworkSendBlockingAssetLoadRequestManager::flushAndWaitForECSSendBlockingAssetLoadRequests ()
#5	0x00000001aaee2a98 in re::ecs2::NetworkSendSystem::update ()
#6	0x00000001aafd013c in re::internal::Callable<re::ecs2::ECSManager::configurePhaseECSSystems(re::Scheduler::ScheduleDescriptor&, re::ecs2::ECSSystemGroup, unsigned long)::$_0, void (float)>::operator() ()
#7	0x00000001ab463774 in re::Scheduler::executePhase ()
#8	0x00000001aa8cec10 in re::Engine::executePhase ()
#9	0x00000001aa8d71cc in re::Engine::timeDidChange ()
#10	0x00000001ab464da0 in re::Event<re::SimulationTimer, re::SimulationTimerEventArgs const&>::raise ()
#11	0x00000001ab464cd8 in re::VariableStepTimer::onClockDidChange ()
#12	0x00000001ab4643f8 in re::Event<re::SimulationClock, re::SimulationClockEventArgs const&>::raise ()
#13	0x00000001ab4645d4 in re::DisplayLinkClock::update ()
#14	0x000000018afcfccc in CA::Display::DisplayLinkItem::dispatch_ ()
#15	0x000000018afcbdac in CA::Display::DisplayLink::dispatch_items ()
#16	0x000000018afd29f8 in CA::Display::DisplayLink::dispatch_deferred_display_links ()
#17	0x000000018504aa80 in _UIUpdateSequenceRun ()
#18	0x00000001859f2750 in schedulerStepScheduledMainSection ()
#19	0x00000001859f1b88 in runloopSourceCallback ()
#20	0x000000018041b484 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#21	0x000000018041b3cc in __CFRunLoopDoSource0 ()
#22	0x000000018041ab30 in __CFRunLoopDoSources0 ()
#23	0x0000000180415210 in __CFRunLoopRun ()
#24	0x0000000180414ac0 in CFRunLoopRunSpecific ()
#25	0x00000001906e0b10 in GSEventRunModal ()
#26	0x0000000185ac325c in -[UIApplication _run] ()
#27	0x0000000185ac7454 in UIApplicationMain ()
#28	0x0000000184eb40d8 in UIKit.UIApplicationMain(Swift.Int32, Swift.Optional<Swift.UnsafeMutablePointer<Swift.UnsafeMutablePointer<Swift.Int8>>>, Swift.Optional<Swift.String>, Swift.Optional<Swift.String>) -> Swift.Int32 ()
#29	0x0000000102c421b0 in static UIApplicationDelegate.main() ()
#30	0x0000000102c42128 in static AppDelegate.$main() ()
#31	0x0000000102c4222c in main at /Users/drew/Repos/Baseball/Baseball/Sources/AppDelegate.swift:14
#32	0x0000000100391410 in start_sim ()
#33	0x000000010026e274 in start ()

This hanging was preceded by many messages like the following in the Xcode console:

Asset 8262083708093167093 Material (Framework)com.apple.CoreRE/pbr.rematerial failure: Asset provider load failed: type 'Framework' -- unknown framework: com.apple.CoreRE
load failed: couldn't load '8262083708093167093 Material (Framework)com.apple.CoreRE/pbr.rematerial' (Asset provider load failed: type 'Framework' -- unknown framework: com.apple.CoreRE)
AssetLoadRequest failed because asset failed to load '8262083708093167093 Material (Framework)com.apple.CoreRE/pbr.rematerial' (Asset provider load failed: type 'Framework' -- unknown framework: com.apple.CoreRE)
load failed: asset loading already has failed '8262083708093167093 Material (Framework)com.apple.CoreRE/pbr.rematerial' (Asset provider load failed: type 'Framework' -- unknown framework: com.apple.CoreRE)
Invalid asset: '8262083708093167093 Material (Framework)com.apple.CoreRE/pbr.rematerial'
load failed: asset loading already has failed '8262083708093167093 Material (Framework)com.apple.CoreRE/pbr.rematerial' (Asset provider load failed: type 'Framework' -- unknown framework: com.apple.CoreRE)
Invalid asset: '8262083708093167093 Material (Framework)com.apple.CoreRE/pbr.rematerial'
load failed: asset loading already has failed '8262083708093167093 Material (Framework)com.apple.CoreRE/pbr.rematerial' (Asset provider load failed: type 'Framework' -- unknown framework: com.apple.CoreRE)
Invalid asset: '8262083708093167093 Material (Framework)com.apple.CoreRE/pbr.rematerial'

Possibly related:

Sometimes, in the iOS 18 simulator only, the ARView appears black and none of my app's geometry is rendered.

Hello @drewolbrich,

Thank you for the pings, sorry for the delay!

Most of those crashes have the appearance of zombies, take a look at Investigating crashes for zombie objects.

One of those crash logs does not match the signature of the others (the one with the assertionFailure). In this case, it appears that you set the blending property of a PhysicallyBasedMaterial, and this resulted in an internal assertionFailure. Please file a bug report for this one using Feedback Assistant.

Best regards,

Greg

RealityKit crashes randomly in the simulator but not on the device
 
 
Q