Page MenuHomeAleph Objects Inc

Prevent default profiles from duplicated materials from being updated. Must use create profile from current/settings overrides.
Closed, ResolvedPublic

Description

  • Cura 3.6.3
  • macOS Mojave 10.14.3
  • Steps to reproduce the issue:
    1. Duplicate a Material in the Materials Manager
      • I duplicated from built-in "Generic" PLA (Verbatim)
      • Assigned Brand / Material Type (screenshot)
    2. Customize quality settings as desired
    3. Try to "Update" one of the pre-defined ( High detail/Standard/High Speed)
      • GUI Item: Profile -\> Update profile with current setting/overrides (screenshot)
    4. Nothing (App window disappears)
  • Expected Result: Save Profile with updated settings
  • Actual Result: Cura crashes, some of the customized settings are lost upon re-launching.

Workaround: If a Profile is instead "Create"d first with a new name, and then an "Update" attempt is made, Cura works as expected/does not crash. That was the method how I figured out saving customized Profile settings.

Ideally the app would not crash?
Perhaps, instead, an error dialog with a warning "unable to update protected profile", etc. in place of the unhandled exception...

Files in Cura quality subdir
$ ls -1 ~/Library/Application\ Support/cura-lulzbot/3.6/quality/
PLA_%28Verbatim%29_High_detail_mini_PLA_%28Verbatim%29+%232.inst.cfg
PLA_%28Verbatim%29_High_detail_mini_PLA_%28Verbatim%29+%232_PLA_%28Verbatim%29+%233.inst.cfg
PLA_%28Verbatim%29_High_speed_mini_PLA_%28Verbatim%29+%232.inst.cfg
PLA_%28Verbatim%29_High_speed_mini_PLA_%28Verbatim%29+%232_PLA_%28Verbatim%29+%233.inst.cfg
PLA_%28Verbatim%29_Standard_mini_PLA_%28Verbatim%29+%232.inst.cfg
PLA_%28Verbatim%29_Standard_mini_PLA_%28Verbatim%29+%232_PLA_%28Verbatim%29+%233.inst.cfg
lulzbot_mini_jetbot+-+esun+pla.inst.cfg
Crash stack traces
$ grep cura.CrashHandler.__init__ ~/Library/Application\ Support/cura-lulzbot/3.6/cura-lulzbot.log | grep -e ^2019
2019-03-26 17:42:53,499 - CRITICAL - [(4555756992)-MainThread] cura.CrashHandler.__init__ [61]: An uncaught error has occurred!
2019-03-26 17:42:53,501 - CRITICAL - [(4555756992)-MainThread] cura.CrashHandler.__init__ [64]: Traceback (most recent call last):
2019-03-26 17:42:53,503 - CRITICAL - [(4555756992)-MainThread] cura.CrashHandler.__init__ [64]:   File "cura/Settings/ContainerManager.pyc", line 545, in updateQualityChanges
2019-03-26 17:42:53,504 - CRITICAL - [(4555756992)-MainThread] cura.CrashHandler.__init__ [64]:   File "cura/Settings/ContainerManager.pyc", line 1015, in _performMerge
2019-03-26 17:42:53,506 - CRITICAL - [(4555756992)-MainThread] cura.CrashHandler.__init__ [64]: AssertionError

2019-03-26 17:44:19,998 - CRITICAL - [(4317656512)-MainThread] cura.CrashHandler.__init__ [61]: An uncaught error has occurred!
2019-03-26 17:44:19,999 - CRITICAL - [(4317656512)-MainThread] cura.CrashHandler.__init__ [64]: Traceback (most recent call last):
2019-03-26 17:44:20,002 - CRITICAL - [(4317656512)-MainThread] cura.CrashHandler.__init__ [64]:   File "cura/Settings/ContainerManager.pyc", line 545, in updateQualityChanges
2019-03-26 17:44:20,006 - CRITICAL - [(4317656512)-MainThread] cura.CrashHandler.__init__ [64]:   File "cura/Settings/ContainerManager.pyc", line 1015, in _performMerge
2019-03-26 17:44:20,008 - CRITICAL - [(4317656512)-MainThread] cura.CrashHandler.__init__ [64]: AssertionError

2019-03-27 10:18:50,751 - CRITICAL - [(4477806016)-MainThread] cura.CrashHandler.__init__ [61]: An uncaught error has occurred!
2019-03-27 10:18:50,752 - CRITICAL - [(4477806016)-MainThread] cura.CrashHandler.__init__ [64]: Traceback (most recent call last):
2019-03-27 10:18:50,754 - CRITICAL - [(4477806016)-MainThread] cura.CrashHandler.__init__ [64]:   File "cura/Settings/ContainerManager.pyc", line 545, in updateQualityChanges
2019-03-27 10:18:50,755 - CRITICAL - [(4477806016)-MainThread] cura.CrashHandler.__init__ [64]:   File "cura/Settings/ContainerManager.pyc", line 1015, in _performMerge
2019-03-27 10:18:50,756 - CRITICAL - [(4477806016)-MainThread] cura.CrashHandler.__init__ [64]: AssertionError

Screenshots

Material manager:
![Manage Materials](Screen%20Shot%202019-03-27%20at%2010.47.55%20AM.png "Materials manager")

![Update profile GUI selection](Screen%20Shot%202019-03-27%20at%2010.29.11%20AM.png "screenshot of Profile dropdown")

Event Timeline

idcrook created this task.Mar 27 2019, 11:19 AM
alexei triaged this task as Normal priority.Apr 4 2019, 8:09 AM
alexei changed the edit policy from "All Users" to "Cura LulzBot Edition (Project)".
karrad added a subscriber: karrad.Apr 9 2019, 9:17 AM

@idcrook Sorry about the delay here, lets see what we can do.

For our "built in" profiles we have them protected, so we can always be able to revert to a known base to rule out setting issues. This should prevent one from even attempting to update a built in profile, and appears to be not preventing this when duplicating the material and profile.

Instead of trying to update the built in profile, can you attempt to create a profile from current settings/overrides and see if it still causes the crash?

idcrook added a comment.EditedApr 9 2019, 9:24 AM

Hi. See “steps to reproduce”. This was filed after crash being repeatedly encountered on a “duplicated” material. The “built-in” portion was referring to the three quality settings that come with all published materials on this duplicated material. See the listing of *.cfg files in the quality directory listing.

The “workaround” I provided does what I think you suggest? The crash itself/assertion is the problem. Cura crashes when the intent is to save settings, with no graceful recovery. Changes are lost.

karrad added a subscriber: victor_larchenko.

@idcrook Correct, on non duplicated profiles we prevent those built in settings from being updated at all, and recommend the above process for generating new profile updates. We will look into preventing the duplicated in ones from being updated in that process as you described.

@victor_larchenko We need to prevent the duplicated default profiles from being updated as we do the stock default profiles.

karrad renamed this task from Cura 3.6.3 crash when trying to Update "built-in" profile for User-defined Material to Prevent default profiles from duplicated materials from being updated. Must use create profile from current/settings overrides..Apr 9 2019, 9:34 AM
karrad moved this task from Backlog to Next Release (3.6) on the Cura LulzBot Edition board.

@karrad fixed. Clear of cache required to work.

alexei closed this task as Resolved.Fri, Apr 26, 11:06 AM
alexei moved this task from Next Release (3.6) to Release 3.6.xx on the Cura LulzBot Edition board.
alexei added a subscriber: alexei.

Merged to master.