Hello all,
On the EPICS project here we’ve run into an issue which we believe
may point to a bug with fanout records and CA links - and we’re wondering if anybody else has seen this behavior. For clarity, the following simplifies our project and the records in question, but I can provide additional detail if requested.
We have two IOCs. The first IOC is responsible for publishing PVs and the second IOC is responsible for processing the PVs (using cpp routines) and placing the results in “output” PVs. The following
works with no errors:
Data IOC
========
record(bi, “Data_PV_1”)
{
field(SCAN, “Passive”)
field(FLNK, “Process1_sub.PROC”)
}
Processing IOC
==============
record(sub, “Process1_sub”)
{
field(INPA, “Data_PV_1”)
field(SNAM, “Process1_routine”)
field(FLNK, “Output_PV_1”)
}
record(mbbi, “Output_PV_1”)
{
field(SCAN, “Passive”)
field(INP, “Process1_sub”)
}
However, when
we incorporate a fanout record (to allow two different processing routines to be called when
a single data PV changes value), the second IOC (the processing IOC)
cores almost immediately after start up:
Data IOC
========
record(bi, “Data_PV_1”)
{
field(SCAN, “Passive”)
field(FLNK, “Process1_fanout”)
}
record(fanout, “Process1_fanout”)
{
field(LNK1, “Process1_sub.PROC”)
field(LNK2,
“Process2_sub.PROC”)
}
Processing IOC
==============
<Identical to the first example>
As an alternate we tried placing the fanout record in the Processing IOC, but that also core’d. Has anyone seen this behavior? (I discussed this situation briefly with Andrew Johnson and he
recommended an alternate implementation using CP flags on the Processing IOC records, which works well - but of course, we’d still like to understand the issue with fanout.)
Thanks,
-Mark