Hi Marty,
I was using our pvaPy for the IOC, and did not use a C++ based IOC, therefore, my IOC did not crash.
Since you have seen the IOC crash, maybe you can give more detailed info there.
Therefore, how about that you create an issue, and add some stack trace details?
Thanks,
Guobao
I just tried using pvget with the PVRrestrictedUnion record from exampleCPP/database.
Just like your example it does work with
mrk> pvget -r value PVRrestrictedUnion
PVRrestrictedUnion structure
union value
(none)
But with
mrk> pvinfo PVRrestrictedUnion
PVRrestrictedUnion
Server: 10.0.0.19:5075
Type:
epics:nt/NTUnion:1.0
union value
string string
string[] stringArray
time_t timeStamp
long secondsPastEpoch
int nanoseconds
int userTag
mrk> pvget -r value.string PVRrestrictedUnion
It does not work and actually causes the IOC to crash.
Is it valid to ask for -r value.string?
Perhaps yes with the expectation that you will find out if this is the current type of the value field.
If not you could get valid error message.
Please create a issue in pvDatabaseCPP giving your original message.
On 3/21/19 11:43 AM, Shen, Guobao via Core-talk wrote:
Hi Core member,
Does anyone have experienced to read sub field of a Union structure?
For example, I have a record:
$ pvinfo Test:Data
…
structure
uint ArrayId
double[] Time
union value
float[] data1
double[] data2
If I use
$ pvget -r value Test:Data
Test:Data
structure
union value
float[] [-0.034794,-0.0417011, …]
But if I do it with:
$ pvget -r value.data1 Test:Data
I got an error on my client like
[Test: Data] failed to create channel get: Status [type=FATAL, message=std::bad_alloc]
Is that a right way to use it for union?
Thanks,
Guobao