-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
Here are the steps I follow to reproduce the issue:
- install and build linuxcnc-dev without libmodbus, --with-realtime=uspace
- use standart 9axis sim configuration, but copy all ini parameters from axis A to axis B (so B becomes a common axis, not locking indexer)
- increase a soft limits to a big number (+-100000 shoud be enought)
- add a M-functions M166, M167, M152, M151, M106 (no matter what they do, bug apperas even if they just echo "something" and exit 0
- Open a file "bad.ngc"
This is what I expected to happen:
Get an error or correct programm preview
This is what happened instead:
After opening attached programm, linuxcnc freezed using 100% of CPU, the whole memory (RAM and Swap ). When coursor in above the axis window, it looks like a "loading" circle. After clicking on "close button" and confirming closing, axis window dissappeared, but linuxcnc was not closed. No errors in terminal. Memory and CPU are still loaded, linuxcnc process does not respond to SIGTERM. Looks like i wrote uncorrect program, but anyway it is not a correct behavior IMHO.
After reboting, tried to open this program again. Error remains, but gives this in terminal:
`Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.10/tkinter/init.py", line 1921, in call
return self.func(*args)
File "/home/arabella/progs/linuxcnc-dev/bin/axis", line 156, in General_Halt
if not root_window.tk.call("nf_dialog", ".error", _("Confirm Close"), text, "warning", 1, _("Yes"), _("No")):
_tkinter.TclError: can't invoke "grab" command: application has been destroyed
can't read "data(pages)": no such variable
while executing
"foreach page $data(pages) {
Widget::destroy $path.f$page
}"
(procedure "NoteBook::_destroy" line 5)
invoked from within
"NoteBook::_destroy .#BWidget.#Class#NoteBook"
(command bound to event)
invalid command name "139654618640960error_task"
while executing
"139654618640960error_task"
("after" script)
invalid command name "139655025579136update"
while executing
"139655025579136update"
("after" script)
^C!!!emc/rs274ngc/gcodemodule.cc: parse_file() f=/home/arabella/Documents/codes/LIST2NGC/examples/bad.ngc
!!!interp_error=1 result=0 last_sequence_number=115
task: 64804 cycles, min=0.000006, max=0.009901, avg=0.001101, 0 latency excursions (> 10x expected cycle time of 0.001000s)
Exception in Tkinter callback
Traceback (most recent call last):
File "/home/arabella/progs/linuxcnc-dev/bin/axis", line 1286, in open_file_guts
result, seq = o.load_preview(f, canon, initcodes, interpname)
File "/home/arabella/progs/linuxcnc-dev/lib/python/rs274/glcanon.py", line 1870, in load_preview
result, seq = gcode.parse(f, canon, *args)
RuntimeError: parse_file interp_error
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/arabella/progs/linuxcnc-dev/bin/axis", line 1303, in open_file_guts
notifications.add("error", str(e))
File "/home/arabella/progs/linuxcnc-dev/bin/axis", line 342, in add
self.place(relx=1, rely=1, y=-20, anchor="se")
File "/usr/lib/python3.10/tkinter/init.py", line 2477, in place_configure
self.tk.call(
_tkinter.TclError: can't invoke "place" command: application has been destroyed
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.10/tkinter/init.py", line 1921, in call
return self.func(*args)
File "/home/arabella/progs/linuxcnc-dev/bin/axis", line 2233, in open_file
commands.open_file_name(f)
File "/home/arabella/progs/linuxcnc-dev/bin/axis", line 2252, in open_file_name
open_file_guts(f)
File "/home/arabella/progs/linuxcnc-dev/bin/axis", line 1314, in open_file_guts
root_window.tk.call("destroy", ".info.progress")
_tkinter.TclError: can't invoke "destroy" command: application has been destroyed
^CShutting down and cleaning up LinuxCNC...
^CTraceback (most recent call last):
File "/home/arabella/progs/linuxcnc-dev/bin/axis-remote", line 28, in
import tkinter
File "/usr/lib/python3.10/tkinter/init.py", line 44, in
TkVersion = float(_tkinter.TK_VERSION)
KeyboardInterrupt
Shutting down and cleaning up LinuxCNC...
^CShutting down and cleaning up LinuxCNC...
^CShutting down and cleaning up LinuxCNC...
Note: Using POSIX non-realtime
^CShutting down and cleaning up LinuxCNC...
^CShutting down and cleaning up LinuxCNC...
^CShutting down and cleaning up LinuxCNC...
Note: Using POSIX non-realtime
^CShutting down and cleaning up LinuxCNC...
Note: Using POSIX non-realtime
^CShutting down and cleaning up LinuxCNC...
Note: Using POSIX non-realtime
`
It worked properly before this:
Yes, it normally opens a simpler programs
Information about my hardware and software:
non-realtime kernel, no additional hardware and no real machine -- just a linuxcnc on a common pc