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  2019  2020  <20212022  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  2019  2020  <20212022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: base-7.0.6 long string$ bug? Re: Calc Module of SynApps: Issue with long string CALC$
From: Michael Davidsaver via Tech-talk <tech-talk at aps.anl.gov>
To: "Kasemir, Kay" <kasemirk at ornl.gov>, Kuldeep Joshi <kuldeep.joshi at gmail.com>
Cc: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Sun, 8 Aug 2021 08:27:20 -0700
On 8/7/21 12:35 PM, Kasemir, Kay via Tech-talk wrote:
> Hi:
> 
>> I subsequently tried out on EPICS base version 7.0.3.1 ..
>> It works fine ..
>> I am suspecting the bug may be due to newer version of EPICS.
> 
> Looks like you found a problem in R7.0.6.

From a quick test, it looks like this call to dbPut() is erroneously taking
a code path intended for a scalar value even though nRequest==4.

https://github.com/epics-base/epics-base/blob/cb8c7998b62701a849a6fa9c299cc1613f66a627/modules/database/src/ioc/db/dbAccess.c#L1372

This change went into 7.0.5 as part of

https://code.launchpad.net/~dirk.zimoch/epics-base/+git/epics-base/+merge/386175

I guess the oversight was assuming that all array operations are on SPC_DBADDR fields,
while CALC is SPC_CALC.


> Take this example record, executed by softIoc:
> 
> record(calc, "test_calc")
> {
>     field(SCAN, "1 second")
>     field(CALC, "RNDM*100")
> }
> 
> $ caget -S test_calc.CALC$
> test_calc.CALC$ RNDM*100
> 
> $ caput -S test_calc.CALC$ "300"
> Old : test_calc.CALC$ RNDM*100
> CA.Client.Exception...............................................
>     Warning: "Channel write request failed"
>     Context: "op=1, channel=test_calc.CALC$, type=DBR_CHAR, count=4, ctx="test_calc""
>     Source File: ../oldChannelNotify.cpp line 159
>     Current Time: Sat Aug 07 2021 15:27:54.755166000
> ..................................................................
> New : test_calc.CALC$ 3NDM*100
> 
> .. and the softIoc shows this error:
> 
> Illegal field value PV: test_calc calc: Illegal CALC field
> test_calc.CALC: Syntax error, unknown operator/operand in expression "3NDM*100"
> 
> So the IOC didn't receive "300" as written, it only took "3" _and_ kept the rest of the previous CALC field value.
> 
> When instead using R7.0.4.1, all works fine.
> In fact the test also succeeds with softIoc from R7.0.4.1 and caget/caput from base-7.0.6.
> The issue starts when using the base-7.0.6 softIoc.
> 
> -Kay
> 


References:
Calc Module of SynApps: Issue with long string CALC$ Kuldeep Joshi via Tech-talk
Re: [EXTERNAL] Calc Module of SynApps: Issue with long string CALC$ Kasemir, Kay via Tech-talk
Re: [EXTERNAL] Calc Module of SynApps: Issue with long string CALC$ Kuldeep Joshi via Tech-talk
Re: [EXTERNAL] Calc Module of SynApps: Issue with long string CALC$ Kasemir, Kay via Tech-talk
Re: Calc Module of SynApps: Issue with long string CALC$ Kuldeep Joshi via Tech-talk
Re: Calc Module of SynApps: Issue with long string CALC$ Kuldeep Joshi via Tech-talk
base-7.0.6 long string$ bug? Re: Calc Module of SynApps: Issue with long string CALC$ Kasemir, Kay via Tech-talk

Navigate by Date:
Prev: Re: base-7.0.6 long string$ bug? Re: Calc Module of SynApps: Issue with long string CALC$ Pete Jemian via Tech-talk
Next: Re: base-7.0.6 long string$ bug? Re: Calc Module of SynApps: Issue with long string CALC$ Michael Davidsaver 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  <20212022  2023  2024 
Navigate by Thread:
Prev: Re: base-7.0.6 long string$ bug? Re: Calc Module of SynApps: Issue with long string CALC$ Pete Jemian via Tech-talk
Next: Re: base-7.0.6 long string$ bug? Re: Calc Module of SynApps: Issue with long string CALC$ Michael Davidsaver 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  <20212022  2023  2024 
ANJ, 08 Aug 2021 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·