Hallo, seit der Umstellung meines Projektes auf die aktuelle Codesys Version mit aktuellen Bibliotheken und Aktualisierung der Runtimer Version bekomme ich im Zeitraum 15min bis 1h nach Neustart des Target Systems folgende Fehlermeldung:
runtime received SIGABRT - system may be in an inconsistent state
Der Fehler kommt auch nach dem Start des Systems ohne eine Benutzeraktion zuverlässig, aber in unterschiedlichen Zeiträumern.
Hier sind die Logs und Daten, die ich dazu ermitteln konnte:
$ tail -f /var/opt/codesys/codesyscontrol.log
2025-04-03T06:54:37.659Z, 0x0000100c, 1, 0, 0, Visu_PRG: Creating Client for Extern-ID: 594337835
2025-04-03T06:54:37.660Z, 0x0000100c, 1, 0, 0, Visu_PRG: Creating Client successful for Extern-ID: 594337835 Returned IEC-ID: 0
2025-04-03T07:01:38.135Z, 0x00000103, 65544, 1, 0, runtime received SIGABRT - system may be in an inconsistent state
* We recommend a reboot of the controller now!
2025-04-03T07:01:38.135Z, 0x00000111, 8, 260, 3, #### Exception: HANDLED EXCPT* <excpt>NonContinuable</excpt> in CH_COMM_CYCLE
2025-04-03T07:02:18.181Z, 0x00000103, 65544, 1, 0, runtime received SIGABRT - system may be in an inconsistent state
* We recommend a reboot of the controller now!
2025-04-03T07:02:18.181Z, 0x00000111, 8, 260, 3, #### Exception: HANDLED EXCPT* <excpt>NonContinuable</excpt> in CH_COMM_CYCLE
Ich konnte den Fehler leider nicht wirklich finden.
Hier mein bisheriger Fortschritt:
Um nähere Informationen zu bekommen, habe ich
einen strace erstellt:
PID ermitteln:
$ ps aux | grep codesyscontrol | grep -v grep
--> 560
sudo strace -tt -f -p 560 -o /tmp/codesys_strace.log
(Die Logdatei wird schnell einige hundert MB groß.)
Mit
grep -B 100 'si_signo=SIGABRT' /tmp/codesys_strace.log
konnte ich die relevanten Einträge finden: (Die PID hat sich inzwischen wegen einem Reboot geändert)
Die Zeile
2025-04-17T11:40:43.471Z, 0x00000114, 4, 1, 0, **** ERROR: SysTaskCreate [CheckLicense0]: pthread_setname_np: Bad file descriptor
zeigt, dass der EBADF-Fehler beim Versuch auftritt, einen neuen Thread namens "CheckLicense0" zu erstellen. Die Funktion pthread_setname_np()
erhält einen EBADF-Fehler.
Ich weiß leider nicht, ob das eine heiße Spur ist.
Parallel dazu habe ich die Aufrufe von Systemfunktionen über SysProcess_Implementation.SysProcessExecuteCommand2 auskommentiert ohne den
Fehler damit abzustellen.
An diesem Punkt habe ich wegen Termindruck den alten Stand der Runtime (4.11.0.0) mit der Codesys Version 3.5 SP20 wiederhergestellt
und die geänderten Programme und Visualisierungen manuell getauscht mit dem Ergebnis, dass der Fehler in den letzten 2 Stunden nicht mehr aufgetreten ist.
Wenn jemand das Problem kennt, wäre ich für einen Austausch dankbar.
Frohe Ostern!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo, seit der Umstellung meines Projektes auf die aktuelle Codesys Version mit aktuellen Bibliotheken und Aktualisierung der Runtimer Version bekomme ich im Zeitraum 15min bis 1h nach Neustart des Target Systems folgende Fehlermeldung:
runtime received SIGABRT - system may be in an inconsistent state
Der Fehler kommt auch nach dem Start des Systems ohne eine Benutzeraktion zuverlässig, aber in unterschiedlichen Zeiträumern.
Hier sind die Logs und Daten, die ich dazu ermitteln konnte:
$ tail -f /var/opt/codesys/codesyscontrol.log
2025-04-03T06:54:37.659Z, 0x0000100c, 1, 0, 0, Visu_PRG: Creating Client for Extern-ID: 594337835
2025-04-03T06:54:37.660Z, 0x0000100c, 1, 0, 0, Visu_PRG: Creating Client successful for Extern-ID: 594337835 Returned IEC-ID: 0
2025-04-03T07:01:38.135Z, 0x00000103, 65544, 1, 0, runtime received SIGABRT - system may be in an inconsistent state
* We recommend a reboot of the controller now!
2025-04-03T07:01:38.135Z, 0x00000111, 8, 260, 3, #### Exception: HANDLED EXCPT* <excpt>NonContinuable</excpt> in CH_COMM_CYCLE
2025-04-03T07:02:18.181Z, 0x00000103, 65544, 1, 0, runtime received SIGABRT - system may be in an inconsistent state
* We recommend a reboot of the controller now!
2025-04-03T07:02:18.181Z, 0x00000111, 8, 260, 3, #### Exception: HANDLED EXCPT* <excpt>NonContinuable</excpt> in CH_COMM_CYCLE
$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 271120 33976 342284 0 0 135 2 2387 4751 10 7 82 1 0
1 0 0 271024 33976 342380 0 0 0 0 10163 20427 10 9 81 0 0
1 0 0 271056 33976 342380 0 0 0 0 8455 16869 9 5 86 0 0
0 0 0 271040 33976 342380 0 0 0 0 8674 17484 9 4 87 0 0
0 0 0 271072 33976 342380 0 0 0 0 10070 20350 7 7 87 0 0
1 0 0 271040 33976 342380 0 0 0 0 10354 20802 10 6 84 0 0
0 0 0 271072 33976 342380 0 0 0 0 8401 16923 8 6 86 0 0
$ vcgencmd measure_temp
temp=56.9'C
$ uname -a
Linux PAC4 5.10.103-v7+ #1529 SMP Tue Mar 8 12:21:37 GMT 2022 armv7l GNU/Linux
CODESYS V3.5 SP21
Runtime:
Codesys control for Raspberry Pi MC SL V 4.13.0.0
Hinweise auf ein instabiles OS oder instabile Netzwerkverbindungen konnte ich keine finden. In dmesg und im syslog gibt es keine Auffälligkeiten.
Die anderen Posts zu diesem Thema wurden nicht beantwortet.
Hat jemand einen Tip, wie man an das Problem herangehen kann?
Vielen Dank
Ich konnte den Fehler leider nicht wirklich finden.
Hier mein bisheriger Fortschritt:
Um nähere Informationen zu bekommen, habe ich
einen strace erstellt:
PID ermitteln:
$ ps aux | grep codesyscontrol | grep -v grep
--> 560
sudo strace -tt -f -p 560 -o /tmp/codesys_strace.log
(Die Logdatei wird schnell einige hundert MB groß.)
Mit
grep -B 100 'si_signo=SIGABRT' /tmp/codesys_strace.log
konnte ich die relevanten Einträge finden: (Die PID hat sich inzwischen wegen einem Reboot geändert)
1023 15:33:49.497136 writev(2, [{iov_base="Unexpected error 9 on netlink de"..., iov_len=45}], 1 <unfinished ...="">
..
1023 15:33:49.498352 tgkill(545, 1023, SIGABRT <unfinished ...="">
1023 15:33:49.498440 <... tgkill resumed> ) = 0
..
1023 15:33:49.498730 --- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=545, si_uid=0}</unfinished></unfinished>
Der Codesys Log zeigt zu diesem Zeitpunkt:
Exception: HANDLED EXCPT <excpt>NonContinuable</excpt> in CH_COMM_CYCLE
Mit
sudo lsof -p 545
habe ich die Anzahl der geöffneten Dateien überprüft ohne Auffälligkeiten
Mit sudo netstat -tunaep | grep codesys
habe ich die offenen Netzwerkverbindungen der codesys Prozesse überprüft
Hier sieht es so aus, dass codesyscontrol und codesysedge über die externen Netzwerkschnittstelle anstatt über den localhost kommunizieren:
udp 0 0 172.19.11.127:1740 0.0.0.0: 0 17882 549/codesyscontrol.
udp 0 0 172.19.11.255:1740 0.0.0.0: 0 17883 549/codesyscontrol.
udp 0 0 172.19.11.255:1743 0.0.0.0: 0 16993 529/codesysedge.bin
udp 0 0 172.19.11.127:1743 0.0.0.0: 0 16992 529/codesysedge.bin
Leider kann ich keine Konfiguration mit einer anderen Schnittstelle einstellen..
Als nächstes habe ich die udp Kommunikation der beiden Prozesse aufgezeichnet:
SPID des BlkDrvUdp Threads ermitteln:
$ ps aux | grep codesyscontrol | grep -v grep
--> 548
$ ps -T -p 548 | grep BlkDrvUdp
--> 1200
Damit kann man den strace starten:
sudo strace -p 1020 -f -tt -o /tmp/udp_control_trace.log -e trace=socket,connect,bind,sendto,recvfrom,close
$ ps aux | grep codesysedge | grep -v grep
--> 528
$ ps -T -p 528 | grep BlkDrvUdp
--> 789
sudo strace -p 789 -f -tt -o /tmp/udp_edge_trace.log -e trace=socket,connect,bind,sendto,recvfrom,close
Beim Aufzeichnen des Traces kamen wiederholte Fehlereinträge im codesyscontrol.log (diesmal ohne SIGABRT)
nach folgendem Muster:
tail -f /var/opt/codesys/codesyscontrol.log (mit UTC Zeit)
2025-04-17T11:23:43.147Z, 0x00000071, 1, 0, 0, Host : PAC4
2025-04-17T11:23:43.147Z, 0x00000071, 1, 0, 0, HTTP port : 8080
2025-04-17T11:23:43.147Z, 0x00000071, 1, 0, 0, HTTPS port : 443
2025-04-17T11:23:43.147Z, 0x00000071, 1, 0, 0, Connection type : HTTP
2025-04-17T11:23:43.147Z, 0x00000071, 1, 0, 0, **********
2025-04-17T11:23:46.318Z, 0x00000061, 1, 0, 0, Create asymmetric key done!
2025-04-17T11:23:53.464Z, 0x00000071, 1, 404, 0, File $PlcLogic$/$visu$/favicon.ico not found on this server
2025-04-17T11:23:55.208Z, 0x0000100c, 1, 0, 0, Visu_PRG: Creating Client for Extern-ID: 2025487823
2025-04-17T11:23:55.216Z, 0x0000100c, 1, 0, 0, Visu_PRG: Creating Client successful for Extern-ID: 2025487823 Returned IEC-ID: 0
2025-04-17T11:40:43.471Z, 0x00000114, 4, 1, 0, ** ERROR: SysTaskCreate [CheckLicense0]: pthread_setname_np: Bad file descriptor
Hier der dazu passende trace auszug von grep -B 100 '13:40:43' /tmp/udp_edge_trace.log:
798 13:40:42.592535 socket(AF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, NETLINK_ROUTE) = 9
798 13:40:42.592794 bind(9, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 0
798 13:40:42.593049 sendto(9, {{len=20, type=0x12 / NLMSG_??? /, flags=NLM_F_REQUEST|0x300, seq=1744890042, pid=0}, "\x00\x00\x00\x00"}, 20, 0, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 20
798 13:40:42.602995 sendto(9, {{len=20, type=0x16 / NLMSG_??? /, flags=NLM_F_REQUEST|0x300, seq=1744890043, pid=0}, "\x00\x00\x00\x00"}, 20, 0, {sa_family=AF_NETLINK, nl_pid=0, nl_groups=00000000}, 12) = 20
798 13:40:42.614794 close(9) = 0
798 13:40:42.615065 socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 9
798 13:40:42.615331 close(9) = 0
798 13:40:42.616159 close(9) = 0
798 13:40:42.616318 socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 9
798 13:40:42.616555 close(9) = 0
798 13:40:42.617209 close(9) = 0
798 13:40:42.617355 socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 9
798 13:40:42.617590 close(9) = 0
798 13:40:42.618497 close(9) = 0
798 13:40:42.618712 socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 9
798 13:40:42.618995 close(9) = 0
798 13:40:42.619568 close(9) = 0
798 13:40:42.620247 close(9) = 0
798 13:40:42.620441 socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 9
798 13:40:42.620690 close(9) = 0
798 13:40:42.621181 close(9) = 0
798 13:40:42.621823 close(9) = 0
798 13:40:43.520036 close(9) = 0
798 13:40:43.520406 close(9) = 0
und grep -B 100 '13:40:43' /tmp/udp_control_trace.log
1035 13:40:43.389785 socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 20
1035 13:40:43.390043 close(20) = 0
1035 13:40:43.390681 close(20) = 0
1035 13:40:43.393690 close(20) = 0
22586 13:40:43.450945 close(0) = 0
22586 13:40:43.451230 close(0) = -1 EBADF (Ungültiger Dateideskriptor)
22586 13:40:43.451689 close(20) = 0
22586 13:40:43.452104 close(1) = 0
22586 13:40:43.452481 close(21) = 0
22586 13:40:43.452679 close(2) = 0
22586 13:40:43.452860 close(2) = -1 EBADF (Ungültiger Dateideskriptor)
1009 13:40:43.454112 close(21) = 0
22586 13:40:43.454522 close(8) = 0
22586 13:40:43.455428 close(8) = 0
22586 13:40:43.455976 close(8) = 0
22586 13:40:43.456852 close(8) = 0
22587 13:40:43.463115 close(8) = 0
22587 13:40:43.464074 close(8) = 0
22587 13:40:43.464682 close(8) = 0
22587 13:40:43.465463 close(8) = 0
22587 13:40:43.468229 close(8) = 0
22587 13:40:43.468737 close(1 <unfinished ...="">
1009 13:40:43.468805 close(20 <unfinished ...="">
22587 13:40:43.468849 <... close resumed> ) = 0
1009 13:40:43.468896 <... close resumed> ) = 0
22587 13:40:43.468942 close(2) = 0
22587 13:40:43.469504 +++ exited with 0 +++
22586 13:40:43.469670 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=22587, si_uid=0, si_status=0, si_utime=0, si_stime=1} ---
22586 13:40:43.470175 +++ exited with 0 +++
1009 13:40:43.470265 close(20) = 0
546 13:40:43.470577 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=22586, si_uid=0, si_status=0, si_utime=0, si_stime=2} ---
1035 13:40:43.470913 close(20) = -1 EBADF (Ungültiger Dateideskriptor)
22588 13:40:43.480352 --- SIGRT_7 {si_signo=SIGRT_7, si_code=SI_TKILL, si_pid=546, si_uid=0} ---
22588 13:40:43.481675 --- SIGRT_6 {si_signo=SIGRT_6, si_code=SI_TKILL, si_pid=546, si_uid=0} ---
22588 13:40:43.482410 +++ exited with 0 +++</unfinished></unfinished>
Die Zeile
2025-04-17T11:40:43.471Z, 0x00000114, 4, 1, 0, **** ERROR: SysTaskCreate [CheckLicense0]: pthread_setname_np: Bad file descriptor
zeigt, dass der EBADF-Fehler beim Versuch auftritt, einen neuen Thread namens "CheckLicense0" zu erstellen. Die Funktion pthread_setname_np()
erhält einen EBADF-Fehler.
Ich weiß leider nicht, ob das eine heiße Spur ist.
Parallel dazu habe ich die Aufrufe von Systemfunktionen über SysProcess_Implementation.SysProcessExecuteCommand2 auskommentiert ohne den
Fehler damit abzustellen.
An diesem Punkt habe ich wegen Termindruck den alten Stand der Runtime (4.11.0.0) mit der Codesys Version 3.5 SP20 wiederhergestellt
und die geänderten Programme und Visualisierungen manuell getauscht mit dem Ergebnis, dass der Fehler in den letzten 2 Stunden nicht mehr aufgetreten ist.
Wenn jemand das Problem kennt, wäre ich für einen Austausch dankbar.
Frohe Ostern!