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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Issue or misunderstanding with long string support |
From: | Mark Rivers via Tech-talk <tech-talk at aps.anl.gov> |
To: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Tue, 31 May 2022 20:06:51 +0000 |
Our IOCs are now all running base 7.0.5. We see an issue with medm screens containing string files using PVs that end in a “$”. We can only change the first character
in the string. This is easy to reproduce using the caput and cainfo clients from base 7.0.5 to a PV in an IOC running base 7.0.5. cainfo without the $ modifier shows the field is a DBF_STRING. corvette:local/epics-devel/base-7.0.6>/usr/local/epics-devel/base-7.0.5/bin/linux-x86_64/cainfo 13BMD:userTran20.CLCA 13BMD:userTran20.CLCA State: connected Host: ioc13bmd.cars.aps.anl.gov:5064 Access: read, write Native data type: DBF_STRING Request type: DBR_STRING Element count: 1 cainfo with the $ modifier shows the field is a DBF_CHAR of size 120 corvette:local/epics-devel/base-7.0.6>/usr/local/epics-devel/base-7.0.5/bin/linux-x86_64/cainfo 13BMD:userTran20.CLCA$ 13BMD:userTran20.CLCA$ State: connected Host: ioc13bmd.cars.aps.anl.gov:5064 Access: read, write Native data type: DBF_CHAR Request type: DBR_CHAR Element count: 120 A caput without the $ modifier works, but that would be limited to 40 characters. corvette:local/epics-devel/base-7.0.6>/usr/local/epics-devel/base-7.0.5/bin/linux-x86_64/caput 13BMD:userTran20.CLCA "A+B" Old : 13BMD:userTran20.CLCA New : 13BMD:userTran20.CLCA A+B A caput with the $ modifier does not work, only the first character in the string was changed. It should have changed from A+B to B+A, but instead it changed to B+B. corvette:local/epics-devel/base-7.0.6>/usr/local/epics-devel/base-7.0.5/bin/linux-x86_64/caput -S 13BMD:userTran20.CLCA$ "B+A" Old : 13BMD:userTran20.CLCA$ A+B New : 13BMD:userTran20.CLCA$ B+B I see the same issue when writing to the DESC field of an ao record. corvette:local/epics-devel/base-7.0.6>/usr/local/epics-devel/base-7.0.5/bin/linux-x86_64/caput testAo_1.DESC "123" Old : testAo_1.DESC H23 New : testAo_1.DESC 123 When writing with the $ modifier it should have changed “123” to “321”, but instead it is “323”. corvette:local/epics-devel/base-7.0.6>/usr/local/epics-devel/base-7.0.5/bin/linux-x86_64/caput -S testAo_1.DESC$ "321" Old : testAo_1.DESC$ 123 New : testAo_1.DESC$ 323 Is this a bug, or am I misunderstanding how long strings are supposed to work? This looks similar to this bug that is fixed in 7.0.6.1, but that says it was specific to the CALC field.
https://github.com/epics-base/epics-base/issues/194 Thanks, Mark |