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 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
<== Date ==> <== Thread ==>

Subject: Record processing twice after upgrading to Base 3.15.5
From: "Dunning, Michael" <mdunning@slac.stanford.edu>
To: EPICS Tech-Talk <tech-talk@aps.anl.gov>
Cc: "Condamoor, Shantha" <scondam@slac.stanford.edu>
Date: Wed, 27 Sep 2017 13:30:57 -0700
After upgrading to Base 3.15.5, we are seeing what looks like
double-processing of a certain custom record type.  It is from our
device support for Bira Ethernet Power Supply Controllers. The problem
is with this record:

record(longin, "ESB:BEND:2110:GainADCRaw")
{
    field(DESC, "ADC Gain Raw Data")
    field(ASG,  "Internal")
    field(DTYP, "EtherPSC")
    field(INP,   "#L0 N0 P0 S50 @172.27.248.43")
    field(FLNK, "ESB:BEND:2110:GainADC.PROC")
}



When the IOC boots, the record has STAT: SCAN and SEVR: INVALID.  If
we camonitor this record, it seems to be processed twice:

ESB:BEND:2110:GainADCRaw       2017-09-10 20:12:15.648796 529
ESB:BEND:2110:GainADCRaw       2017-09-10 20:12:15.648796 529 SCAN INVALID
ESB:BEND:2110:GainADCRaw       2017-09-10 20:12:16.549097 534
ESB:BEND:2110:GainADCRaw       2017-09-10 20:12:16.549097 534 SCAN INVALID
ESB:BEND:2110:GainADCRaw       2017-09-10 20:12:17.449359 543
ESB:BEND:2110:GainADCRaw       2017-09-10 20:12:17.449359 543 SCAN INVALID
ESB:BEND:2110:GainADCRaw       2017-09-10 20:12:18.349763 549
ESB:BEND:2110:GainADCRaw       2017-09-10 20:12:18.349763 549 SCAN INVALID
ESB:BEND:2110:GainADCRaw       2017-09-10 20:12:19.250071 551
ESB:BEND:2110:GainADCRaw       2017-09-10 20:12:19.250071 551 SCAN INVALID
ESB:BEND:2110:GainADCRaw       2017-09-10 20:12:20.150256 549
ESB:BEND:2110:GainADCRaw       2017-09-10 20:12:20.150256 549 SCAN INVALID



The double-processing explains the SCAN and INVALID states.

Here is the record processing routine from device support:

static void process_record_li( ETHERPSCNODE *node, int signal, long i )
{
    PSCRECORD           *PSCRecord;
    struct longinRecord *pli;
    struct rset         *prset;

    PSCRecord = &node->record[signal];
    if ( ! (pli = (struct longinRecord*) PSCRecord->precord) ) return;

    if ( pli->val != i  ||  pli->udf  ||  PSCRecord->nsta )
    {
        PSCRecord->nsta = NO_ALARM;
        PSCRecord->val.li = i;
        prset = (struct rset *) pli->rset;

        dbScanLock( (struct dbCommon*) pli );
        pli->pact = TRUE;
        (*prset->process)( pli );
        dbScanUnlock( (struct dbCommon*) pli );
    }
}



I confirmed that this problem doesn't occur with Base 3.14.12.4.  Does
anyone have any idea why this record would be processed twice with
Base-3.15?





Michael Dunning
SLAC National Accelerator Laboratory
2575 Sand Hill Road
Menlo Park, CA 94025
(650) 926-5200

Replies:
Re: Record processing twice after upgrading to Base 3.15.5 Andrew Johnson

Navigate by Date:
Prev: Re: registerRecordDeviceDriver.pl takes a long time to finish Johnson, Andrew N.
Next: Re: Record processing twice after upgrading to Base 3.15.5 Andrew Johnson
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
Navigate by Thread:
Prev: Re: registerRecordDeviceDriver.pl takes a long time to finish Andrew Johnson
Next: Re: Record processing twice after upgrading to Base 3.15.5 Andrew Johnson
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
ANJ, 28 Sep 2017 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·