Hi,
I have an IOC that uses asyn4-30 to communicate with an Hamamatsu C11204-02 chip. This is used for Silicon photomultipliers as power source.
My problem is that the code works perfectly under Linux on an x86_64 system but crashes with the following backtrace on an RaspberryPi .
Program received signal SIGSEGV, Segmentation fault. readFloat64 (drvPvt=0x0, pasynUser=0x0, value=0x0) at ../../asyn/asynPortDriver/asynPortDriver.cpp:1885 1885 pPvt->unlock(); (gdb) bt #0 readFloat64 (drvPvt=0x0, pasynUser=0x0, value=0x0) at ../../asyn/asynPortDriver/asynPortDriver.cpp:1885 #1 0xb6cc22a0 in readOp (pasynUser=0xc2260, pvalue=0xbefff400, timeout=<optimized out>) at ../../asyn/interfaces/asynFloat64SyncIO.c:162 #2 0xb6cef100 in initAo (pao=0xba468) at ../../asyn/devEpics/devAsynFloat64.c:514 #3 0xb6b7f830 in init_record (prec=<optimized out>, pass=<optimized out>) at ../../../src/std/rec/aoRecord.c:139 #4 0xb6b4b1c0 in doInitRecord1 (user=0x0, precord=<optimized out>, pdbRecordType=0x53e38) at ../../../src/ioc/misc/iocInit.c:543 #5 iterateRecords (func=<optimized out>, user=0x0) at ../../../src/ioc/misc/iocInit.c:472 #6 initDatabase () at ../../../src/ioc/misc/iocInit.c:551 #7 iocBuild_2 () at ../../../src/ioc/misc/iocInit.c:148 #8 0xb6b4b330 in iocBuild () at ../../../src/ioc/misc/iocInit.c:187 #9 0xb6b4b504 in iocInit () at ../../../src/ioc/misc/iocInit.c:99 #10 0xb6a63d6c in iocshBody (pathname=<optimized out>, commandLine=0x47858 "H.\v", macros=0x14 <error: Cannot access memory at address 0x14>) at ../../../src/libCom/iocsh/iocsh.cpp:815 #11 0x0001ea64 in main (argc=<optimized out>, argv=<optimized out>) at ../iocMain.cpp:20
I'm wondering why all the parameters paswsed to readFloat64 are NULL. The crash happens already during iocInit, when the first Parameter that has PINI set to YES is processed.
Any idea what could cause this crash?
Regards
Jörn |