EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  <20222023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  <20222023  2024 
<== Date ==> <== Thread ==>

Subject: Re: How to: IOC reading information from file?
From: "Marco A. Barra Montevechi Filho via Tech-talk" <tech-talk at aps.anl.gov>
To: "Nariyoshi, Pedro" <nariyosh at frib.msu.edu>, Michael Davidsaver <mdavidsaver at gmail.com>
Cc: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Sat, 10 Dec 2022 17:58:08 +0000
Hi, sorry for the late response.

Yes, the Epics base was compiled for both x86_64 and aarch64 and the IOC had no instructions to be compiled for aarch64, only for x86_64. I was not aware that this would cause trouble, i thought the ioc would only be compiled for x86_64.

The EPICS_BASE was configured this way by letting CROSS_COMPILER_TARGET_ARCHS=linux-aarch64 in $EPICS_BASE/configure/CONFIG_SITE and by adding a file called CONFIG_SITE.linux-x86.linux-aarch64 inside configure/os/ with: 

GNU_TARGET = aarch64-linux-gnu
GNU_DIR = /usr
STATIC_BUILD=YES
SHARED_LIBRARIES=NO.

Although i ended up solving my problem with streamDevice exec function, i tried compiling the dummyIOC just to see if we could reproduce the autosave sigfault in a simpler environment. I was not succesfull but here is the report anyway if it is useful:
I tried copying the whole configure directory from EPICS_BASE to the dummyIOC. Also tried adding CROSS_COMPILER_TARGET_ARCHS=linux-aarch64 to dummyIOC/configure/CONFIG and copying the CONFIG_SITE.linux-x86.linux-aarch64 file from EPICS_BASE to dummyIOC/configure. All of this resulted in the same compilation problem:

(...)

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

But the alternative operation i was trying worked: i ended up using streamDevice exec command and i t worked. I just needed to configure the "DUMMY" interface: https://epics.anl.gov/tech-talk/2011/msg00368.php

Thanks,

Marco

From: Nariyoshi, Pedro <nariyosh at frib.msu.edu>
Sent: 30 November 2022 10:53
To: Marco A. Barra Montevechi Filho <marco.filho at lnls.br>; Michael Davidsaver <mdavidsaver at gmail.com>
Cc: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
Subject: Re: How to: IOC reading information from file?
 

I am guessing your epics-base configuration defines building for both x86_64 and aarch64 and your real IOC defines just x86_64 (maybe?). You might want to search for where that is defined with 'grep -e aarch64 -R /path/to/epics-base/configure' or your could copy the 'configure' folder from the real IOC to the dummy IOC.


Pedro Nariyoshi

Software Controls Engineer

Facility for Rare Isotope Beams

Michigan State University

640 South Shaw Lane

East Lansing, MI 48824, USA

Tel. 517-908-7352

Email: nariyosh at frib.msu.edu

1633986722804



From: Marco A. Barra Montevechi Filho <marco.filho at lnls.br>
Sent: Tuesday, November 29, 2022 9:37:16 PM
To: Michael Davidsaver
Cc: Nariyoshi, Pedro; tech-talk at aps.anl.gov
Subject: Re: How to: IOC reading information from file?
 
[EXTERNAL] This email originated from outside of FRIB

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.

I created a .req file in

/autosave/folder/file.req

with the names of some PVs.

I then initialized the IOC (init log is pretty long) and did:

epics> set_requestfile_path("/autosave/folder/")
epics> set_savefile_path("/autosave/folder/")
##The IOC is running as root so it does have write permission 
epics> save_restoreSet_NumSeqFiles(1)
epics> save_restoreSet_SeqPeriodInSeconds(5)
epics> create_monitor_set("file.req")
epics> save_restore:write_save_file: Backup file (/autosave/folder/file.savB) bad or not found.  Writing a new one. [221130-001349]

After waiting 5 seconds i have my .sav files as expected.

Then, running with gdb:

gdb --args /path/to/ioc/binary /path/to/ioc/st.cmd
(gdb) run
#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

am i doing something wrong here?

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
$

From: Michael Davidsaver <mdavidsaver at gmail.com>
Sent: 28 November 2022 17:55
To: Marco A. Barra Montevechi Filho <marco.filho at lnls.br>
Cc: Nariyoshi, Pedro <nariyosh at frib.msu.edu>; tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
Subject: Re: How to: IOC reading information from file?
 
On 11/28/22 12:37, Michael Davidsaver wrote:
> On 11/28/22 12:05, Marco A. Barra Montevechi Filho via Tech-talk wrote:
>> Thanks for the suggestion, Pedro!
>>
>> At the end of the day, i figured that maybe autosave fdbrestore function would do what i wanted. Unfortunately, the function was resulting in segmentation fault. Looking in tech-talk i found this thread: https://epics.anl.gov/tech-talk/2014/msg01851.php <https://epics.anl.gov/tech-talk/2014/msg01851.php> which suggested that for autosave versions before 5.4.1 it is a known bug which is fixed after that. Since im using autosave 5-10-2 and the PVs are not very long, i gave up using autosave for this.
>
> Could you provide any details which might go into a ticket?
> Specific arguments used?  ideally a stack trace?  etc...
>
> https://github.com/epics-modules/autosave/issues

I haven't tried fdbrestore() previously, so I'm not certain about the
caput() errors.  It certainly didn't crash on me.

Did you do full cleanup and rebuild when switching between autosave versions?
(eg. "make distclean", or just deleting and re-downloading the source)

Linking in old object code files is great way to experience some bizarre crashes.


> epics> var save_restoreDebug 5
> epics> fdbrestore "ioc_settings.sav"
> save_restore:fdbrestore:entry
> save_restore:request_manual_restore: entry
> save_restore task: calling do_manual_restore('ioc_settings.sav')
> save_restore:do_manual_restore: entry for file 'ioc_settings.sav'
> epics> do_manual_restore:ca_put() to 'TST:Speed-SP.VAL'failed.
> do_manual_restore:ca_put() to 'TST:DM-Sel.VAL'failed.
> do_manual_restore:ca_put() to 'TST:SampT-Sel.VAL'failed.
> do_manual_restore:ca_put() to 'TST:SampT:N-Sel.VAL'failed.
> do_manual_restore:ca_put() to 'TST:SampDet-Sel.VAL'failed.
> do_manual_restore:ca_put() to 'TST:Plt-SP.VAL'failed.
> do_manual_restore:ca_put() to 'TST:Samp-SP.VAL'failed.
> do_manual_restore:ca_put() to 'TST:Plt:N-SP.VAL'failed.
> do_manual_restore:ca_put() to 'TST:Samp:N-SP.VAL'failed.
> do_manual_restore:ca_put() to 'TST:Gn:X-SP.VAL'failed.
> do_manual_restore:ca_put() to 'TST:Gn:Y-SP.VAL'failed.
> do_manual_restore:ca_put() to 'TST:Gn:Z-SP.VAL'failed.
> do_manual_restore:ca_put() to 'TST:Tl-Sel.VAL'failed.
> save_restore: manual restore status=1 (0==success)



Aviso Legal: Esta mensagem e seus anexos podem conter informações confidenciais e/ou de uso restrito. Observe atentamente seu conteúdo e considere eventual consulta ao remetente antes de copiá-la, divulgá-la ou distribuí-la. Se você recebeu esta mensagem por engano, por favor avise o remetente e apague-a imediatamente.

Disclaimer: This email and its attachments may contain confidential and/or privileged information. Observe its content carefully and consider possible querying to the sender before copying, disclosing or distributing it. If you have received this email by mistake, please notify the sender and delete it immediately.


Replies:
Re: How to: IOC reading information from file? Nariyoshi, Pedro via Tech-talk
Re: How to: IOC reading information from file? Michael Davidsaver via Tech-talk
References:
How to: IOC reading information from file? Marco A. Barra Montevechi Filho via Tech-talk
Re: How to: IOC reading information from file? Nariyoshi, Pedro via Tech-talk
Re: How to: IOC reading information from file? Marco A. Barra Montevechi Filho via Tech-talk
Re: How to: IOC reading information from file? Michael Davidsaver via Tech-talk
Re: How to: IOC reading information from file? Michael Davidsaver via Tech-talk
Re: How to: IOC reading information from file? Marco A. Barra Montevechi Filho via Tech-talk
Re: How to: IOC reading information from file? Nariyoshi, Pedro via Tech-talk

Navigate by Date:
Prev: Re: StreamDevice redirection to ai record with ASLO question Zimoch Dirk (PSI) via Tech-talk
Next: EPICS Qt 3.8.3 [SEC=OFFICIAL] STARRITT, Andrew via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  <20222023  2024 
Navigate by Thread:
Prev: Re: How to: IOC reading information from file? Nariyoshi, Pedro via Tech-talk
Next: Re: How to: IOC reading information from file? Nariyoshi, Pedro via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  <20222023  2024 
ANJ, 12 Dec 2022 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·