Maniphest T31634

bpy.ops.transform.edge_slide() segfault
Closed, Resolved

Assigned To
None
Authored By
Philipp Oeser (lichtwerk)
May 29 2012, 5:28 PM
Tags
  • BF Blender
  • Add-ons (BF-Blender)
Subscribers
Brecht Van Lommel (brecht)
Philipp Oeser (lichtwerk)

Description

Hi,

calling "bpy.ops.transform.edge_slide()" from a python script will crash blender.
[I've attached a little script that demonstrates this when run on a default cube].

Here is a backtrace:
===================================
(gdb) backtrace
#0 0x0000000001078360 in copy_m4_m4 ()
#1 0x00000000010784d7 in mult_m4_m4m4 ()
#2 0x000000000093bc47 in ED_view3d_ob_project_mat_get ()
#3 0x000000000095bae8 in createSlideVerts ()
#4 0x00000000009628da in initEdgeSlide ()
#5 0x000000000096381d in initTransform ()
#6 0x000000000096fbb3 in transformops_data.part.0 ()
#7 0x000000000096fc77 in transform_exec ()
#8 0x00000000008d11af in wm_operator_invoke ()
#9 0x00000000008d1af2 in WM_operator_call_py ()
#10 0x000000000101f501 in pyop_call ()
#11 0x0000003c3d4e195f in PyEval_EvalFrameEx ()
from /usr/lib64/libpython3.2mu.so.1.0
#12 0x0000003c3d4e2b16 in PyEval_EvalCodeEx ()
from /usr/lib64/libpython3.2mu.so.1.0
#13 0x0000003c3d476c4c in ?? () from /usr/lib64/libpython3.2mu.so.1.0
#14 0x0000003c3d453926 in PyObject_Call ()
from /usr/lib64/libpython3.2mu.so.1.0
#15 0x0000003c3d466bf4 in ?? () from /usr/lib64/libpython3.2mu.so.1.0
#16 0x0000003c3d453926 in PyObject_Call ()
from /usr/lib64/libpython3.2mu.so.1.0
#17 0x0000003c3d49c284 in ?? () from /usr/lib64/libpython3.2mu.so.1.0
#18 0x0000003c3d453926 in PyObject_Call ()
---Type <return> to continue, or q <return> to quit---
from /usr/lib64/libpython3.2mu.so.1.0
#19 0x0000003c3d4ddcf6 in PyEval_EvalFrameEx ()
from /usr/lib64/libpython3.2mu.so.1.0
#20 0x0000003c3d4e2b16 in PyEval_EvalCodeEx ()
from /usr/lib64/libpython3.2mu.so.1.0
#21 0x0000003c3d4e2d8b in PyEval_EvalCode ()
from /usr/lib64/libpython3.2mu.so.1.0
#22 0x000000000101ac75 in python_script_exec ()
#23 0x0000000000acd13f in text_run_script ()
#24 0x00000000008d11af in wm_operator_invoke ()
#25 0x00000000008d1760 in wm_operator_call_internal ()
#26 0x0000000000b723ce in ui_apply_but_funcs_after ()
#27 0x0000000000b7e83b in ui_handler_region_menu ()
#28 0x00000000008d2580 in wm_handlers_do ()
#29 0x00000000008d2e2f in wm_event_do_handlers ()
#30 0x00000000008cb6c8 in WM_main ()
#31 0x00000000008c9857 in main ()
===================================

createSlideVerts() in transform.c relies on both View3D and RegionView3D which I guess are NULL when called from a python script [Sorry, noobish investigations here :)].
I made a little patch that prevents the crash by avoiding function calls that rely on View3D and RegionView3D (and it seems to survive both interactive and from a python script). Will post the patch next.

Event Timeline

Philipp Oeser (lichtwerk) edited a custom field.May 29 2012, 5:28 PM
Philipp Oeser (lichtwerk) attached 1 file(s): F20100: bpy.ops.transform.edge_slide.segfault.py.
Philipp Oeser (lichtwerk) added a comment.May 29 2012, 5:32 PM

patch is #31635

Brecht Van Lommel (brecht) added a comment.May 31 2012, 9:07 PM

Fix based on this patch committed, thanks!

Brecht Van Lommel (brecht) changed the task status from Unknown Status to Resolved.May 31 2012, 9:07 PM