EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

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  <20192020  2021  2022  2023  2024  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  <20192020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: Segmentation fault when Record Processing in StreamDevice
From: Mark Rivers via Tech-talk <[email protected]>
To: 'Donny Domagoj Cosic' <[email protected]>
Cc: "[email protected]" <[email protected]>
Date: Mon, 11 Nov 2019 17:43:08 +0000
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  <20192020  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  <20192020  2021  2022  2023  2024 
ANJ, 12 Nov 2019 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·