On 08.04.2015 11:20, Dirk Zimoch wrote:
>
/usr/local/epics/support/stream/StreamDevice-2-6/lib/linux-x86_64/libstream.so(_ZN6Stream15getFieldAddressEPKcR12StreamBuffer+0xcd)[0x7f9c3d4bd34d]
I found the bug in getFieldAddress:
// FIELD in this record or VAL in other record
char fullname[PVNAME_SZ + 1];
sprintf(fullname, "%s.%s", name(), fieldname);
if (dbNameToAddr(fullname, &dbaddr) != OK)
{
// VAL in other record
sprintf(fullname, "%s.VAL", fieldname);
if (dbNameToAddr(fullname, &dbaddr) != OK) return false;
}
The first sprintf prints
$(device):StatEnable.$(device):StatEnableInterlock which is way too
long. My fault. I will send a patch soon....
Dirk
Try this:
// FIELD in this record or VAL in other record
StreamBuffer fullname;
fullname.print("%s.%s", name(), fieldname);
if (dbNameToAddr(fullname(), &dbaddr) != OK)
{
// VAL in other record
fullname.clear().print("%s.VAL", fieldname);
if (dbNameToAddr(fullname(), &dbaddr) != OK) return false;
}
(in src/StreamEpics.cc function getFieldAddress)
Dirk