Skip to content

Editor crash in Unity analytics: GetRenderingResolution on the main message loop (flat stack, no recursion) #282

Description

@dfattal

Split out of #264, which pooled six crash dumps that turned out to be at least three distinct bugs.

Reported by a partner integrator (Amazon Lab126 / LeiaViewer port, internal ticket UNITY-133).

Signature — dump folder Crash_2026-09-01_0244

Unlike #264 this one has a full Unity stack trace in the adjacent Editor.log:

========== OUTPUTTING STACK TRACE ==================
UnityEngine::PlatformWrapper::GetRenderingResolution
UnityEngine::Analytics::DeviceInfoEvent::CollectExtraInfo
UnityEngine::Analytics::DeviceInfoUpdater::LookForAppChanges
BaseUnityAnalytics::LookForVersionChange
BaseUnityAnalytics::OnEnterStateStarted
UnityEditorCoreStats::OnEnterStateStarted
BaseUnityAnalytics::RequestStateChange
BaseUnityAnalytics::DonePreparingOnMainThreadStatic
BackgroundJobQueue::ExecuteMainThreadJobs
EarlyUpdateExecuteMainThreadJobsRegistrator::Forward
Application::TickTimer
MainMessageLoop
UnityMain
========== END OF STACKTRACE ===========

13 frames, flat. No mono frames. No recursion, no repetition. Grepping the whole log for stack overflow|StackOverflow|recursion|Insufficient stack returns zero hits.

Why this is not #264

#264 is a genuine main-thread stack overflow (rsp == StackLimit, a 7,344-byte frame pair repeating, fault in mono-2.0-bdwgc.dll). This crash has none of those properties. Treating them as one signature is what made both harder to reason about, and the reasoning that applies to one does not transfer.

The interesting part, stated as an observation and not a mechanism

Unity's analytics subsystem crashes inside GetRenderingResolution, called from a main-thread job — on a box where a DisplayXR session had been changing the render target.

That is a plausible interaction point: the provider drives an arraySize=2 swapchain and reallocates the eye bridge when the pane geometry changes, and Unity's analytics reads rendering resolution on a schedule of its own, unsynchronised with any of it.

It is Unity's code on Unity's stack, so this is a correlation worth recording, not a diagnosis. Specifically:

  • No DisplayXR frame appears on the stack.
  • Nothing establishes that the crash requires a DisplayXR session at all — it may simply be a Unity bug that this rig happens to hit.

Note for anyone applying #264's conclusions here: the render-target / native layer is not ruled out for this crash. The argument that killed the native hypotheses in #264 ("a native realloc bug does not produce repeating managed frames") depends on the repeating managed frames, and this dump has no managed frames at all.

Needed to progress

  • Does it reproduce with DISPLAYXR_PROV_EXTERNAL_WINDOW=1? That isolates the docked weave-to-texture + GameView glue path.
  • Does it reproduce with the DisplayXR loader disabled entirely? The single highest-value data point — it decides whether this belongs to us at all.
  • Is editor analytics disablable on that rig (Preferences > Analytics, or -disable-assembly-updater-style startup flags)? If disabling analytics removes the crash, that localises it cleanly.
  • Frequency: one occurrence so far. Unknown whether it is reproducible.

Related: #264 (main-thread stack overflow, the same dump batch).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions