Skip to content

NDPluginPvxs does not work with CSS/Phoebus with compressed images #556

@MarkRivers

Description

@MarkRivers

CSS/Phoebus works fine with NDPluginPva to display images compressed with the JPEG and LZ4 codecs.

It works fine with NDPluginPvxs to display uncompressed images. However it does not work with NDPluginPvxs to display compressed images.

When tested with LZ4 compressed images the following error messages are seen in the CSS/Phoebus Error Log window:

java.lang.ClassCastException

2026-01-01 15:28:07 WARNING [org.phoebus.pv] Cannot decode '13SIM1:Pva1:Image' [CID 3, SID 117768961 CONNECTED] = epics:nt/NTNDArray:1.0 
    union value
        ubyte[] ubyteValue [255, 241, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, ...]
    codec_t codec
        string name lz4
        any parameters
            long any 5


java.lang.ClassCastException
2026-01-01 15:28:07 WARNING [org.csstudio.display.builder.representation] Cannot draw image from VString["Cannot decode epics:nt/NTNDArray:1.0 

When tested with JPEG compressed images it crashes the IOC with this traceback:


(gdb) bt
#0  0x00007ffff7759eab in __memmove_avx_unaligned_erms () from /lib64/libc.so.6
#1  0x00000000009c59c2 in pvxs::impl::to_wire<unsigned char> (varr=..., buf=...) at ../pvaproto.h:497
#2  pvxs::impl::to_wire_field (buf=..., desc=<optimized out>, store=...) at ../dataencode.cpp:325
#3  0x00000000009c4af7 in pvxs::impl::to_wire_full (buf=..., val=...) at ../dataimpl.h:35
#4  0x00000000009c78bc in pvxs::impl::to_wire_valid (buf=..., val=..., mask=mask@entry=0x7fffe80077d0) at ../dataencode.cpp:436
#5  0x0000000000977e08 in pvxs::impl::(anonymous namespace)::MonitorOp::doReply (
    self=std::shared_ptr<pvxs::impl::(anonymous namespace)::MonitorOp> (use count 3, weak count 1) = {...}) at ../servermon.cpp:173
#6  0x0000000000979299 in operator() (__closure=0x7fff38107498) at ../servermon.cpp:96
#7  pvxs::impl::mdetail::Functor0<pvxs::impl::(anonymous namespace)::MonitorOp::maybeReply(pvxs::server::Server::Pvt*, const std::shared_ptr<pvxs::impl::(anonymous namespace)::MonitorOp>&)::<lambda()> >::invoke(void) (this=0x7fff38107490) at ../evhelper.h:136
#8  0x000000000093e119 in pvxs::impl::mfunction::operator() (this=<synthetic pointer>) at ../evhelper.h:149
#9  pvxs::impl::evbase::Pvt::doWork (this=0x19b68f0) at ../evhelper.cpp:229
#10 0x000000000093e32f in pvxs::impl::evbase::Pvt::doWorkS (sock=<optimized out>, evt=<optimized out>, raw=<optimized out>) at ../evhelper.cpp:248
#11 0x00007ffff7e33aa8 in event_process_active_single_queue () from /lib64/libevent_core-2.1.so.7
#12 0x00007ffff7e357b7 in event_base_loop () from /lib64/libevent_core-2.1.so.7
#13 0x000000000093cfc8 in pvxs::impl::evbase::Pvt::run (this=0x19b68f0) at /usr/include/c++/11/bits/unique_ptr.h:173
#14 0x000000000144e47b in epicsThreadCallEntryPoint (pPvt=0x19b6988) at ../osi/epicsThread.cpp:94
#15 0x0000000001452995 in start_routine (arg=0x19cf1d0) at ../osi/os/posix/osdThread.c:442
#16 0x00007ffff768a0ea in start_thread () from /lib64/libc.so.6
#17 0x00007ffff770f150 in clone3 () from /lib64/libc.so.6

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions