100% repro errors and crash using BMesh.free() in conjunction with bmesh.from_edit_mesh() and bmesh.update_edit_mesh() #39121

Closed
opened 9 years ago by vravCodyBurrow · 8 comments

System Information
Linux Mint 16, nvidia GTX 460 (not sure if relevant

Blender Version
Broken: 2.70-RC1 and 2.69
Worked: ?

Python snippet:


import bmesh, bpy
mesh = bpy.context.active_object.data
bm = bmesh.from_edit_mesh(mesh)

for edge in bm.edges:
    edge.select = False

bmesh.update_edit_mesh(mesh)
bm.free()

REPRO STEPS:

  • Run script, it works
  • Run script again, check console
  • Run script again, check console
  • Tab out of edit mode, then back in
  • Run script again, crashes Blender
  • If bm.free() is removed, no errors
**System Information** Linux Mint 16, nvidia GTX 460 (not sure if relevant **Blender Version** Broken: 2.70-RC1 and 2.69 Worked: ? Python snippet: ``` import bmesh, bpy mesh = bpy.context.active_object.data bm = bmesh.from_edit_mesh(mesh) for edge in bm.edges: edge.select = False bmesh.update_edit_mesh(mesh) bm.free() ``` REPRO STEPS: - Run script, it works - Run script again, check console - Run script again, check console - Tab out of edit mode, then back in - Run script again, crashes Blender - If bm.free() is removed, no errors
Poster

Changed status to: 'Open'

Changed status to: 'Open'
Poster

Added subscriber: @vravCodyBurrow

Added subscriber: @vravCodyBurrow
Poster

Attaching 27RC_bmesh_crash.blend with snippet loaded and ready to load.

Error output data included, here for convenience...

After first fail:

Traceback (most recent call last):
  File "/home/vrav/Documents/27RC_bmesh_crash.blend/Text", line 6, in <module>
ReferenceError: BMesh data of type BMesh has been removed
Error: Python script fail, look in the console for now...

After second fail:

Traceback (most recent call last):
  File "/home/vrav/Documents/27RC_bmesh_crash.blend/Text", line 6, in <module>
AttributeError: 'bytes' object has no attribute 'edges'
Error: Python script fail, look in the console for now...

Segmentation fault crash dump:

 Blender 2.70 (sub 0), Commit date: 2014-03-05 18:37, Hash 19f7f9a
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.text.run_script()  # Operator
bpy.ops.text.run_script()  # Operator
Python script fail, look in the console for now...  # Error
bpy.ops.text.run_script()  # Operator
Python script fail, look in the console for now...  # Error
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.object.editmode_toggle()  # Operator

 backtrace
./blender() [0xfbe704]
./blender() [0xfbe95a]
/lib/x86_64-linux-gnu/libc.so.6(+0x36ff0) [0x7f971bc53ff0]
./blender(PyObject_Malloc+0x5c) [0x2bec96c]
./blender(_PyObject_New+0xd) [0x2be9bbd]
./blender(BPy_BMEdge_CreatePyObject+0x74) [0x1864db4]
./blender(PyEval_EvalFrameEx+0x327f) [0x2c501ff]
./blender(PyEval_EvalCodeEx+0x83b) [0x2c4ceab]
./blender(PyEval_EvalCode+0x3b) [0x2c4cf7b]
./blender() [0x18571aa]
./blender() [0x120757c]
./blender() [0xfda062]
./blender() [0xfda560]
./blender() [0x129cb3a]
./blender() [0x12ac22b]
./blender() [0xfdb8c5]
./blender() [0xfdbbd6]
./blender(wm_event_do_handlers+0x19a) [0xfdbeca]
./blender(WM_main+0x18) [0xfc5fb8]
./blender(main+0x501) [0xfc0f8a]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f971bc3ede5]
./blender() [0xedace5]

Attaching 27RC_bmesh_crash.blend with snippet loaded and ready to load. Error output data included, here for convenience... After first fail: ``` Traceback (most recent call last): File "/home/vrav/Documents/27RC_bmesh_crash.blend/Text", line 6, in <module> ReferenceError: BMesh data of type BMesh has been removed Error: Python script fail, look in the console for now... ``` After second fail: ``` Traceback (most recent call last): File "/home/vrav/Documents/27RC_bmesh_crash.blend/Text", line 6, in <module> AttributeError: 'bytes' object has no attribute 'edges' Error: Python script fail, look in the console for now... ``` Segmentation fault crash dump: ``` Blender 2.70 (sub 0), Commit date: 2014-03-05 18:37, Hash 19f7f9a bpy.ops.object.editmode_toggle() # Operator bpy.ops.text.run_script() # Operator bpy.ops.text.run_script() # Operator Python script fail, look in the console for now... # Error bpy.ops.text.run_script() # Operator Python script fail, look in the console for now... # Error bpy.ops.object.editmode_toggle() # Operator bpy.ops.object.editmode_toggle() # Operator backtrace ./blender() [0xfbe704] ./blender() [0xfbe95a] /lib/x86_64-linux-gnu/libc.so.6(+0x36ff0) [0x7f971bc53ff0] ./blender(PyObject_Malloc+0x5c) [0x2bec96c] ./blender(_PyObject_New+0xd) [0x2be9bbd] ./blender(BPy_BMEdge_CreatePyObject+0x74) [0x1864db4] ./blender(PyEval_EvalFrameEx+0x327f) [0x2c501ff] ./blender(PyEval_EvalCodeEx+0x83b) [0x2c4ceab] ./blender(PyEval_EvalCode+0x3b) [0x2c4cf7b] ./blender() [0x18571aa] ./blender() [0x120757c] ./blender() [0xfda062] ./blender() [0xfda560] ./blender() [0x129cb3a] ./blender() [0x12ac22b] ./blender() [0xfdb8c5] ./blender() [0xfdbbd6] ./blender(wm_event_do_handlers+0x19a) [0xfdbeca] ./blender(WM_main+0x18) [0xfc5fb8] ./blender(main+0x501) [0xfc0f8a] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f971bc3ede5] ./blender() [0xedace5] ```
Collaborator

Added subscriber: @florianfelix

Added subscriber: @florianfelix
Collaborator

Same thing:

import bmesh, bpy
mesh=bpy.context.object.data

bm = bmesh.from_edit_mesh(mesh)

#sort verts after z coordinate

sort = sorted(bm.verts, key=lambda v: v.co.z)

#select lowest

sort[0].select = True

bmesh.update_edit_mesh(mesh)

bm.free()


'''
This codes works the first time it is run.
Produces an error on subsequent runs.
Then crashes on autocomplete in the console.
'''

# Same thing: ``` import bmesh, bpy mesh=bpy.context.object.data bm = bmesh.from_edit_mesh(mesh) ``` #sort verts after z coordinate ``` sort = sorted(bm.verts, key=lambda v: v.co.z) ``` #select lowest ``` sort[0].select = True bmesh.update_edit_mesh(mesh) bm.free() ''' This codes works the first time it is run. Produces an error on subsequent runs. Then crashes on autocomplete in the console. ''' ```
mont29 commented 9 years ago
Owner

Changed status from 'Open' to: 'Archived'

Changed status from 'Open' to: 'Archived'
mont29 closed this issue 9 years ago
mont29 self-assigned this 9 years ago
mont29 commented 9 years ago
Owner

bmesh.from_edit_mesh() does not create a bmesh, it returns the one associated with given mesh (that’s why mesh has to be in EditMode, else it has no bmesh associated with it). So the bmesh you get must never be freed!!! This is internal Blender data, created when entering EditMode and freed when leaving it.

Not a bug, closing.

`bmesh.from_edit_mesh()` does not **create** a bmesh, it **returns** the one associated with given mesh (that’s why mesh has to be in EditMode, else it has no bmesh associated with it). So the bmesh you get **must never be freed!!!** This is internal Blender data, created when entering EditMode and freed when leaving it. Not a bug, closing.
Collaborator

thanks for clarification.
Sorry for false positive

thanks for clarification. Sorry for false positive
Sign in to join this conversation.
No Label
good first issue
legacy module/Animation & Rigging
legacy module/Core
legacy module/Eevee & Viewport
legacy module/Grease Pencil
legacy module/Modeling
legacy module/Nodes & Physics
legacy module/Pipeline, Assets & IO
legacy module/Platforms, Builds, Tests & Devices
legacy module/Python API
legacy module/Rendering & Cycles
legacy module/Sculpt, Paint & Texture
legacy module/User Interface
legacy module/VFX & Video
legacy project/2.81
legacy project/2.82
legacy project/2.83
legacy project/2.90
legacy project/2.92
legacy project/2.93
legacy project/3.0
legacy project/3.1
legacy project/3.2
legacy project/3.4
legacy project/Add-ons (BF-Blender)
legacy project/Add-ons (Community)
legacy project/Alembic
legacy project/Animation & Rigging
legacy project/Asset Browser
legacy project/Automated Testing
legacy project/BF Blender: 2.8
legacy project/BF Blender: After Release
legacy project/BF Blender: Next
legacy project/BF Blender: Regressions
legacy project/BF Blender: Unconfirmed
legacy project/Blender 2.70
legacy project/Blender Cloud
legacy project/Code Quest
legacy project/Collada
legacy project/Compositing
legacy project/Core
legacy project/Cycles
legacy project/Datablocks and Libraries
legacy project/Dependency Graph
legacy project/Documentation
legacy project/EEVEE & Viewport
legacy project/Freestyle
legacy project/Game Data Conversion
legacy project/Game Engine
legacy project/Game Physics
legacy project/Game Python
legacy project/Game UI
legacy project/Geometry Nodes
legacy project/Good First Issue
legacy project/Grease Pencil
legacy project/Images & Movies
legacy project/Import/Export
legacy project/Infrastructure: Blender Buildbot
legacy project/Infrastructure: Blender Web Assets
legacy project/Infrastructure: Websites
legacy project/Modeling
legacy project/Modifiers
legacy project/Motion Tracking
legacy project/Nodes
legacy project/Nodes & Physics
legacy project/OpenGL Error
legacy project/Overrides
legacy project/Papercut
legacy project/Physics
legacy project/Pillar
legacy project/Pipeline, Assets & I/O
legacy project/Platform: Linux
legacy project/Platform: macOS
legacy project/Platforms, Builds, Tests & Devices
legacy project/Platform: Windows
legacy project/Python API
legacy project/Render & Cycles
legacy project/Render Pipeline
legacy project/Sculpt, Paint & Texture
legacy project/Straightforward Issue
legacy project/Text Editor
legacy project/Tracker Curfew
legacy project/Translations
legacy project/USD
legacy project/User Interface
legacy project/UV Editing
legacy project/VFX & Video
legacy project/Video Sequencer
legacy project/Virtual Reality
papercut
Priority › High
Priority › Low
Priority › Normal
Priority › Unbreak Now!
Status › Archived
Status › Confirmed
Status › Duplicate
Status › Needs Information from Developers
Status › Needs Information from User
Status › Needs Triage
Status › Resolved
straightforward issue
Type › Bug
Type › Design
Type › Known Issue
Type › Patch
Type › Report
Type › To Do
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender-addons#39121
Loading…
There is no content yet.