Folks, I’ve done some more testing on this problem: It happens on the windows-x64 and windows-x64-debug architectures. It does not happen on the windows-x64-static architecture. The application crashes if a pvAccess client connects to
Folks,
I’ve done some more testing on this problem:
- It happens on the windows-x64 and windows-x64-debug architectures.
- It does not happen on the windows-x64-static architecture.
- The application crashes if a pvAccess client connects to the 13BF1:Pva1:Image, even if the camera is not acquiring.
This is the complete stack trace when the error happens:
ucrtbased.dll!00007ffaac605d32() Unknown
ucrtbased.dll!00007ffaac605590() Unknown
pvAccess.dll!std::vector<char,std::allocator<char>>::operator[](const unsigned __int64 _Pos) Line 1885 C++
> pvAccess.dll!epics::pvAccess::EchoTransportSender::EchoTransportSender(osiSockAddr * echoFrom, unsigned __int64 payloadSize, epics::pvData::ByteBuffer & payloadBuffer) Line 99
C++
pvAccess.dll!epics::pvAccess::ServerEchoHandler::handleResponse(osiSockAddr * responseFrom, const std::shared_ptr<epics::pvAccess::Transport> & transport, char version, char command,
unsigned __int64 payloadSize, epics::pvData::ByteBuffer * payloadBuffer) Line 234 C++
pvAccess.dll!epics::pvAccess::ServerResponseHandler::handleResponse(osiSockAddr * responseFrom, const std::shared_ptr<epics::pvAccess::Transport> & transport, char version, char
command, unsigned __int64 payloadSize, epics::pvData::ByteBuffer * payloadBuffer) Line 174 C++
pvAccess.dll!epics::pvAccess::detail::BlockingTCPTransportCodec::processApplicationMessage() Line 319 C++
pvAccess.dll!epics::pvAccess::detail::AbstractCodec::processReadNormal() Line 255 C++
pvAccess.dll!epics::pvAccess::detail::AbstractCodec::processRead() Line 157 C++
pvAccess.dll!epics::pvAccess::detail::BlockingTCPTransportCodec::receiveThread() Line 1129 C++
pvAccess.dll!epics::pvData::detail::MethRunner<epics::pvAccess::detail::BlockingTCPTransportCodec>::run() Line 57 C++
[External Code]
The last line for which I can see the source code and variable values is line 99 in pvAccess/src/server/pv/responseHandlers.h
https://github.com/epics-base/pvAccessCPP/blob/981ea5a540a0e53fe94fc33c8734e855b1b90e3a/src/server/pv/responseHandlers.h#L99
The value of payloadSize in this function is 0. I see that line 98 above calls toEcho.resize(payLoadSize), and then passes address 0 of this vector in line 99. This seems suspicious, but
maybe it is OK?
Mark
From: Mark Rivers
Sent: Monday, February 26, 2024 6:37 PM
To: tech-talk at aps.anl.gov
Subject: pvAccess assert error
Folks,
I am running a new areaDetector camera. It generates frames that are 4096x3072 pixels, 8-bit. I can collect data from the camera at 150 frames/s using a BitFlow CoaXSpress card with no problems. This is on a Windows PC.
However, when I try to use pvAccess to read the data from the NDPluginPva plugin I get an assert error in pvAccess in my Windows application. The error message is in the attachment.
This happens when I use the ImageJ pvAccess plugin, and also when I use the following Linux command on another machine:
$ pvmonitor 13BF1:Pva1:Image > /dev/null
Any idea what the problem could be? This is base 7.0.7.
Thanks,
Mark