Crash when using Geometry Node Mesh Boolean Union #115953

Closed
opened 2023-12-08 19:09:19 +01:00 by Lawrence · 5 comments

System Information
Operating system: Windows-10-10.0.19045-SP0 64 Bits
Graphics card: NVIDIA GeForce RTX 3070/PCIe/SSE2 NVIDIA Corporation 4.6.0 NVIDIA 536.23

Blender Version
Broken: version: 4.0.1, branch: blender-v4.0-release, commit date: 2023-11-16 16:40, hash: d0dd92834a08
Worked: None tried

Short description of error
Creating a dendrite type of mesh there are multiple overlapping curves (to mesh). To reduce the geometry I have successfully in other blends done a Union but just a single mesh to remove all internal meshes. But for this blend there is a crash. When there is a Merge by Distance before the Union the crash will be sooner. This is not running out of memory because Windows Task Manager says it was using only 10 or 20 Gigabytes out of 64 Gb of memory.

Exact steps for others to reproduce the error
See attached blend file. In the GN for the plane, connect the Mesh Boolean (Union) to the Set Material. Wait. Blender will crash. If the previous node Merge by Distance is disconnected, the crash will still happen but it will take much longer.
[Based on the default startup or an attached .blend file (as simple as possible)]

**System Information** Operating system: Windows-10-10.0.19045-SP0 64 Bits Graphics card: NVIDIA GeForce RTX 3070/PCIe/SSE2 NVIDIA Corporation 4.6.0 NVIDIA 536.23 **Blender Version** Broken: version: 4.0.1, branch: blender-v4.0-release, commit date: 2023-11-16 16:40, hash: `d0dd92834a08` Worked: None tried **Short description of error** Creating a dendrite type of mesh there are multiple overlapping curves (to mesh). To reduce the geometry I have successfully in other blends done a Union but just a single mesh to remove all internal meshes. But for this blend there is a crash. When there is a Merge by Distance before the Union the crash will be sooner. This is not running out of memory because Windows Task Manager says it was using only 10 or 20 Gigabytes out of 64 Gb of memory. **Exact steps for others to reproduce the error** See attached blend file. In the GN for the plane, connect the Mesh Boolean (Union) to the Set Material. Wait. Blender will crash. If the previous node Merge by Distance is disconnected, the crash will still happen but it will take much longer. [Based on the default startup or an attached .blend file (as simple as possible)]
Lawrence added the
Type
Report
Status
Needs Triage
Priority
Normal
labels 2023-12-08 19:09:20 +01:00

It seems there is just not enough memory Malloc returns null: len=231928233984 in C:\Users\blender\git\blender-vdev\blender.git\source\blender\blenlib\BLI_array.hh:425, total 3158231408

It seems there is just not enough memory `Malloc returns null: len=231928233984 in C:\Users\blender\git\blender-vdev\blender.git\source\blender\blenlib\BLI_array.hh:425, total 3158231408`
Iliya Katushenock added the
Interest
Geometry Nodes
Interest
Nodes & Physics
labels 2023-12-08 19:54:01 +01:00

Here it uses quite a bit memory ( > 48G) If I simplify the geometry, it doesn't crash, but loops nearly infinitely.
If I set vertices group input to 18, it takes 1 minute to complete, and time seems to be exponentially dependent.

I have simplified the file to quite great extent - 1.7K verts from 150K verts, but bool node stil hangs. At 684 verts it works, above that it doesn't. But the geonetry is so complex, that it probably is very confused about what to do...

Screenshot_2023-12-08_20-33-30.png

I don't think, that we consider boolean node to be universal "Just fix this mesh" node.

Here it uses quite a bit memory ( > 48G) If I simplify the geometry, it doesn't crash, but loops nearly infinitely. If I set vertices group input to 18, it takes 1 minute to complete, and time seems to be exponentially dependent. I have simplified the file to quite great extent - 1.7K verts from 150K verts, but bool node stil hangs. At 684 verts it works, above that it doesn't. But the geonetry is so complex, that it probably is very confused about what to do... ![Screenshot_2023-12-08_20-33-30.png](/attachments/1fe0f211-1a2d-4d5f-8d7f-fa019da5977d) I don't think, that we consider boolean node to be universal "Just fix this mesh" node.
Member

I can confirm the crash. Overall memory usage was around 13 GB during crash.

Here it uses quite a bit memory

Disable Self intersection and hole tolerant to improve the performance.

Stack trace:
blender.exe         :0x00007FF710CB8AA0  blender::Array<blender::SimpleMapSlot<std::pair<int,int>,blender::meshintersect::ITT_value>,1,blend
blender.exe         :0x00007FF710CB7B30  blender::Map<std::pair<int,int>,blender::meshintersect::ITT_value,0,blender::PythonProbingStrategy<
blender.exe         :0x00007FF710CB9920  blender::meshintersect::trimesh_nary_intersect
blender.exe         :0x00007FF710CBF260  blender::meshintersect::boolean_trimesh
blender.exe         :0x00007FF710CBEFE0  blender::meshintersect::boolean_mesh
blender.exe         :0x00007FF710BC1940  blender::meshintersect::direct_mesh_boolean
blender.exe         :0x00007FF70D1ADB70  blender::nodes::node_geo_boolean_cc::node_geo_exec
blender.exe         :0x00007FF70CD89B70  blender::nodes::LazyFunctionForGeometryNode::execute_impl
blender.exe         :0x00007FF71021BC30  blender::fn::lazy_function::Executor::run_node_task
blender.exe         :0x00007FF71021BF20  blender::fn::lazy_function::Executor::run_task
blender.exe         :0x00007FF71021A7C0  blender::fn::lazy_function::Executor::execute
blender.exe         :0x00007FF70CDA1130  blender::nodes::execute_geometry_nodes_on_geometry
blender.exe         :0x00007FF70CD08B50  blender::modifyGeometry
blender.exe         :0x00007FF70C8F9680  mesh_calc_modifiers
blender.exe         :0x00007FF70C8F9510  mesh_build_data
blender.exe         :0x00007FF70C8F9300  makeDerivedMesh
blender.exe         :0x00007FF70C8ABE50  BKE_object_handle_data_update
blender.exe         :0x00007FF70C8ABCE0  BKE_object_eval_uber_data
blender.exe         :0x00007FF70CA2F270  blender::deg::`anonymous namespace'::evaluate_node
blender.exe         :0x00007FF70CA2F0A0  blender::deg::`anonymous namespace'::deg_task_run_func
blender.exe         :0x00007FF70C9D5480  tbb::internal::function_task<Task>::execute
tbb.dll             :0x00007FFCF4F3F220  tbb::recursive_mutex::scoped_lock::internal_try_acquire
tbb.dll             :0x00007FFCF4F3F220  tbb::recursive_mutex::scoped_lock::internal_try_acquire
blender.exe         :0x00007FF70C9D5760  tbb::internal::task_group_base::wait
blender.exe         :0x00007FF70CA2F110  blender::deg::`anonymous namespace'::evaluate_graph_threaded_stage
blender.exe         :0x00007FF70CA2ED90  blender::deg::deg_evaluate_on_refresh
blender.exe         :0x00007FF70C694B00  scene_graph_update_tagged
blender.exe         :0x00007FF70CA68630  wm_event_do_notifiers
blender.exe         :0x00007FF70CA4C3D0  WM_main
blender.exe         :0x00007FF70C44DA40  main
blender.exe         :0x00007FF710B81224  __scrt_common_main_seh
KERNEL32.DLL        :0x00007FFD2F702560  BaseThreadInitThunk
ntdll.dll           :0x00007FFD2FFEAA50  RtlUserThreadStart
I can confirm the crash. Overall memory usage was around 13 GB during crash. > Here it uses quite a bit memory Disable Self intersection and hole tolerant to improve the performance. ``` Stack trace: blender.exe :0x00007FF710CB8AA0 blender::Array<blender::SimpleMapSlot<std::pair<int,int>,blender::meshintersect::ITT_value>,1,blend blender.exe :0x00007FF710CB7B30 blender::Map<std::pair<int,int>,blender::meshintersect::ITT_value,0,blender::PythonProbingStrategy< blender.exe :0x00007FF710CB9920 blender::meshintersect::trimesh_nary_intersect blender.exe :0x00007FF710CBF260 blender::meshintersect::boolean_trimesh blender.exe :0x00007FF710CBEFE0 blender::meshintersect::boolean_mesh blender.exe :0x00007FF710BC1940 blender::meshintersect::direct_mesh_boolean blender.exe :0x00007FF70D1ADB70 blender::nodes::node_geo_boolean_cc::node_geo_exec blender.exe :0x00007FF70CD89B70 blender::nodes::LazyFunctionForGeometryNode::execute_impl blender.exe :0x00007FF71021BC30 blender::fn::lazy_function::Executor::run_node_task blender.exe :0x00007FF71021BF20 blender::fn::lazy_function::Executor::run_task blender.exe :0x00007FF71021A7C0 blender::fn::lazy_function::Executor::execute blender.exe :0x00007FF70CDA1130 blender::nodes::execute_geometry_nodes_on_geometry blender.exe :0x00007FF70CD08B50 blender::modifyGeometry blender.exe :0x00007FF70C8F9680 mesh_calc_modifiers blender.exe :0x00007FF70C8F9510 mesh_build_data blender.exe :0x00007FF70C8F9300 makeDerivedMesh blender.exe :0x00007FF70C8ABE50 BKE_object_handle_data_update blender.exe :0x00007FF70C8ABCE0 BKE_object_eval_uber_data blender.exe :0x00007FF70CA2F270 blender::deg::`anonymous namespace'::evaluate_node blender.exe :0x00007FF70CA2F0A0 blender::deg::`anonymous namespace'::deg_task_run_func blender.exe :0x00007FF70C9D5480 tbb::internal::function_task<Task>::execute tbb.dll :0x00007FFCF4F3F220 tbb::recursive_mutex::scoped_lock::internal_try_acquire tbb.dll :0x00007FFCF4F3F220 tbb::recursive_mutex::scoped_lock::internal_try_acquire blender.exe :0x00007FF70C9D5760 tbb::internal::task_group_base::wait blender.exe :0x00007FF70CA2F110 blender::deg::`anonymous namespace'::evaluate_graph_threaded_stage blender.exe :0x00007FF70CA2ED90 blender::deg::deg_evaluate_on_refresh blender.exe :0x00007FF70C694B00 scene_graph_update_tagged blender.exe :0x00007FF70CA68630 wm_event_do_notifiers blender.exe :0x00007FF70CA4C3D0 WM_main blender.exe :0x00007FF70C44DA40 main blender.exe :0x00007FF710B81224 __scrt_common_main_seh KERNEL32.DLL :0x00007FFD2F702560 BaseThreadInitThunk ntdll.dll :0x00007FFD2FFEAA50 RtlUserThreadStart ```

Malloc returns null: len=231928233984 in C:\Users\blender\git\blender-vdev\blender.git\source\blender\blenlib\BLI_array.hh:425, total 3158783728
Still crash due to not enough memory.

`Malloc returns null: len=231928233984 in C:\Users\blender\git\blender-vdev\blender.git\source\blender\blenlib\BLI_array.hh:425, total 3158783728` Still crash due to not enough memory.
Member

I can reproduce it. It also uses up my 48GB of RAM and then crashes because it's out of memory. I couldn't spot any concrete bug though. The mesh just seems to trigger a relatively bad case in the boolean algorithm. There may be hope that this same worst case does not exist in a newer boolean algorithm, but for now I don't see much reason to keep this report open.

I'm relatively sure that the windows task manager showing that only 20 out of 64 GB are used is not showing the full picture. Maybe the application crashes before the task manager updates, don't know for sure.

I can reproduce it. It also uses up my 48GB of RAM and then crashes because it's out of memory. I couldn't spot any concrete bug though. The mesh just seems to trigger a relatively bad case in the boolean algorithm. There may be hope that this same worst case does not exist in a newer boolean algorithm, but for now I don't see much reason to keep this report open. I'm relatively sure that the windows task manager showing that only 20 out of 64 GB are used is not showing the full picture. Maybe the application crashes before the task manager updates, don't know for sure.
Blender Bot added
Status
Archived
and removed
Status
Confirmed
labels 2024-03-01 22:52:41 +01:00
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
5 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#115953
No description provided.