Closed minosg closed 4 years ago
This might be related to a more general issue, which is that contributors to ExtUI (@marciot and others) don't always remember to update the ExtUI examples and other implementations when modifying the ExtUI API, so they fall out of sync. There are no official maintainers for these ExtUI implementations, so it's likely they will continue to get stale.
I could patch the onMeshUpdate
methods pretty quickly, but someone with a deeper investment in ExtUI and its offshoots is going to have to take the reins or this kind of thing will just keep occurring.
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
Bug Description
Code snippets which are intended to be updating the user interface are blocking, affecting the flow of commands which should not rely on a display.
In my case I have been trying to compile marlin 2.0.4.4, or 2.0.5.2 from tags and eventually bugfix-2.0.x. The machine is an old printer with an BTT SKR mini e3 1.2 and to using MalyanLCD. It is set to use a genuine BLTOUCH 3.1 as a probe, but not for homing.
I noticed that with everything working properly, using AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_3POINT and MESH_BED_LEVELING.
Then when attempting to activate AUTO_BED_LEVELING_BILINEAR, and AUTO_BED_LEVELING_UBL the machine would freeze when I was trying to issue an M502 to clear the previous settings, or perform the leveling routine.
Looking at the code I noticed the following snippet
With EXTENSIBLE_UI being evaluated as
This to my understanding is intended to upload the z value on the user interface. But If the screen library has not properly implemented this feature it will block and result in undefined behavior, which users may attribute to incorrect configuration of their probe or platform.
My Configurations
configs.zip
Steps to Reproduce
In order to trigger the crash:
Alternative method:
Expected behavior:
The Gcode commands which trigger a settings.reset() to complete
Actual behavior:
The printer freezes, and eventually time's out of the UART interface, until power cycled. The serial port is no longer properly evaluated, and appears as unrecognized device on a Windows host.
If attempting to do auto-leveling, the machine will home, head to the first point and freeze, when attempting to wipe the grid.
Additional Information
A quick workaround is to adjust the pre-processor logic to not include the logic when MALYAN_LCD is defined, without affecting other displays.
G29.cpp
bedlevel.cpp