Skip to content

Segmentation fault in NDPluginPvxs when an NDArray has string attributes #613

Open

Description

@pgap

Steps to reproduce:

  1. Configure the PVXS plugin in commonPlugins.cmd
  2. Run the simDetectorIOC from ADSimDetector
  3. Use simDetectorAttributes.xml as the detector attributes file
  4. Enable NDPluginPvxs callbacks and start acquisition
  5. IOC crashes at the first frame

Backtrace:

Thread 223 "PVA1_Plugin_1" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fff68d486c0 (LWP 949501)]
__strlen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:76
warning: 76	../sysdeps/x86_64/multiarch/strlen-avx2.S: No such file or directory
(gdb) bt
#0  __strlen_avx2 () at ../sysdeps/x86_64/multiarch/strlen-avx2.S:76
#1  0x00007ffff7d7d169 in std::char_traits<char>::length
    (__s=0x6973206369736142 <error: Cannot access memory at address 0x6973206369736142>)
    at /usr/include/c++/13/bits/char_traits.h:399
#2  std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string
    (__a=<optimized out>, __s=0x6973206369736142 <error: Cannot access memory at address 0x6973206369736142>, this=0x7fff68d47070) at /usr/include/c++/13/bits/basic_string.h:648
#3  NTNDArrayConverterPvxs::fromStringAttribute (this=this@entry=0x555555703b40, destValue=..., src=src@entry=0x7ffe9c4f6650)
    at ../ntndArrayConverterPvxs.cpp:448
#4  0x00007ffff7d7e1b1 in NTNDArrayConverterPvxs::fromAttributes (this=0x555555703b40, src=<optimized out>)
    at ../ntndArrayConverterPvxs.cpp:500
#5  0x00007ffff7d82696 in NTNDArrayConverterPvxs::fromArray (this=0x555555703b40, src=src@entry=0x7ffe9c401560)
    at ../ntndArrayConverterPvxs.cpp:206
#6  0x00007ffff7f5dd41 in NTNDArrayRecordPvxs::update (this=0x55555583a3c0, pArray=pArray@entry=0x7ffe9c401560)
    at ../NDPluginPvxs.cpp:63
#7  0x00007ffff7f5de13 in NDPluginPvxs::processCallbacks (this=0x555556543100, pArray=0x7ffe9c401560)
    at /usr/include/c++/13/bits/shared_ptr_base.h:1665
#8  0x00007ffff7eb4b24 in NDPluginDriver::processTask (this=0x555556543100) at ../NDPluginDriver.cpp:534
#9  0x00007ffff7aa723d in epicsThreadCallEntryPoint (pPvt=0x555556508410) at ../osi/epicsThread.cpp:94
#10 0x00007ffff7aabdad in start_routine (arg=0x55555650b3a0) at ../osi/os/posix/osdThread.c:444
#11 0x00007ffff789cb84 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:447
#12 0x00007ffff7929ecc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

Activity

  1. pgap commented on Oct 28, 2026

    @pgap
    Author

    With the patch from #614 the crash does not happen and string attributes seem to be converted correctly

    $ pvget 13SIM1:Pva1:Image
    ...
            epics:nt/NTAttribute:1.0 
                string name Gettysburg
                any value
                    string  "Four score and seven years ago our fathers"
                string[] tags []
                string descriptor "Start of Gettysburg address"
                alarm_t alarm
                    int severity 0
                    int status 0
                    string message 
                time_t timeStamp
                    long secondsPastEpoch 0
                    int nanoseconds 0
                    int userTag 0
                int sourceType 3
                string source myAttrFunct1
    ...
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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