Hi, Michael!
About autosave usage: the IOC in which i was trying to use it was kinda big and i tried to create a minimal working example which would reproduce the sigfault, but i got weird compilation problems. I have, thus, one big IOC in which i can reproduce the segmentation
fault and one in which even compiling wont happen (but this is probably me doing something wrong).
Case 1: real IOC compiled with Epics Base R7.0.5 and autosave R5-10-2. Compiles, sigfaults with fdbrestore.
Case 2: dummy IOC compiled with Epics Base R7.0.5 and autosave R5-10-2. Doesnt compile.
In both cases, EPICS_BASE was cross compiled in an Ubuntu 16.04 container for both linux-x86_64 and linux-aarch64. Same goes for autosave.
About case 2: ioc was created with
makeBaseApp.pl -t ioc dummyIOC
I just added the paths to epics_base, asyn and autosave to configure/RELEASE, and added
dummyIOC_DBD += base.dbd
dummyIOC_DBD += asyn.dbd
dummyIOC_DBD += asSupport.dbd
and
dummyIOC_LIBS += $(EPICS_BASE_IOC_LIBS)
dummyIOC_LIBS += asyn
dummyIOC_LIBS += autosave
to dummyIOC/src/Makefile.
Compiling this IOC seems to generate problems with the aarch64 architecture in linking stage which is weird for me because in no way inside the dummyIOC i specify i want to cross-compile it (does the cross-compilation come automatically?). I append the failed
compilation output at the end of this e-mail.
About case 1:
ioc was compiled in the same container and with the same EPICS_BASE and autosave as case 2, so the cross-compilation thing also happens, but the ioc compiles for some reason. Im actually running the IOC in an aarch64 ubuntu 16.04.
epics> save_restore:write_save_file: Backup file (/autosave/folder/file.savB) bad or not found. Writing a new one. [221130-001349]
#Several lines later...
epics> set_savefile_path("/autosave/folder/")
epics> fdbrestore("file.sav")
epics> #Here i also tried just fdbrestore("/autosave/folder/file.sav") without setting the path, but result
was equal
save_restore:fdbrestore:entry
Thread 1 "mobipixApp" received signal SIGSEGV, Segmentation fault.
0x0000000000f18758 in epicsMessageQueueSend ()
(gdb) backtrace
#0 0x0000000000f18758 in epicsMessageQueueSend ()
#1 0x0000000000e1fff8 in request_manual_restore ()
#2 0x0000000000f03ec4 in iocshBody ()
#3 0x0000000000599650 in main (argc=<optimized out>, argv=<optimized out>) at ../mobipixAppMain.cpp:20
Compilation output for case 2:
inside dummyIOC folder:
$make
make -C ./configure install
make[1]: Entering directory '/root/dummyIOC/configure'
perl -CSD /usr/local/epics-nfs/base/R7.0.5/bin/linux-x86_64/makeMakefile.pl O.linux-x86_64 ../..
perl -CSD /usr/local/epics-nfs/base/R7.0.5/bin/linux-x86_64/makeMakefile.pl O.linux-aarch64 ../..
mkdir -p O.Common
make -C O.linux-x86_64 -f ../Makefile TOP=../.. \
T_A=linux-x86_64 install
make[2]: Entering directory '/root/dummyIOC/configure/O.linux-x86_64'
perl -CSD /usr/local/epics-nfs/base/R7.0.5/bin/linux-x86_64/convertRelease.pl checkRelease
make[2]: Leaving directory '/root/dummyIOC/configure/O.linux-x86_64'
make -C O.linux-aarch64 -f ../Makefile TOP=../.. \
T_A=linux-aarch64 install
make[2]: Entering directory '/root/dummyIOC/configure/O.linux-aarch64'
perl -CSD /usr/local/epics-nfs/base/R7.0.5/bin/linux-x86_64/convertRelease.pl checkRelease
make[2]: Leaving directory '/root/dummyIOC/configure/O.linux-aarch64'
make[1]: Leaving directory '/root/dummyIOC/configure'
make -C ./dummyIOCApp install
make[1]: Entering directory '/root/dummyIOC/dummyIOCApp'
make -C ./src install
make[2]: Entering directory '/root/dummyIOC/dummyIOCApp/src'
perl -CSD /usr/local/epics-nfs/base/R7.0.5/bin/linux-x86_64/makeMakefile.pl O.linux-x86_64 ../../..
perl -CSD /usr/local/epics-nfs/base/R7.0.5/bin/linux-x86_64/makeMakefile.pl O.linux-aarch64 ../../..
mkdir -p O.Common
make -C O.linux-x86_64 -f ../Makefile TOP=../../.. \
T_A=linux-x86_64 install
make[3]: Entering directory '/root/dummyIOC/dummyIOCApp/src/O.linux-x86_64'
/usr/bin/g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_X86_64_ -DUNIX -Dlinux -O3 -g -Wall -mtune=generic -m64 -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include
-I/usr/local/epics-nfs/base/R7.0.5/include/compiler/gcc -I/usr/local/epics-nfs/base/R7.0.5/include/os/Linux -I/usr/local/epics-nfs/base/R7.0.5/include -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/asyn-R4-42//include -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/include/os/Linux
-I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/include -MM -MF dummyIOCMain.d ../dummyIOCMain.cpp
Creating dbd file dummyIOC.dbd
perl -CSD /usr/local/epics-nfs/base/R7.0.5/bin/linux-x86_64/dbdExpand.pl -I. -I.. -I../O.Common -I../../../dbd -I/usr/local/epics-nfs/base/R7.0.5/dbd -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/asyn-R4-42//dbd
-I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/dbd -o dummyIOC.dbd base.dbd asyn.dbd asSupport.dbd
perl -CSD /usr/local/epics-nfs/base/R7.0.5/bin/linux-x86_64/registerRecordDeviceDriver.pl -I. -I.. -I../O.Common -I../../../dbd -I/usr/local/epics-nfs/base/R7.0.5/dbd -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/asyn-R4-42//dbd
-I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/dbd -o dummyIOC_registerRecordDeviceDriver.cpp ../O.Common/dummyIOC.dbd dummyIOC_registerRecordDeviceDriver /root/dummyIOC
/usr/bin/g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_X86_64_ -DUNIX -Dlinux -O3 -g -Wall -mtune=generic -m64 -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include
-I/usr/local/epics-nfs/base/R7.0.5/include/compiler/gcc -I/usr/local/epics-nfs/base/R7.0.5/include/os/Linux -I/usr/local/epics-nfs/base/R7.0.5/include -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/asyn-R4-42//include -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/include/os/Linux
-I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/include -MM -MF dummyIOC_registerRecordDeviceDriver.d dummyIOC_registerRecordDeviceDriver.cpp
Installing created dbd file ../../../dbd/dummyIOC.dbd
mkdir ../../../dbd
/usr/bin/g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_X86_64_ -DUNIX -Dlinux -O3 -g -Wall -mtune=generic -m64 -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include
-I/usr/local/epics-nfs/base/R7.0.5/include/compiler/gcc -I/usr/local/epics-nfs/base/R7.0.5/include/os/Linux -I/usr/local/epics-nfs/base/R7.0.5/include -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/asyn-R4-42//include -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/include/os/Linux
-I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/include -c dummyIOC_registerRecordDeviceDriver.cpp
/usr/bin/g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_X86_64_ -DUNIX -Dlinux -O3 -g -Wall -mtune=generic -m64 -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include
-I/usr/local/epics-nfs/base/R7.0.5/include/compiler/gcc -I/usr/local/epics-nfs/base/R7.0.5/include/os/Linux -I/usr/local/epics-nfs/base/R7.0.5/include -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/asyn-R4-42//include -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/include/os/Linux
-I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/include -c ../dummyIOCMain.cpp
/usr/bin/g++ -o dummyIOC -L/root/dummyIOC/lib/linux-x86_64 -L/usr/local/epics-nfs/base/R7.0.5/lib/linux-x86_64 -L/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/asyn-R4-42/lib/linux-x86_64 -L/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/lib/linux-x86_64
-Wl,-rpath,/root/dummyIOC/lib/linux-x86_64 -Wl,-rpath,/usr/local/epics-nfs/base/R7.0.5/lib/linux-x86_64 -Wl,-rpath,/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/asyn-R4-42/lib/linux-x86_64 -Wl,-rpath,/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/lib/linux-x86_64
-rdynamic -m64 dummyIOC_registerRecordDeviceDriver.o dummyIOCMain.o -ldbRecStd -ldbCore -lca -lCom -lasyn -lautosave
Installing created executable ../../../bin/linux-x86_64/dummyIOC
mkdir ../../../bin
mkdir ../../../bin/linux-x86_64
make[3]: Leaving directory '/root/dummyIOC/dummyIOCApp/src/O.linux-x86_64'
make -C O.linux-aarch64 -f ../Makefile TOP=../../.. \
T_A=linux-aarch64 install
make[3]: Entering directory '/root/dummyIOC/dummyIOCApp/src/O.linux-aarch64'
/usr/bin/aarch64-linux-gnu-g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -DUNIX -Dlinux -O3 -Wall -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include
-I/usr/local/epics-nfs/base/R7.0.5/include/compiler/gcc -I/usr/local/epics-nfs/base/R7.0.5/include/os/Linux -I/usr/local/epics-nfs/base/R7.0.5/include -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/asyn-R4-42//include -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/include/os/Linux
-I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/include -I/usr/aarch64-linux-gnu/include -MM -MF dummyIOCMain.d ../dummyIOCMain.cpp
perl -CSD /usr/local/epics-nfs/base/R7.0.5/bin/linux-x86_64/registerRecordDeviceDriver.pl -I. -I.. -I../O.Common -I../../../dbd -I/usr/local/epics-nfs/base/R7.0.5/dbd -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/asyn-R4-42//dbd
-I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/dbd -o dummyIOC_registerRecordDeviceDriver.cpp ../O.Common/dummyIOC.dbd dummyIOC_registerRecordDeviceDriver /root/dummyIOC
/usr/bin/aarch64-linux-gnu-g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -DUNIX -Dlinux -O3 -Wall -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include
-I/usr/local/epics-nfs/base/R7.0.5/include/compiler/gcc -I/usr/local/epics-nfs/base/R7.0.5/include/os/Linux -I/usr/local/epics-nfs/base/R7.0.5/include -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/asyn-R4-42//include -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/include/os/Linux
-I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/include -I/usr/aarch64-linux-gnu/include -MM -MF dummyIOC_registerRecordDeviceDriver.d dummyIOC_registerRecordDeviceDriver.cpp
/usr/bin/aarch64-linux-gnu-g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -DUNIX -Dlinux -O3 -Wall -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include
-I/usr/local/epics-nfs/base/R7.0.5/include/compiler/gcc -I/usr/local/epics-nfs/base/R7.0.5/include/os/Linux -I/usr/local/epics-nfs/base/R7.0.5/include -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/asyn-R4-42//include -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/include/os/Linux
-I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/include -I/usr/aarch64-linux-gnu/include -c dummyIOC_registerRecordDeviceDriver.cpp
/usr/bin/aarch64-linux-gnu-g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -DUNIX -Dlinux -O3 -Wall -I. -I../O.Common -I. -I. -I.. -I../../../include/compiler/gcc -I../../../include/os/Linux -I../../../include
-I/usr/local/epics-nfs/base/R7.0.5/include/compiler/gcc -I/usr/local/epics-nfs/base/R7.0.5/include/os/Linux -I/usr/local/epics-nfs/base/R7.0.5/include -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/asyn-R4-42//include -I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/include/os/Linux
-I/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/include -I/usr/aarch64-linux-gnu/include -c ../dummyIOCMain.cpp
/usr/bin/aarch64-linux-gnu-g++ -o dummyIOC -Wl,-Bstatic -L/root/dummyIOC/lib/linux-aarch64 -L/usr/local/epics-nfs/base/R7.0.5/lib/linux-aarch64 -L/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/asyn-R4-42/lib/linux-aarch64
-L/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/lib/linux-aarch64 -Wl,-rpath,/root/dummyIOC/lib/linux-aarch64 -Wl,-rpath,/usr/local/epics-nfs/base/R7.0.5/lib/linux-aarch64 -Wl,-rpath,/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/asyn-R4-42/lib/linux-aarch64
-Wl,-rpath,/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/lib/linux-aarch64 -rdynamic -L/usr/aarch64-linux-gnu/lib dummyIOC_registerRecordDeviceDriver.o dummyIOCMain.o -ldbRecStd -ldbCore -lca -lCom -lasyn
-lautosave -Wl,-Bdynamic -lpthread -lm -lrt -ldl -lgcc
/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/lib/linux-aarch64/libautosave.a(save_restore.o): In function `manual_save':
save_restore.c:(.text+0x898): undefined reference to `epicsMessageQueueSend'
/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/lib/linux-aarch64/libautosave.a(save_restore.o): In function `remove_data_set':
save_restore.c:(.text+0x48a4): undefined reference to `epicsMessageQueueSend'
/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/lib/linux-aarch64/libautosave.a(save_restore.o): In function `reload_periodic_set':
save_restore.c:(.text+0x4ba0): undefined reference to `epicsMessageQueueSend'
/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/lib/linux-aarch64/libautosave.a(save_restore.o): In function `reload_triggered_set':
save_restore.c:(.text+0x4cec): undefined reference to `epicsMessageQueueSend'
/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/lib/linux-aarch64/libautosave.a(save_restore.o): In function `reload_monitor_set':
save_restore.c:(.text+0x4e10): undefined reference to `epicsMessageQueueSend'
/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/lib/linux-aarch64/libautosave.a(save_restore.o):save_restore.c:(.text+0x4f2c): more undefined references to `epicsMessageQueueSend' follow
/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/lib/linux-aarch64/libautosave.a(save_restore.o): In function `create_data_set':
save_restore.c:(.text+0x7d20): undefined reference to `epicsMessageQueueCreate'
/usr/local/epics-nfs/modules/R7.0.5/support/synApps/support/autosave-R5-10-2/lib/linux-aarch64/libautosave.a(save_restore.o): In function `save_restore':
save_restore.c:(.text+0x84bc): undefined reference to `epicsMessageQueueReceiveWithTimeout'
collect2: error: ld returned 1 exit status
/usr/local/epics-nfs/base/R7.0.5/configure/RULES_BUILD:226: recipe for target 'dummyIOC' failed
make[3]: *** [dummyIOC] Error 1
make[3]: Leaving directory '/root/dummyIOC/dummyIOCApp/src/O.linux-aarch64'
/usr/local/epics-nfs/base/R7.0.5/configure/RULES_ARCHS:58: recipe for target 'install.linux-aarch64' failed
make[2]: *** [install.linux-aarch64] Error 2
make[2]: Leaving directory '/root/dummyIOC/dummyIOCApp/src'
/usr/local/epics-nfs/base/R7.0.5/configure/RULES_DIRS:85: recipe for target 'src.install' failed
make[1]: *** [src.install] Error 2
make[1]: Leaving directory '/root/dummyIOC/dummyIOCApp'
/usr/local/epics-nfs/base/R7.0.5/configure/RULES_DIRS:85: recipe for target 'dummyIOCApp.install' failed
make: *** [dummyIOCApp.install] Error 2
$