What versions of asyn and stream are you running?
You should the IOC under gdb and run the "backtrace" command when it crashes. That will give us a stack dump, showing where and why it crashed.
Mark
-----Original Message-----
From: Tech-talk <[email protected]> On Behalf Of Donny Domagoj Cosic via Tech-talk
Sent: Monday, November 11, 2019 3:49 AM
To: [email protected]
Subject: Segmentation fault when Record Processing in StreamDevice
Hi,
I have an IOC to read data from a radiation monitor that continuously send out data, however every so often the device sends out a header which is formatted differently and this is causing a Segmentation fault and crashing the IOC.
The output from the probe:
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
<\f>User File Number: 1<\r>
<\r>
Date Time M.Time A B <\r>
min uSv/h uSv/h <\r>
--------------------------------------------------<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
??/??/?? ??:??:?? 0.1 0.19(1) 0.15(1)<\r>
My DB file:
record (ai, "RAD:P10Probe1")
{
field(DTYP, "stream")
field(INP, "@rad.proto getProbe1(RAD:message) PORT10")
field(SCAN, "I/O Intr")
field(HIHI, "10.0")
field(HIGH, "1.0")
field(HHSV, "MAJOR")
field(HSV, "MINOR")
field(LOPR, "0")
field(EGU, "uS/hr")
}
record (ai, "RAD:P10Probe2")
{
field(DTYP, "stream")
field(INP, "@rad.proto getProbe2(RAD:message) PORT10")
field(SCAN, "I/O Intr")
field(HIHI, "10.0")
field(HIGH, "1.0")
field(HHSV, "MAJOR")
field(HSV, "MINOR")
field(LOPR, "0")
field(EGU, "uS/hr")
}
My proto file:
Terminator = CR;
getProbe1
{
in "%*8s\_%*8s\_%*f\_%f(%*d)\_%*f(%*d)";
ExtraInput = Ignore;
@mismatch
{
in "%(\$1)52c";
}
}
getProbe2
{
in "%*8s\_%*8s\_%*f\_%*f(%*d)\_%f(%*d)";
ExtraInput = Ignore;
@mismatch
{
in "%(\$1)52c";
}
}
I noticed that when the header is received, the mismatch exception handler is not triggered, but this might because the SCAN field is set to "I/O Intr" as the data rate depends on the dose measured at the probe. Why would this reading error cause a Segmentation Error and crash the IOC? Is there any other way read the string from the probe?
Thank you in advance for you time,
Regards,
Donny
--
Donny Domagoj Cosic
Institut Ruđer Bošković, Bijenička cesta 54, 10000 Zagreb, Croatia
- References:
- Segmentation fault when Record Processing in StreamDevice Donny Domagoj Cosic via Tech-talk
- Navigate by Date:
- Prev:
Re: Linux DMA driver and device support for Xilinx FPGA Cobb, Tom (DLSLtd,RAL,LSCI) via Tech-talk
- Next:
Re: Linux DMA driver and device support for Xilinx FPGA Ralph Lange via Tech-talk
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
<2019>
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Segmentation fault when Record Processing in StreamDevice Donny Domagoj Cosic via Tech-talk
- Next:
Reset counter enum riz via Tech-talk
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
<2019>
2020
2021
2022
2023
2024
|