Page MenuHome

Blender crashes when in the Multresolution modifier we increase the number of subdivisions
Closed, ResolvedPublic

Description

System Information
Operating system: Windows-10-10.0.14393-SP0 64 Bits
Graphics card: GeForce GTX 1050 with Max-Q Design/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 446.14

Blender Version
Broken:
version: 2.83.5, branch: master, commit date: 2020-08-19 06:07, hash: rBc2b144df395f
version: 2.91.0 Alpha, branch: master, commit date: 2020-08-13 18:18, hash: rB275f1039d22c
Worked:
version: 2.81 (sub 16), branch: master, commit date: 2019-11-20 14:27, hash: rB26bd5ebd42e3
version: 2.82 (sub 7), branch: master, commit date: 2020-03-12 05:06, hash: rB375c7dc4caf4

Short description of error

Create three connected vertices in the object and add the Multiresolution modifier. By increasing the number of subdivisions, Blender falls. If we extrude polygons and add a subdivision everything works correctly.

Exact steps for others to reproduce the error

  1. Create an object from three connected vertices
  2. Add the Multiresolution modifier to the object
  3. I increase the number of subdivisions (although I checked in Blender 2.82 this action is blocked and Blender does not crash).
  4. Blender crashes without error message.

The problem is solved in prohibiting the increase of the unit if the object does not have solid polygons.
There is no such error in Blender 2.82.

Event Timeline

Robert Guetzkow (rjg) changed the task status from Needs Triage to Confirmed.EditedSun, Aug 23, 3:29 PM
Robert Guetzkow (rjg) triaged this task as High priority.

The crash happens when adding the second subdivision. reshape_context->subdiv is NULL which triggers the assert in context_init_commoon (multires_reshape_util.c).

BTW the function name has a typo, it should be context_init_common.

context_init_commoon(MultiresReshapeContext * reshape_context) Line 128	C
multires_reshape_context_create_from_subdivide(MultiresReshapeContext * reshape_context, Object * object, MultiresModifierData * mmd, int top_level) Line 269	C
multiresModifier_subdivide_to_level(Object * object, MultiresModifierData * mmd, const int top_level, const eMultiresSubdivideModeType mode) Line 222	C
multiresModifier_subdivide(Object * object, MultiresModifierData * mmd, const eMultiresSubdivideModeType mode) Line 180	C
multires_subdivide_exec(bContext * C, wmOperator * op) Line 1694	C
wm_operator_invoke(bContext * C, wmOperatorType * ot, wmEvent * event, PointerRNA * properties, ReportList * reports, const bool poll_only, bool use_last_properties) Line 1312	C
wm_operator_call_internal(bContext * C, wmOperatorType * ot, PointerRNA * properties, ReportList * reports, const short context, const bool poll_only, wmEvent * event) Line 1547	C
WM_operator_name_call_ptr(bContext * C, wmOperatorType * ot, short context, PointerRNA * properties) Line 1562	C
ui_apply_but_funcs_after(bContext * C) Line 907	C
ui_handler_region_menu(bContext * C, const wmEvent * event, void * UNUSED_userdata) Line 10843	C
wm_handler_ui_call(bContext * C, wmEventHandler_UI * handler, const wmEvent * event, int always_pass) Line 638	C
wm_handlers_do_intern(bContext * C, wmEvent * event, ListBase * handlers) Line 2754	C
wm_handlers_do(bContext * C, wmEvent * event, ListBase * handlers) Line 2865	C
wm_event_do_handlers(bContext * C) Line 3289	C
WM_main(bContext * C) Line 479	C
main(int argc, const unsigned char * * UNUSED_argv_c) Line 548	C