Segfault when there is a depsgraph handler that reads the active_object #1

Open
opened 2024-07-05 08:50:50 +02:00 by Atamert Ölçgen · 0 comments

If I add a basic depsgraph handler that just accesses the active_object, then create a surface using BSurfaces, Blender segfaults.

Here is an MRE:

import bpy

def handler(scene, depsgraph):
    obj = None
    if bpy.context.mode == "OBJECT" and bpy.context.selected_objects and bpy.context.active_object.type == "MESH":
        obj = bpy.context.active_object
    print(obj)

bpy.app.handlers.depsgraph_update_post.append(handler)

Crash report:

$ cat /tmp/bsurfaces_crash_test.crash.txt 
# Blender 4.2.0, Commit date: 2024-07-03 22:45, Hash 94c184d2a7ef
bpy.ops.text.run_script()  # Operator
bpy.ops.object.shade_flat()  # Operator
bpy.ops.object.select_all(action='DESELECT')  # Operator
bpy.ops.mesh.surfsk_init()  # Operator
bpy.ops.object.shade_flat()  # Operator
bpy.ops.object.select_all(action='DESELECT')  # Operator
bpy.ops.object.shade_flat()  # Operator
There aren't any strokes attached to the object  # Warning
bpy.ops.gpencil.surfsk_add_annotation()  # Operator
bpy.ops.object.shade_flat()  # Operator
bpy.ops.object.select_all(action='DESELECT')  # Operator
bpy.ops.object.shade_flat()  # Operator
bpy.ops.object.duplicate()  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.curve.select_all(action='DESELECT')  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.object.select_all(action='DESELECT')  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.object.select_all(action='DESELECT')  # Operator
bpy.ops.object.duplicate()  # Operator
bpy.ops.object.duplicate()  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.curve.select_all(action='SELECT')  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.select_all(action='DESELECT')  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.object.convert(target='MESH', keep_original=False)  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.mesh.select_all(action='SELECT')  # Operator
bpy.ops.mesh.remove_doubles(threshold=0.0251525)  # Operator
bpy.ops.mesh.select_all(action='DESELECT')  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.mesh.delete(type='VERT')  # Operator
bpy.ops.mesh.select_all(action='SELECT')  # Operator
bpy.ops.mesh.remove_doubles(threshold=0.10061)  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.object.select_all(action='DESELECT')  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.curve.select_all(action='DESELECT')  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.smooth()  # Operator
bpy.ops.curve.select_all(action='DESELECT')  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.curve.select_all(action='INVERT')  # Operator
bpy.ops.curve.delete(type='VERT')  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.curve.select_all(action='DESELECT')  # Operator
bpy.ops.object.editmode_toggle()  # Operator
bpy.ops.object.delete()  # Operator

# backtrace
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0xf3cd70]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x842d40]
/lib/x86_64-linux-gnu/libc.so.6(+0x3c050) [0x7fa88ee5b050]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x145849c]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x160b3af]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x160f2a0]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender(PyObject_GetAttr+0x72) [0x7babf2]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender(_PyEval_EvalFrameDefault+0xfa1) [0x7edf31]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x7ec437]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x15f994f]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x8519d5]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x851a97]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x9f2ad3]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x14ca333]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x1461f52]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x1611569]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender(_PyObject_MakeTpCall+0x75) [0x7931a5]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender(_PyEval_EvalFrameDefault+0x665) [0x7ed5f5]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x7ec437]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender(_PyObject_Call_Prepend+0xe0) [0x794040]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x57b75b0]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender(_PyObject_MakeTpCall+0x75) [0x7931a5]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender(_PyEval_EvalFrameDefault+0x665) [0x7ed5f5]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x7ec437]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x1611bbe]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x15d1717]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0xf8c781]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0xf8ce71]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0xf8d39e]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x1703b41]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x1714c05]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0xf91315]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0xf92b2d]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0xf93603]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0xf84830]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x72ee64]
/lib/x86_64-linux-gnu/libc.so.6(+0x2724a) [0x7fa88ee4624a]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x85) [0x7fa88ee46305]
/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x83e5de]

# Python backtrace
  File "/home/muhuk/tmp/bsurfaces_crash_test/bsurfaces_crash_test.blend/Text", line 5 in handler
  File "/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/4.2/scripts/modules/bpy/ops.py", line 68 in _view_layer_update
  File "/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/4.2/scripts/modules/bpy/ops.py", line 112 in __call__
  File "/home/muhuk/.config/blender/4.2/extensions/blender_org/bsurfaces_gpl_edition/__init__.py", line 1395 in crosshatch_surface_invoke
  File "/home/muhuk/.config/blender/4.2/extensions/blender_org/bsurfaces_gpl_edition/__init__.py", line 3347 in invoke
If I add a basic depsgraph handler that just accesses the `active_object`, then create a surface using BSurfaces, Blender segfaults. Here is an MRE: ```python import bpy def handler(scene, depsgraph): obj = None if bpy.context.mode == "OBJECT" and bpy.context.selected_objects and bpy.context.active_object.type == "MESH": obj = bpy.context.active_object print(obj) bpy.app.handlers.depsgraph_update_post.append(handler) ``` Crash report: ```bash $ cat /tmp/bsurfaces_crash_test.crash.txt # Blender 4.2.0, Commit date: 2024-07-03 22:45, Hash 94c184d2a7ef bpy.ops.text.run_script() # Operator bpy.ops.object.shade_flat() # Operator bpy.ops.object.select_all(action='DESELECT') # Operator bpy.ops.mesh.surfsk_init() # Operator bpy.ops.object.shade_flat() # Operator bpy.ops.object.select_all(action='DESELECT') # Operator bpy.ops.object.shade_flat() # Operator There aren't any strokes attached to the object # Warning bpy.ops.gpencil.surfsk_add_annotation() # Operator bpy.ops.object.shade_flat() # Operator bpy.ops.object.select_all(action='DESELECT') # Operator bpy.ops.object.shade_flat() # Operator bpy.ops.object.duplicate() # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.curve.select_all(action='DESELECT') # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.object.select_all(action='DESELECT') # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.object.select_all(action='DESELECT') # Operator bpy.ops.object.duplicate() # Operator bpy.ops.object.duplicate() # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.curve.select_all(action='SELECT') # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.select_all(action='DESELECT') # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.object.convert(target='MESH', keep_original=False) # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.mesh.select_all(action='SELECT') # Operator bpy.ops.mesh.remove_doubles(threshold=0.0251525) # Operator bpy.ops.mesh.select_all(action='DESELECT') # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.mesh.delete(type='VERT') # Operator bpy.ops.mesh.select_all(action='SELECT') # Operator bpy.ops.mesh.remove_doubles(threshold=0.10061) # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.object.select_all(action='DESELECT') # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.curve.select_all(action='DESELECT') # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.smooth() # Operator bpy.ops.curve.select_all(action='DESELECT') # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.curve.select_all(action='INVERT') # Operator bpy.ops.curve.delete(type='VERT') # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.curve.select_all(action='DESELECT') # Operator bpy.ops.object.editmode_toggle() # Operator bpy.ops.object.delete() # Operator # backtrace /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0xf3cd70] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x842d40] /lib/x86_64-linux-gnu/libc.so.6(+0x3c050) [0x7fa88ee5b050] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x145849c] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x160b3af] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x160f2a0] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender(PyObject_GetAttr+0x72) [0x7babf2] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender(_PyEval_EvalFrameDefault+0xfa1) [0x7edf31] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x7ec437] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x15f994f] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x8519d5] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x851a97] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x9f2ad3] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x14ca333] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x1461f52] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x1611569] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender(_PyObject_MakeTpCall+0x75) [0x7931a5] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender(_PyEval_EvalFrameDefault+0x665) [0x7ed5f5] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x7ec437] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender(_PyObject_Call_Prepend+0xe0) [0x794040] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x57b75b0] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender(_PyObject_MakeTpCall+0x75) [0x7931a5] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender(_PyEval_EvalFrameDefault+0x665) [0x7ed5f5] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x7ec437] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x1611bbe] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x15d1717] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0xf8c781] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0xf8ce71] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0xf8d39e] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x1703b41] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x1714c05] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0xf91315] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0xf92b2d] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0xf93603] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0xf84830] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x72ee64] /lib/x86_64-linux-gnu/libc.so.6(+0x2724a) [0x7fa88ee4624a] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x85) [0x7fa88ee46305] /home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/blender() [0x83e5de] # Python backtrace File "/home/muhuk/tmp/bsurfaces_crash_test/bsurfaces_crash_test.blend/Text", line 5 in handler File "/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/4.2/scripts/modules/bpy/ops.py", line 68 in _view_layer_update File "/home/muhuk/lib/blender/blender-4.2.0-beta+v42.94c184d2a7ef-linux.x86_64-release/4.2/scripts/modules/bpy/ops.py", line 112 in __call__ File "/home/muhuk/.config/blender/4.2/extensions/blender_org/bsurfaces_gpl_edition/__init__.py", line 1395 in crosshatch_surface_invoke File "/home/muhuk/.config/blender/4.2/extensions/blender_org/bsurfaces_gpl_edition/__init__.py", line 3347 in invoke ```
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 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: extensions/mesh_bsurfaces#1
No description provided.