Page MenuHome

Crash When Undoing Library Override of Armature Data
Closed, ResolvedPublicBUG

Description

System Information
Operating system: Darwin-19.5.0-x86_64-i386-64bit 64 Bits
Graphics card: AMD Radeon Pro 5500M OpenGL Engine ATI Technologies Inc. 4.1 ATI-3.9.15

Blender Version
Broken: version: 2.83.0, branch: master, commit date: 2020-06-03 14:38, hash: rB211b6c29f771
Worked: (newest version of Blender that worked as expected)

Short description of error
I was trying out the Library Overrides system and realized that I couldn't turn on the "In Front" Viewport Display option after I linked in a character and started animating (by making a library override of the rig). Both the Object level "In Front" and the Armature level "In Front" are grayed out with the message "Disabled: Can't edit this property from an override data block"

At the Armature level I noticed that the rig was still "direct linked" (i.e. not using an override), so I thought I would try Shift-Clicking the chain-link icon next to the Armature name to add an override their too to see if that would let me make the rig draw "In Front" but the checkbox remained grayed out, so I hit Undo.

That's when Blender Crashed.

Exact steps for others to reproduce the error

  1. From the default scene, delete everything and add an Armature Object.
  2. Save the file as character.blend
  3. Make a new default scene, delete everything and link in the one and only Collection from test_character.blend
  4. Save this file as shot.blend
  5. Add a library override and choose the Armature as the thing to override.
  6. Go to the Armature tab in the Properties Editor
  7. Shift Click the chain-link icon to add a Library Override.
  8. Undo

I've tested this with a small team of 3, all on PCs and everyone experienced the same crash at the moment of undo.

Event Timeline

Hans Goudey (HooglyBoogly) changed the task status from Needs Triage to Confirmed.Tue, Jun 23, 8:39 PM
Hans Goudey (HooglyBoogly) triaged this task as High priority.
Hans Goudey (HooglyBoogly) changed the subtype of this task from "Report" to "Bug".

Hi Daniel! I hope it's going well.

Now I can triage your bug ; )

I can reproduce this in 2.90. I actually get the same crash if I click (no shift) on the button just to make the armature local.

Here's the call stack.

ED_editors_exit(Main * bmain, _Bool do_undo_system) (/home/hans/Documents/Blender-Git/blender/source/blender/editors/util/ed_util.c:221)
memfile_undosys_step_decode(struct bContext * C, struct Main * bmain, UndoStep * us_p, int undo_direction, _Bool UNUSED_is_final) (/home/hans/Documents/Blender-Git/blender/source/blender/editors/undo/memfile_undo.c:187)
undosys_step_decode(bContext * C, Main * bmain, UndoStack * ustack, UndoStep * us, int dir, _Bool is_final) (/home/hans/Documents/Blender-Git/blender/source/blender/blenkernel/intern/undo_system.c:210)
BKE_undosys_step_undo_with_data_ex(UndoStack * ustack, bContext * C, UndoStep * us, _Bool use_skip) (/home/hans/Documents/Blender-Git/blender/source/blender/blenkernel/intern/undo_system.c:714)
BKE_undosys_step_undo_with_data(UndoStack * ustack, bContext * C, UndoStep * us) (/home/hans/Documents/Blender-Git/blender/source/blender/blenkernel/intern/undo_system.c:725)
BKE_undosys_step_undo(UndoStack * ustack, bContext * C) (/home/hans/Documents/Blender-Git/blender/source/blender/blenkernel/intern/undo_system.c:730)
ed_undo_step_impl(bContext * C, int step, const char * undoname, int undo_index, ReportList * reports) (/home/hans/Documents/Blender-Git/blender/source/blender/editors/undo/ed_undo.c:199)
ed_undo_step_direction(bContext * C, int step, ReportList * reports) (/home/hans/Documents/Blender-Git/blender/source/blender/editors/undo/ed_undo.c:263)
ed_undo_exec(bContext * C, wmOperator * op) (/home/hans/Documents/Blender-Git/blender/source/blender/editors/undo/ed_undo.c:399)
wm_operator_invoke(bContext * C, wmOperatorType * ot, wmEvent * event, PointerRNA * properties, ReportList * reports, const _Bool poll_only, _Bool use_last_properties) (/home/hans/Documents/Blender-Git/blender/source/blender/windowmanager/intern/wm_event_system.c:1296)
wm_handler_operator_call(bContext * C, ListBase * handlers, wmEventHandler * handler_base, wmEvent * event, PointerRNA * properties, const char * kmi_idname) (/home/hans/Documents/Blender-Git/blender/source/blender/windowmanager/intern/wm_event_system.c:2116)
wm_handlers_do_keymap_with_keymap_handler(bContext * C, wmEvent * event, ListBase * handlers, wmEventHandler_Keymap * handler, wmKeyMap * keymap, const _Bool do_debug_handler) (/home/hans/Documents/Blender-Git/blender/source/blender/windowmanager/intern/wm_event_system.c:2426)
wm_handlers_do_intern(bContext * C, wmEvent * event, ListBase * handlers) (/home/hans/Documents/Blender-Git/blender/source/blender/windowmanager/intern/wm_event_system.c:2727)
wm_handlers_do(bContext * C, wmEvent * event, ListBase * handlers) (/home/hans/Documents/Blender-Git/blender/source/blender/windowmanager/intern/wm_event_system.c:2854)
wm_event_do_handlers(bContext * C) (/home/hans/Documents/Blender-Git/blender/source/blender/windowmanager/intern/wm_event_system.c:3392)
WM_main(bContext * C) (/home/hans/Documents/Blender-Git/blender/source/blender/windowmanager/intern/wm.c:475)
main(int argc, const char ** argv) (/home/hans/Documents/Blender-Git/blender/source/creator/creator.c:532)

Hi Hans!

We're trying out Library Overrides!
I was about to ask Sabrina, our rigger, to just turn on "In Front" in each of the character files, but then I started wondering if any of this could be useful given all the work going into the Undo System overhaul, so the whole studio got together on Zoom and we all reproduced the crash and submitted the bug report together!

Hi from swelteringly hot Vermont!

Those handlers from UI buttons just do not define any undo step... Bad in absolute, and critical with new undo system.