Hallo Michael,
ich habe Deine Mail erhalten und die Libs "scanner" und "inipars" erneuert. Das Ergebnis (wie zu erwarten war) ist unverändert: "mrzentrale" stürtzt nach einigen Sekunden ab.
Ich habe gdb auf dem BPi installiert und kann den Fehler jetzt reproduzieren und die Stelle lokalisieren.
Hier der Output von GDB:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
FSM: evaluate lokname cfg
[lok]
.name=335 105-3 DB
[lok]
.name=
[numloks]
.wert=1
ardvers=anew paragraph lok in lok cfg
lok paragraph in lok cfg
new value name=335 105-3 DB in lok cfg
lok name 0 in lok cfg
new paragraph lok in lok cfg
lok paragraph in lok cfg
new value name= in lok cfg
lok name 1 in lok cfg
new paragraph numloks in lok cfg
numloks paragraph in lok cfg
new value wert=1 in lok cfg
number of loks in lok cfg
number of loks in lok cfg is 1
end of lok cfg
request lokinfo 0 >335 105-3 DB< from 1
FSM: new state 3
Program received signal SIGSEGV, Segmentation fault.
FsmDo (Data=0xb6ff0042, Data@entry=0xb6fff7b0, SignalNr=<optimized out>,
SignalData=SignalData@entry=0xbefffc9c) at fsm_do.c:12
12 FsmSetState(Data, NewState);
Die Stelle, wo das Programm aussteigt:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SignalData=SignalData@entry=0xbefffc9c) at fsm_do.c:12
12 FsmSetState(Data, NewState);
######################
# fsm_do.c
#include "fsm.h"
void FsmDo(FsmStruct *Data, int SignalNr, void *SignalData)
{ int NewState;
SignalFunctionsType SignalFunctions;
StateFktType SignalFunction;
SignalFunctions = FsmGetFunctions(Data)[FsmGetState(Data)];
SignalFunction = SignalFunctions[SignalNr];
NewState = SignalFunction(FsmGetPriv(Data), SignalData);
if (NewState != STATE_NO_CHANGE)
FsmSetState(Data, NewState);
}
Ein weitere Sache ist mir aufgefallen. Hier die letzten Frames auf dem CAN-Bus:
2
3
4
5
6
7
8
9
(2016-01-04 09:41:13.339503) can0 TX - - 00400300 [8] 6C 6F 6B 69 6E 66 6F 00
(2016-01-04 09:41:13.340075) can0 TX - - 00400300 [8] 33 33 35 20 31 30 35 2D | 335 105- |
(2016-01-04 09:41:13.340700) can0 TX - - 00400300 [8] 33 20 44 00 00 00 00 00 | 3 D |
(2016-01-04 09:41:13.341393) can0 RX - - 00410300 [8] 33 20 44 00 00 00 00 00
(2016-01-04 09:41:13.341907) can0 RX - - 00420300 [6] 00 00 00 10 F3 A3
(2016-01-04 09:41:13.342472) can0 RX - - 00420300 [8] 5B 6C 6F 6B 6F 6D 6F 74
(2016-01-04 09:41:13.343051) can0 RX - - 00420300 [8] 69 76 65 5D 0A 20 20 20
Die Kennung der Lok ist "335 105-3 DB" aber das "B" ist verschluckt. Das muss kein Problem darstellen - komisch ist es aber.
Gruß
Gerd