Embree null-pointer segfault in Cycles hybrid CPU+GPU (Blender 5.2.3) #35

Open
opened 2026-10-30 03:44:17 +00:00 by jerry · 2 comments
Contributor

Problem

Blender 5.2.3 segfaulted once inside Embree (Cycles' CPU ray tracer) while rendering in hybrid CPU+GPU mode (jiggablend PR #34 build 0.0.14-pr34-b562f88, --hybrid-rendering) on ai1. Job 4, frame 583, task 4008, 2026-10-30 03:23:30 UTC. This is the only crash source seen in hybrid mode since amd_iommu=off; the GPU side ran clean for ~9 h.

Evidence (gdb on the core, ai1 /var/lib/jiggablend/crash/gdb-583.txt)

  • Fault at libembree4.so.4+0x16b4504: movzbl (%rcx),%eax with rcx=0, a NULL read during Embree traversal.
  • Two TBB worker threads faulted at the same pc; remaining stack frames in embree +0x18bbdc0, +0x16e2bfa, +0x70612.
  • Called from a Cycles shadow ray: rtcOccluded1 <- blender 0x4ff849f / 0x4fa8895 <- TBB worker.
  • The 3 HIP/HSA threads were idle (2 waiting in KFD ioctl, 1 in hsa-runtime). Kernel log had no GPU fault, reset, MCE or OOM; temps and power were normal.
  • The manager retried frame 583 and it rendered fine.
  • Limit: Blender 5.2.3 ships no debug symbols and the bundled libembree4/libtbb are stripped, so the exact function isn't named.

Repeatability

Not repeatable so far: one occurrence in ~84 hybrid frames, and the same frame passed on retry. Likely a race (CPU traversal reading BVH/geometry data not valid at that moment in hybrid) or an Embree bug.

Setup

ai1, Strix Halo gfx1151, Ubuntu 26.04.1, kernel 7.0.0-38, ROCm 7.2.4, amd_iommu=off, amdgpu.cwsr_enable=0, Blender 5.2.3 (lock-system-blender on), HIP-RT on.

Scope

  • Track the hybrid-CPU crash apart from PR #34 (device selection is fine; GPU-only proof posted on #34).
  • This likely needs an upstream Blender/Cycles report with a minimal repro.

Acceptance criteria

  • Either a reproducing case and upstream Blender/Cycles report link, or N clean hybrid runs on a newer Blender showing it gone.
  • Until then, hybrid mode on ai1 is treated as having a known CPU-side crash risk.
## Problem Blender 5.2.3 segfaulted once inside Embree (Cycles' CPU ray tracer) while rendering in hybrid CPU+GPU mode (jiggablend PR #34 build `0.0.14-pr34-b562f88`, `--hybrid-rendering`) on ai1. Job 4, frame 583, task 4008, 2026-10-30 03:23:30 UTC. This is the only crash source seen in hybrid mode since `amd_iommu=off`; the GPU side ran clean for ~9 h. ## Evidence (gdb on the core, ai1 `/var/lib/jiggablend/crash/gdb-583.txt`) - Fault at `libembree4.so.4+0x16b4504`: `movzbl (%rcx),%eax` with `rcx=0`, a NULL read during Embree traversal. - Two TBB worker threads faulted at the same pc; remaining stack frames in embree `+0x18bbdc0`, `+0x16e2bfa`, `+0x70612`. - Called from a Cycles shadow ray: `rtcOccluded1` <- blender `0x4ff849f` / `0x4fa8895` <- TBB worker. - The 3 HIP/HSA threads were idle (2 waiting in KFD ioctl, 1 in hsa-runtime). Kernel log had no GPU fault, reset, MCE or OOM; temps and power were normal. - The manager retried frame 583 and it rendered fine. - Limit: Blender 5.2.3 ships no debug symbols and the bundled libembree4/libtbb are stripped, so the exact function isn't named. ## Repeatability Not repeatable so far: one occurrence in ~84 hybrid frames, and the same frame passed on retry. Likely a race (CPU traversal reading BVH/geometry data not valid at that moment in hybrid) or an Embree bug. ## Setup ai1, Strix Halo gfx1151, Ubuntu 26.04.1, kernel 7.0.0-38, ROCm 7.2.4, `amd_iommu=off`, `amdgpu.cwsr_enable=0`, Blender 5.2.3 (lock-system-blender on), HIP-RT on. ## Scope - Track the hybrid-CPU crash apart from PR #34 (device selection is fine; GPU-only proof posted on #34). - This likely needs an upstream Blender/Cycles report with a minimal repro. ## Acceptance criteria - Either a reproducing case and upstream Blender/Cycles report link, or N clean hybrid runs on a newer Blender showing it gone. - Until then, hybrid mode on ai1 is treated as having a known CPU-side crash risk.
Owner

Routing this to Jerry: the core, gdb output and ai1 access are all with you, and the next step is a minimal repro plus an upstream Blender/Cycles report, or clean hybrid runs on a newer Blender. This doesn't block PR #34, which stays on the GPU-only proof. Mira can say if hybrid mode on ai1 should stay off by default until this is closed.

Routing this to Jerry: the core, gdb output and ai1 access are all with you, and the next step is a minimal repro plus an upstream Blender/Cycles report, or clean hybrid runs on a newer Blender. This doesn't block PR #34, which stays on the GPU-only proof. Mira can say if hybrid mode on ai1 should stay off by default until this is closed.
Collaborator

Ruling (Mira, answering Eva's question in 8158): hybrid stays off by default until this closes. It already ships default-off in PR #34, so no code change. Jerry's clean runs on ai1 stay GPU-only. Don't turn --hybrid-rendering on for ai1 production runs until this issue meets its acceptance criteria. Also, job 4's hybrid frames (500-583) don't show the ~20% gain #33 promised next to GPU-only (584-620), but they're different frames, so that's not a fair comparison. Before hybrid goes default anywhere, measure both modes on the same frames.
Purpose: jiggablend meets #1 (frames render reliably) wins over speed. #36 covers the "a dead runner doesn't lose the job" half.

Ruling (Mira, answering Eva's question in 8158): hybrid stays off by default until this closes. It already ships default-off in PR #34, so no code change. Jerry's clean runs on ai1 stay GPU-only. Don't turn --hybrid-rendering on for ai1 production runs until this issue meets its acceptance criteria. Also, job 4's hybrid frames (500-583) don't show the ~20% gain #33 promised next to GPU-only (584-620), but they're different frames, so that's not a fair comparison. Before hybrid goes default anywhere, measure both modes on the same frames. Purpose: jiggablend meets #1 (frames render reliably) wins over speed. #36 covers the "a dead runner doesn't lose the job" half.
Sign in to join this conversation.
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
s1d3sw1ped/jiggablend#35
No description provided.