Cycles: Blender crash on switching between tabs #82607

Closed
opened 2020-11-11 08:35:43 +01:00 by AiSatan · 17 comments

System Information
Operating system: Windows-10-10.0.19041-SP0 64 Bits
Graphics card: GeForce RTX 3090/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 457.30

Blender Version
Broken: version: 2.92.0 Alpha, branch: master, commit date: 2020-11-10 22:11, hash: c4d8f6a4a8 & 2.91 Beta
Worked: 2.90.1

Short description of error
Blender crash on switching tabs, if you switch it on "load mesh/upload scene bhv"

Exact steps for others to reproduce the error

  1. Load blend file, or just copy default cube multiple times
  2. Switch to render view (it happends in both Cuda and optiX)
  3. As soon as it's start render, go to second tab (I only test with UV tab)
  4. If you change tab on "upload bhv or update meshes" it will crash.

heavier meshes you have - easier to reproduce

Example(2.92 first two, and 2.90.1 last one):

2.92vs2.90.1.mp4

Blend File:

test.blend

Logs:

blender_debug_output.txt

blender_system_info.txt

test.crash.txt

blender.exe         :0x00007FF69A8DC3A0  ccl::AttributeSet::find
blender.exe         :0x00007FF69A49D5F0  ccl::OptiXDevice::build_optix_bvh
blender.exe         :0x00007FF69D9CEAB0  ccl::BVHOptiX::copy_to_device
blender.exe         :0x00007FF69A8E4210  ccl::GeometryManager::device_update_bvh
blender.exe         :0x00007FF69A8DF230  ccl::GeometryManager::device_update
blender.exe         :0x00007FF69A8A2680  ccl::Scene::device_update
blender.exe         :0x00007FF69A8A43E0  ccl::Scene::update
blender.exe         :0x00007FF69A8BC600  ccl::Session::update_scene
blender.exe         :0x00007FF69A8BECB0  ccl::Session::run_gpu
blender.exe         :0x00007FF69A8BC850  ccl::Session::run
blender.exe         :0x00007FF69C9E5040  ccl::thread::run
blender.exe         :0x00007FF69A0D4FE0  std::thread::_Invoke<std::tuple<void * __ptr64 (__cdecl*)(void * __ptr64),ccl::thread * __ptr64>,0,
ucrtbase.dll        :0x00007FF99FB21430  configthreadlocale
KERNEL32.DLL        :0x00007FF9A0277020  BaseThreadInitThunk
ntdll.dll           :0x00007FF9A209CEA0  RtlUserThreadStart
**System Information** Operating system: Windows-10-10.0.19041-SP0 64 Bits Graphics card: GeForce RTX 3090/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 457.30 **Blender Version** Broken: version: 2.92.0 Alpha, branch: master, commit date: 2020-11-10 22:11, hash: `c4d8f6a4a8` & 2.91 Beta Worked: 2.90.1 **Short description of error** Blender crash on switching tabs, if you switch it on "load mesh/upload scene bhv" **Exact steps for others to reproduce the error** 1. Load blend file, or just copy default cube multiple times 2. Switch to render view (it happends in both Cuda and optiX) 3. As soon as it's start render, go to second tab (I only test with UV tab) 4. If you change tab on "upload bhv or update meshes" it will crash. heavier meshes you have - easier to reproduce Example(2.92 first two, and 2.90.1 last one): [2.92vs2.90.1.mp4](https://archive.blender.org/developer/F9258125/2.92vs2.90.1.mp4) Blend File: [test.blend](https://archive.blender.org/developer/F9258122/test.blend) Logs: [blender_debug_output.txt](https://archive.blender.org/developer/F9258113/blender_debug_output.txt) [blender_system_info.txt](https://archive.blender.org/developer/F9258114/blender_system_info.txt) [test.crash.txt](https://archive.blender.org/developer/F9258115/test.crash.txt) ```lines blender.exe :0x00007FF69A8DC3A0 ccl::AttributeSet::find blender.exe :0x00007FF69A49D5F0 ccl::OptiXDevice::build_optix_bvh blender.exe :0x00007FF69D9CEAB0 ccl::BVHOptiX::copy_to_device blender.exe :0x00007FF69A8E4210 ccl::GeometryManager::device_update_bvh blender.exe :0x00007FF69A8DF230 ccl::GeometryManager::device_update blender.exe :0x00007FF69A8A2680 ccl::Scene::device_update blender.exe :0x00007FF69A8A43E0 ccl::Scene::update blender.exe :0x00007FF69A8BC600 ccl::Session::update_scene blender.exe :0x00007FF69A8BECB0 ccl::Session::run_gpu blender.exe :0x00007FF69A8BC850 ccl::Session::run blender.exe :0x00007FF69C9E5040 ccl::thread::run blender.exe :0x00007FF69A0D4FE0 std::thread::_Invoke<std::tuple<void * __ptr64 (__cdecl*)(void * __ptr64),ccl::thread * __ptr64>,0, ucrtbase.dll :0x00007FF99FB21430 configthreadlocale KERNEL32.DLL :0x00007FF9A0277020 BaseThreadInitThunk ntdll.dll :0x00007FF9A209CEA0 RtlUserThreadStart ```
Author

Added subscriber: @aisatan.ne

Added subscriber: @aisatan.ne

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'

Added subscribers: @brecht, @rjg

Added subscribers: @brecht, @rjg

CC @brecht

CC @brecht

Added subscriber: @dfelinto

Added subscriber: @dfelinto

@rjg there is no need to cc Brecht. A high priority that is tagged as Cycles will already show up in his "radar" (and the other Cycles members).
The exception is when there is bisect and the error is traced back to a commit from that developer. In this case you can go as far as assigning it to him/her if they are active + poke them on blender.chat.

@rjg there is no need to cc Brecht. A high priority that is tagged as Cycles will already show up in his "radar" (and the other Cycles members). The exception is when there is bisect and the error is traced back to a commit from that developer. In this case you can go as far as assigning it to him/her if they are active + poke them on blender.chat.

@dfelinto True, that was a bit pointless for this ticket.

@dfelinto True, that was a bit pointless for this ticket.
Member

Added subscriber: @lichtwerk

Added subscriber: @lichtwerk
Member

I cannot get it to reliably crash here

I cannot get it to reliably crash here
Author

@lichtwerk you can try with this one, it's make "updating mesh" longer, so it's easy to crash if you change tab at this time.

test2.blend

@lichtwerk you can try with this one, it's make "updating mesh" longer, so it's easy to crash if you change tab at this time. [test2.blend](https://archive.blender.org/developer/F9260610/test2.blend)

This issue was referenced by d59fa12f2a

This issue was referenced by d59fa12f2ad5c57c68d63e476270fcd274b61062

Added subscriber: @kevindietrich

Added subscriber: @kevindietrich

I haven't bisected this, but I think the culprit is 8c3d42bd0f. Basically it crashes because the Session is freed while data is still being processed. Previously it worked because the actual scene data was not freed in the id_map's destructors when calling delete sync;, so we would have to first cancel the render, and then free the session.

This little patch works, but isn't so clean IMO and is a bit redundant with the logic in the Session destructor:

diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index 770f4ca51c9..d8579ae9ec8 100644
    - a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -260,6 +260,9 @@ void BlenderSession::reset_session(BL::BlendData &b_data, BL::Depsgraph &b_depsg
 

 void BlenderSession::free_session()
 {
+  session->progress.set_cancel("Exiting");
+  session->wait();
+

delete sync;
delete session;

 }
I haven't bisected this, but I think the culprit is 8c3d42bd0f. Basically it crashes because the Session is freed while data is still being processed. Previously it worked because the actual scene data was not freed in the id_map's destructors when calling `delete sync;`, so we would have to first cancel the render, and then free the session. This little patch works, but isn't so clean IMO and is a bit redundant with the logic in the Session destructor: ```lang=diff diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index 770f4ca51c9..d8579ae9ec8 100644 - a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -260,6 +260,9 @@ void BlenderSession::reset_session(BL::BlendData &b_data, BL::Depsgraph &b_depsg void BlenderSession::free_session() { + session->progress.set_cancel("Exiting"); + session->wait(); + ``` delete sync; delete session; ``` } ```

@kevindietrich This does indeed seem to be the commit. After the commit I'm getting a crash, with one commit before it freezes indefinitely when clicking on the other tab (Blender still runs, but doesn't update the UI or react to clicks).

@kevindietrich This does indeed seem to be the commit. After the commit I'm getting a crash, with one commit before it freezes indefinitely when clicking on the other tab (Blender still runs, but doesn't update the UI or react to clicks).

Changed status from 'Confirmed' to: 'Resolved'

Changed status from 'Confirmed' to: 'Resolved'
Brecht Van Lommel self-assigned this 2020-11-12 20:23:50 +01:00

I don't mind being CCed on high priority bugs. This close to the release I'll check the list every day, but it's helpful in general I think.

I don't mind being CCed on high priority bugs. This close to the release I'll check the list every day, but it's helpful in general I think.

@kevindietrich I didn't see you already found the cause, I was looking into this yesterday and committed the fix just now. My fix is basically what you proposed deduplication the code with the session destruction.

@kevindietrich I didn't see you already found the cause, I was looking into this yesterday and committed the fix just now. My fix is basically what you proposed deduplication the code with the session destruction.
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
7 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: blender/blender#82607
No description provided.