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  2021  2022  2023  2024  2025  <2026 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  2025  <2026
<== Date ==> <== Thread ==>

Subject: Re: String getting truncated across OUT link
From: "Johnson, Andrew N. via Tech-talk" <tech-talk at aps.anl.gov>
To: David Bracey <dbracey at fnal.gov>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Sat, 7 Feb 2026 00:13:51 +0000
Hi David,

I can demonstrate using either a CA or DB link to have an lso record write a long string to an lsi, but I haven’t used pva: links with long strings before and don’t know if there is a special setting needed to get them to work, or if this is a bug.

Using a CA link you have to add a “$” field modifier to the target PV name, and without the VAL field name you still need a “.” before that, so your first database would become something like this:

    record(lso, "dbracey:src") {
      field(DOL, {const:"Another long string that contains more than 40 characters”})
      field(SIZV, 256)
      field(OUT, "dbracey:tgt.$")
    }

If the src and tgt PVs are in the same IOC that will use a DB link, otherwise it’ll be a CA link.

When I try adding the same field modifier to a pva link PV name, the target IOC prints errors like this:

tgt.$ PVA link put ERROR: Invalid input : "Another long string that contains more t"


That error was from PVXS (QSRV2); QSRV from pva2pva gave me this instead:

tgt.$ PVA link put ERROR: parseToPOD: No digits to convert


- Andrew


-- 

Complexity comes for free, Simplicity you have to work for.


On 2/6/26, 2:22 PM, "Tech-talk" <tech-talk-bounces at aps.anl.gov> wrote:

EPICS-BASE 7.0.10
PVXS 1.5.0
Linux version 5.14.0-570.62.1.el9_6.x86_64 (mockbuild at x64-builder03.almalinux.org)

I am trying to use an OUT link to move a string from one IOC to another (lso -> lsi) but the string is getting truncated.

Here are the DB's:

    record(lso, "dbracey:src") {
      field(SIZV, 256)
      field(OUT, {pva:"dbracey:tgt"})
    }

    record(lsi, "dbracey:tgt") {
      field(SIZV, 256)
    }

Both are softIocPVX on the same host (the src IOC gets port 5075, the tgt IOC gets port 37875):

    dbracey@somebox:~$ softIocPVX -d src.db
    INFO: PVXS QSRV2 is loaded, permitted, and ENABLED.
    Starting iocInit
    ############################################################################
    ## EPICS R7.0.10
    ## Rev.
    ## Rev. Date :
    ############################################################################
    iocRun: All initialization complete
    epics>

    dbracey@somebox:~$ softIocPVX -d tgt.db
    INFO: PVXS QSRV2 is loaded, permitted, and ENABLED.
    2026-02-06T13:52:42.521554992 WARN pvxs.tcp.setup Server unable to bind port 5075, falling back to [::]:37875
    Starting iocInit
    ############################################################################
    ## EPICS R7.0.10
    ## Rev.
    ## Rev. Date :
    ############################################################################
    cas WARNING: Configured TCP port was unavailable.
    cas WARNING: Using dynamically assigned TCP port 43047,
    cas WARNING: but now two or more servers share the same UDP port.
    cas WARNING: Depending on your IP kernel this server may not be
    cas WARNING: reachable with UDP unicast (a host's IP in EPICS_CA_ADDR_LIST)
    iocRun: All initialization complete
    epics>

The full string makes it into "dbracey:src" but it is truncated in "dbracey:tgt":

    dbracey@somebox:~$ pvxput dbracey:src "1234567890123456789012345678901234567890123456789X"
    dbracey@somebox:~$ pvxget dbracey:src
    dbracey:src
        value string = "1234567890123456789012345678901234567890123456789X"
        alarm.severity int32_t = 0
        alarm.status int32_t = 0
        alarm.message string = ""
        timeStamp.secondsPastEpoch int64_t = 1770407572
        timeStamp.nanoseconds int32_t = 719494104
        timeStamp.userTag int32_t = 0
        display.description string = ""
    dbracey@somebox:~$ pvxget dbracey:tgt
    dbracey:tgt
        value string = "1234567890123456789012345678901234567890"
        alarm.severity int32_t = 0
        alarm.status int32_t = 0
        alarm.message string = ""
        timeStamp.secondsPastEpoch int64_t = 1770407572
        timeStamp.nanoseconds int32_t = 722877993
        timeStamp.userTag int32_t = 0
        display.description string = ""

Watching the ports with tcpdump shows the full string on the src port, but the truncated string on the tgt port:

    [root@somebox dbracey]# tcpdump -A -i lo port 5075
    <snipped>
    13:59:29.895373 IP somebox.fnal.gov.pvaccess > somebox.fnal.gov.47484: Flags [P.], seq 241:335, ack 133, win 512, options [nop,nop,TS val 1485364043 ecr 1485364043], length 94
    E.../f@[email protected]...........|...Y........
    X.....
    [email protected].... ..@....21234567890123456789012345678901234567890123456789X..........G.i....A........
    13:59:29.895417 IP somebox.fnal.gov.47484 > somebox.fnal.gov.pvaccess: Flags [P.], seq 133:203, ack 335, win 512, options [nop,nop,TS val 1485364043 ecr 1485364043], length 70
    E..z..@[email protected]..........|..............
    @.....
    X..KX..K....>........ .....21234567890123456789012345678901234567890123456789X

    [root@somebox dbracey]# tcpdump -A -i lo port 37875
    <snipped>
    13:59:29.896946 IP somebox.fnal.gov.37875 > somebox.fnal.gov.35472: Flags [P.], seq 203:287, ack 117, win 512, options [nop,nop,TS val 1485364044 ecr 1485364044], length 84
    E...Pg@[email protected].............(...U......
    N.....
    [email protected].... ..@....(1234567890123456789012345678901234567890..........G.i.............
    13:59:29.896984 IP somebox.fnal.gov.35472 > somebox.fnal.gov.37875: Flags [P.], seq 117:204, ack 287, win 512, options [nop,nop,TS val 1485364044 ecr 1485364044], length 87
    E....U@[email protected]...(.`....
    Q.....
    X..LX..L....O........ ......(1234567890123456789012345678901234567890..........G.i.............

Any help would be appreciated.

Replies:
Re: String getting truncated across OUT link Maren Purves via Tech-talk
Re: String getting truncated across OUT link David Bracey via Tech-talk
References:
String getting truncated across OUT link David Bracey via Tech-talk

Navigate by Date:
Prev: RE: [Ext]RE: Help with continuous oscillation of a motor Pearson, Matthew via Tech-talk
Next: Re: String getting truncated across OUT link Maren Purves 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  2021  2022  2023  2024  2025  <2026
Navigate by Thread:
Prev: String getting truncated across OUT link David Bracey via Tech-talk
Next: Re: String getting truncated across OUT link Maren Purves 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  2021  2022  2023  2024  2025  <2026
ANJ, 19 Mar 2026 · Home · News · About · Talk · Base · Modules · Extensions ·
· Distributions · Download · Documents · Links · Licensing ·