Crash when a multi-input Geometry socket has at least one uninitialized noodle in 3.0 alpha #89122

Closed
opened 2021-06-13 22:37:13 +02:00 by Fen · 13 comments

System Information
Operating system: Linux-5.8.0-55-generic-x86_64-with-glibc2.31 64 Bits
Graphics card: Quadro K1000M/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 390.143

Blender Version
Broken: version: 3.0.0 Alpha, branch: master, commit date: 2021-06-13 05:13, hash: 0f68e5c30a
Worked: 2.93 does not crash

This also crashes on an older version of the 3.0.0 Alpha -- blender-3.0.0-alpha+master.f5d14e36e8a0-linux.x86_64-release -- although I was also getting some unreachable code warnings in some cases.

Short description of error
Some geometry nodes accept multiple Geometry inputs in one socket. If such a multi-input socket has two or more noodles going into it, and at least one of the noodles is uninitialized (from a Group Input where an instance of the group doesn't have anything plugged in), Blender crashes.

Exact steps for others to reproduce the error

  1. Go into the Geometry Nodes tab
  2. Create a new Geometry Nodes modifier on the starting cube
  3. Create a Boolean node. Don't connect it to anything.
  4. Press ctrl-g to make a new group out of this node.
  5. Press ctrl-tab to exit the group view. Connect the Geometry output of the group to the Group Output
  6. Press tab to re-enter the group view.
  7. Drag from Geometry 1 on the Group Input node to Geometry 1 on the Boolean node
  8. Crash

alternatively

  1. Drag from Geometry 1 on the Group Input node to Geometry 2 on the Boolean node

alternatively

  1. Create a new node that outputs Geometry, and plug it into Geometry 2 on the Boolean node

The output of the Boolean mode must be plugged into the Group Output node of the modifier. If it's disconnected, nothing happens, presumably because it isn't evaluated.

I've attached a file that ends at step 6. You should be able to immediately crash Blender with it. I've also attached the crash logs.

geometry-crash.blend

geometry-crash.crash.txt

**System Information** Operating system: Linux-5.8.0-55-generic-x86_64-with-glibc2.31 64 Bits Graphics card: Quadro K1000M/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 390.143 **Blender Version** Broken: version: 3.0.0 Alpha, branch: master, commit date: 2021-06-13 05:13, hash: `0f68e5c30a` Worked: 2.93 does not crash This also crashes on an older version of the 3.0.0 Alpha -- `blender-3.0.0-alpha+master.f5d14e36e8a0-linux.x86_64-release` -- although I was also getting some unreachable code warnings in some cases. **Short description of error** Some geometry nodes accept multiple Geometry inputs in one socket. If such a multi-input socket has two or more noodles going into it, and at least one of the noodles is uninitialized (from a Group Input where an instance of the group doesn't have anything plugged in), Blender crashes. **Exact steps for others to reproduce the error** 1. Go into the *Geometry Nodes* tab 2. Create a new Geometry Nodes modifier on the starting cube 3. Create a Boolean node. Don't connect it to anything. 4. Press ctrl-g to make a new group out of this node. 5. Press ctrl-tab to exit the group view. Connect the *Geometry* output of the group to the Group Output 6. Press tab to re-enter the group view. 7. Drag from *Geometry 1* on the Group Input node to *Geometry 1* on the Boolean node 8. Crash *alternatively* 7. Drag from *Geometry 1* on the Group Input node to *Geometry 2* on the Boolean node *alternatively* 7. Create a new node that outputs Geometry, and plug it into *Geometry 2* on the Boolean node The output of the Boolean mode must be plugged into the Group Output node of the modifier. If it's disconnected, nothing happens, presumably because it isn't evaluated. I've attached a file that ends at step 6. You should be able to immediately crash Blender with it. I've also attached the crash logs. [geometry-crash.blend](https://archive.blender.org/developer/F10169961/geometry-crash.blend) [geometry-crash.crash.txt](https://archive.blender.org/developer/F10169963/geometry-crash.crash.txt)
Author

Added subscriber: @chemicalcrux

Added subscriber: @chemicalcrux

#89296 was marked as duplicate of this issue

#89296 was marked as duplicate of this issue

Added subscriber: @iss

Added subscriber: @iss

Changed status from 'Needs Triage' to: 'Needs User Info'

Changed status from 'Needs Triage' to: 'Needs User Info'

Please check if this happens with latest alpha, I was not able to reproduce the crash.

In step 4 group has already all group inputs/outputs connected to boolean node, so in step 7 should I drag another noodle?

Please check if this happens with latest alpha, I was not able to reproduce the crash. In step 4 group has already all group inputs/outputs connected to boolean node, so in step 7 should I drag another noodle?
Author

Correct, all of the wires will already be connected. Dragging any wire from the Group Input node into the Geometry 1 input on the Boolean node causes a crash for me.

image.png

I'm working with the head of the master branch right now (commit 0f68e5c30a7fe91e9393415a058933d7c5dcf32d). My internet is very slow right now, so I can try grabbing a pre-compiled alpha off of the website in two days, once I'm somewhere faster again.

Correct, all of the wires will already be connected. Dragging any wire from the Group Input node into the *Geometry 1* input on the Boolean node causes a crash for me. ![image.png](https://archive.blender.org/developer/F10170283/image.png) I'm working with the head of the master branch right now (commit `0f68e5c30a7fe91e9393415a058933d7c5dcf32d`). My internet is very slow right now, so I can try grabbing a pre-compiled alpha off of the website in two days, once I'm somewhere faster again.
Author

The crash was first introduced by b084b57fbf, which brought in a new geometry nodes evaluator. It doesn't crash before that point, and it consistently crashes after that point (although I do get an extra unreachable code error on that commit).

Also, I did manage to pull down the latest alpha -- 54a03d4247cc -- and I got the crash.

One more note: It looks like I was mistaken about the cause of the crash. If I leave the multi-input unconnected, it doesn't crash when a noodle gets pushed down into it.

Instead, it appears that it just crashes whenever a multi-input Geometry socket has at least two noodles going into it and where one of them is uninitialized.

I've updated the task accordingly.

The crash was first introduced by b084b57fbf6d2b6c2a1adb2192f5d82581cede5c, which brought in a new geometry nodes evaluator. It doesn't crash before that point, and it consistently crashes after that point (although I do get an extra unreachable code error on that commit). Also, I did manage to pull down the latest alpha -- `54a03d4247cc` -- and I got the crash. One more note: It looks like I was mistaken about the cause of the crash. If I leave the multi-input unconnected, it doesn't crash when a noodle gets pushed down into it. Instead, it appears that it just crashes whenever a multi-input Geometry socket has at least two noodles going into it *and* where one of them is uninitialized. I've updated the task accordingly.
Fen changed title from Crash when an uninitialized geometry noodle is involved in a move from a single-input socket to a multi-input socket in 3.0 alpha to Crash when a multi-input Geometry socket has at least one uninitialized noodle in 3.0 alpha 2021-06-14 06:13:07 +02:00
Member

Added subscriber: @brunnerh

Added subscriber: @brunnerh
Member

Changed status from 'Needs User Info' to: 'Confirmed'

Changed status from 'Needs User Info' to: 'Confirmed'
Member

Added subscriber: @PratikPB2123

Added subscriber: @PratikPB2123
Member

Can confirm the crash for 3.0.0 (033641aa74) and also for 2.93.0LTS.

blender.exe         :0x00007FF6FEFE0110  blender::move_assign_container<blender::Array<blender::SimpleMapSlot<enum GeometryComponentType,ble
blender.exe         :0x00007FF6FF03ED60  blender::Map<enum GeometryComponentType,blender::UserCounter<GeometryComponent>,4,blender::PythonPr
blender.exe         :0x00007FF6FF5A73F0  blender::uninitialized_move_n<GeometrySet>
blender.exe         :0x00007FF6FF53F2B0  blender::modifiers::geometry_nodes::GeometryNodesEvaluator::execute
blender.exe         :0x00007FF6FF53EDF0  blender::modifiers::geometry_nodes::evaluate_geometry_nodes
blender.exe         :0x00007FF6FF47A020  compute_geometry
blender.exe         :0x00007FF6FF47B4C0  modifyGeometry
blender.exe         :0x00007FF6FF251B00  modifier_modify_mesh_and_geometry_set
blender.exe         :0x00007FF6FF250700  mesh_calc_modifiers
blender.exe         :0x00007FF6FF250400  mesh_build_data
blender.exe         :0x00007FF6FF252CF0  makeDerivedMesh
blender.exe         :0x00007FF6FF22E1D0  BKE_object_handle_data_update
blender.exe         :0x00007FF6FF22DF00  BKE_object_eval_uber_data
blender.exe         :0x00007FF70381FC50  blender::deg::`anonymous namespace'::evaluate_node
blender.exe         :0x00007FF70381FC00  blender::deg::`anonymous namespace'::deg_task_run_func
blender.exe         :0x00007FF703CA58A0  tbb::internal::function_task<Task>::execute
tbb.dll             :0x00007FFDA389F690  tbb::recursive_mutex::scoped_lock::internal_try_acquire
tbb.dll             :0x00007FFDA389F690  tbb::recursive_mutex::scoped_lock::internal_try_acquire
tbb.dll             :0x00007FFDA38951B0  tbb::interface7::internal::isolate_within_arena
tbb.dll             :0x00007FFDA389A470  tbb::task_scheduler_init::terminate
tbb.dll             :0x00007FFDA389DBD0  tbb::thread_bound_filter::try_process_item
tbb.dll             :0x00007FFDA389DBD0  tbb::thread_bound_filter::try_process_item
ucrtbase.dll        :0x00007FFDABDC1B20  configthreadlocale
KERNEL32.DLL        :0x00007FFDAC467020  BaseThreadInitThunk
ntdll.dll           :0x00007FFDADFC2630  RtlUserThreadStart```
Can confirm the crash for 3.0.0 (`033641aa74`) and also for 2.93.0LTS. ```Stack trace: blender.exe :0x00007FF6FEFE0110 blender::move_assign_container<blender::Array<blender::SimpleMapSlot<enum GeometryComponentType,ble blender.exe :0x00007FF6FF03ED60 blender::Map<enum GeometryComponentType,blender::UserCounter<GeometryComponent>,4,blender::PythonPr blender.exe :0x00007FF6FF5A73F0 blender::uninitialized_move_n<GeometrySet> blender.exe :0x00007FF6FF53F2B0 blender::modifiers::geometry_nodes::GeometryNodesEvaluator::execute blender.exe :0x00007FF6FF53EDF0 blender::modifiers::geometry_nodes::evaluate_geometry_nodes blender.exe :0x00007FF6FF47A020 compute_geometry blender.exe :0x00007FF6FF47B4C0 modifyGeometry blender.exe :0x00007FF6FF251B00 modifier_modify_mesh_and_geometry_set blender.exe :0x00007FF6FF250700 mesh_calc_modifiers blender.exe :0x00007FF6FF250400 mesh_build_data blender.exe :0x00007FF6FF252CF0 makeDerivedMesh blender.exe :0x00007FF6FF22E1D0 BKE_object_handle_data_update blender.exe :0x00007FF6FF22DF00 BKE_object_eval_uber_data blender.exe :0x00007FF70381FC50 blender::deg::`anonymous namespace'::evaluate_node blender.exe :0x00007FF70381FC00 blender::deg::`anonymous namespace'::deg_task_run_func blender.exe :0x00007FF703CA58A0 tbb::internal::function_task<Task>::execute tbb.dll :0x00007FFDA389F690 tbb::recursive_mutex::scoped_lock::internal_try_acquire tbb.dll :0x00007FFDA389F690 tbb::recursive_mutex::scoped_lock::internal_try_acquire tbb.dll :0x00007FFDA38951B0 tbb::interface7::internal::isolate_within_arena tbb.dll :0x00007FFDA389A470 tbb::task_scheduler_init::terminate tbb.dll :0x00007FFDA389DBD0 tbb::thread_bound_filter::try_process_item tbb.dll :0x00007FFDA389DBD0 tbb::thread_bound_filter::try_process_item ucrtbase.dll :0x00007FFDABDC1B20 configthreadlocale KERNEL32.DLL :0x00007FFDAC467020 BaseThreadInitThunk ntdll.dll :0x00007FFDADFC2630 RtlUserThreadStart```

This issue was referenced by 4968a0bdf9

This issue was referenced by 4968a0bdf9ec16134a545678eabb922f04ed8315
Member

Changed status from 'Confirmed' to: 'Resolved'

Changed status from 'Confirmed' to: 'Resolved'
Jacques Lucke self-assigned this 2021-06-21 12:16:45 +02: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#89122
No description provided.