Closed MarkRivers closed 3 years ago
After the above crashes happen the IOC can no longer be run again without power-cycling the Dante. This is very inconvenient.
Hi Mark, We have seen that a possible issue that can cause the crash during List-Mode acquisition is the utilization of the DLL function "isRunning_Sytem()" to detect if the acqusition is terminated or not. This function has been substituted (a part from waveform acquisition mode) with the "isLastDataReceived()". The difference is that the previous function (isRunning_Sytem()) was asynchronous and then went to limit the throughput also in a critical way (in ListMode the throughput critical because of the burst of data coming from the DPP). This new function is synchronous and then doesn't need to communicate with DPP. You can see how to use this function in DANTE Library API manual and in "DPP_Test.cpp"
List mode seems to be working with the new DLL and with the EPICS driver changed to call isLastDataReceived() rather than isRunning_system().
List mode acquisition seems to work much of the time. However, it sometimes crashes with the following stack trace:
These calls are all in a thread in the libXGL_DPP.so library, so it does not seem to be caused by the EPICS drive.