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