Duet 2 V3.0 RC12 Constant pausing and stack overflow
-
Hi,
I am using a bought printer that uses a Duet wifi on firmware V3.01-RC12.
Today it is constantly pausing and reporting Push() stack overflow.
I will be communicating with the supplier about updating the firmware but I'd like to try and narrow the problem down.
I see the change notes for version 3.1.0 mention a macro stack depth fix and there is a simple filament sensor fitted.
Could the filament sensor be triggering too often and be overwhelming the stack on this firmware version?
Bad commands are also reported but with a stack overflow I don't know which could have occured first.
I don't have access to unplug the sensor so I was thinking of commenting out the contents of pause.g to see if that removes the problem, any suggestions without updating the firmware or accessing the PCB would be appreciated.
06/10/2020, 10:16:10 M122
=== Diagnostics ===
RepRapFirmware for Duet 2 WiFi/Ethernet version 3.01-RC12 running on Duet Ethernet 1.02 or later
Board ID: ---
Used output buffers: 1 of 24 (23 max)
=== RTOS ===
Static ram: 28084
Dynamic ram: 94412 of which 40 recycled
Exception stack ram used: 528
Never used ram: 8008
Tasks: NETWORK(ready,124) HEAT(blocked,1228) MAIN(running,616) IDLE(ready,76)
Owned mutexes:
=== Platform ===
Last reset 01:27:49 ago, cause: power up
Last software reset at 2020-10-01 11:10, reason: User, spinning module GCodes, available RAM 9064 bytes (slot 2)
Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0441f000 BFAR 0xe000ed38 SP 0xffffffff Task MAIN
Error status: 8
MCU temperature: min 22.0, current 27.9, max 28.4
Supply voltage: min 23.4, current 24.1, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes
Driver 0: standstill, SG min/max 0/1023
Driver 1: standstill, SG min/max not available
Driver 2: standstill, SG min/max 0/232
Driver 3: standstill, SG min/max 0/230
Driver 4: standstill, SG min/max 0/243
Date/time: 2020-10-06 10:16:06
Cache data hit count 4294967295
Slowest loop: 643.67ms; fastest: 0.14ms
I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0
=== Storage ===
Free file entries: 8
SD card 0 detected, interface speed: 20.0MBytes/sec
SD card longest read time 2.2ms, write time 172.5ms, max retries 0
=== Move ===
Hiccups: 231(0), FreeDm: 169, MinFreeDm: 101, MaxWait: 2052945ms
Bed compensation in use: none, comp offset 0.000
=== MainDDARing ===
Scheduled moves: 17036, completed moves: 17036, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1
=== AuxDDARing ===
Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1
=== Heat ===
Bed heaters = 0 -1 -1 -1, chamberHeaters = 3 6 -1 -1
Heater 0 is on, I-accum = 0.0
Heater 1 is on, I-accum = 0.3
Heater 3 is on, I-accum = 0.0
=== GCodes ===
Segments left: 0
Movement lock held by null
HTTP is idle in state(s) 0
Telnet is idle in state(s) 0
File is idle in state(s) 0
USB is idle in state(s) 0
Aux is idle in state(s) 0
Trigger is idle in state(s) 0
Queue is idle in state(s) 0
Daemon is idle in state(s) 0
Autopause is idle in state(s) 0
Code queue is empty.
=== Network ===
Slowest loop: 149.81ms; fastest: 0.02ms
Responder states: HTTP(1) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0)
HTTP sessions: 3 of 8
Interface state active, link 100Mbps full duplex
06/10/2020, 10:12:48 Error: Printing is already paused!
06/10/2020, 10:12:45 Error: Printing is already paused!
06/10/2020, 10:11:46 Error: Push(): stack overflow
06/10/2020, 10:11:44 Error: Printing is already paused!
06/10/2020, 10:11:41 Error: Printing is already paused!
06/10/2020, 10:11:29 Printing paused at X20.9 Y9.1 Z13.0
06/10/2020, 10:11:25 Resume state saved
06/10/2020, 10:11:07 Error: Bad command: Y1.626 E0.1030
06/10/2020, 10:11:05 Printing paused at X2.6 Y-9.2 Z13.0
06/10/2020, 10:11:02 Resume state saved
06/10/2020, 10:10:55 Error: Bad command: 2 Y22.020 E0.2199
06/10/2020, 10:10:45 Error: Printing is already paused!
06/10/2020, 10:10:43 Printing paused at X17.5 Y22.0 Z13.0
06/10/2020, 10:10:41 Resume state saved
06/10/2020, 10:09:59 Error: Bad command: 096 E0.1030
06/10/2020, 10:09:56 Printing paused at X11.6 Y-21.9 Z12.6
06/10/2020, 10:09:52 Resume state saved
06/10/2020, 10:09:42 Error: Bad command: 0 Y7.057 E0.1030
06/10/2020, 10:09:30 Error: Printing is already paused!
06/10/2020, 10:09:28 Error: Printing is already paused!
06/10/2020, 10:09:22 Error: Printing is already paused!
06/10/2020, 10:09:20 Printing paused at X2.6 Y-3.8 Z12.6
06/10/2020, 10:09:16 Resume state saved
06/10/2020, 10:09:12 Error: Bad command: 2 Y22.020 E0.2199 -
Please post your pause.g macro file. It sounds as though it may be recursive.
-
This looks like the command to trigger the pause?
M581 P1 T1 S1 R1pause.g
M83
G1 E-4 F2500
G91
G1 Z5 F5000
G90
G1 X0 Y85 F5000M300 S4000 P500
G4 P1000
M300 S4000 P500
G4 P1000
M300 S4000 P500 -
Thanks. I think your diagnosis is correct, the filament monitor is providing several triggers (contact bounce?), causing nested pauses. I will change the firmware in the next RRF beta so that the T1 trigger is ignored if the print is already paused.
-
Would commenting out M581 P1 T1 S1 R1 be the simplest option for now?
-
@Printer42 said in Duet 2 V3.0 RC12 Constant pausing and stack overflow:
Would commenting out M581 P1 T1 S1 R1 be the simplest option for now?
Yes, but of course that will also stop the filament sensor working.
-
Thanks for the quick responses, that will get things moving along again for now.
-
In the meantime you may want to update your firmware off of the old release candidate.
Connect to the web interface and upload these zip file as is (do not extract them first) to the system folder.
https://github.com/Duet3D/RepRapFirmware/releases/download/3.0/Duet2and3Firmware-3.0.zip
https://github.com/Duet3D/RepRapFirmware/releases/download/3.1.1/Duet2and3Firmware-3.1.1.zip
Afterwards you should be running firmware 3.1.1 and your config.g should work a lot better. Send M115 to confirm.
Then send M98 P"config.g" and report any error messages.