Hello Mark,
Thank you for checking this!
I realized I used the wrong version of asyn after I sent the previous
email. I installed asyn-R4-30, re-installed areaDetector, ipUnidig and
quadEM-R7-0, but I still get the same error when I start the IOC.
The backtrace printout is as follows:
terminate called after throwing an instance of 'ParamValNotDefined'
what(): paramVal::getInteger value not defined
Thread 1 "quadEMTestApp" received signal SIGABRT, Aborted.
0x0000fffff78d6650 in __pthread_kill_implementation () from /usr/lib64/libc.so.6
Missing separate debuginfos, use: dnf debuginfo-install
glibc-2.34-83.el9_3.7.aarch64 keyutils-libs-1.6.3-1.el9.aarch64
krb5-libs-1.21.1-1.el9.aarch64 libaec-1.0.6-1.el9.aarch64
libcom_err-1.46.5-3.el9.aarch64 libgcc-11.4.1-2.1.el9.aarch64
libjpeg-turbo-2.0.90-6.el9_1.aarch64 libselinux-3.5-1.el9.aarch64
libstdc++-11.4.1-2.1.el9.aarch64 libtirpc-1.3.3-2.el9.aarch64
libxml2-2.9.13-5.el9_3.aarch64 openssl-libs-3.0.7-24.el9.aarch64
pcre2-10.40-2.el9.aarch64 xz-libs-5.2.5-8.el9_0.aarch64
zlib-1.2.11-40.el9.aarch64
(gdb) backtrace
#0 0x0000fffff78d6650 in __pthread_kill_implementation () from
/usr/lib64/libc.so.6
#1 0x0000fffff789186c in raise () from /usr/lib64/libc.so.6
#2 0x0000fffff7879030 in abort () from /usr/lib64/libc.so.6
#3 0x0000fffff7aa491c in __gnu_cxx::__verbose_terminate_handler() ()
from /usr/lib64/libstdc++.so.6
#4 0x0000fffff7aa22bc in __cxxabiv1::__terminate(void (*)()) () from
/usr/lib64/libstdc++.so.6
#5 0x0000fffff7aa2320 in std::terminate() () from /usr/lib64/libstdc++.so.6
#6 0x0000fffff7aa2604 in __cxa_throw () from /usr/lib64/libstdc++.so.6
#7 0x00000000007b3fc0 in paramVal::getInteger (this=this@entry=0xc0d7c0)
at /usr/include/c++/11/ext/new_allocator.h:89
#8 0x0000000000796160 in paramList::getInteger (this=<optimized out>,
index=index@entry=51, value=0xffffffffe050)
at ../../asyn/asynPortDriver/asynPortDriver.cpp:259
#9 0x000000000079627c in asynPortDriver::getIntegerParam
(value=<optimized out>, index=51, list=0, this=0xc09ee0)
at ../../asyn/asynPortDriver/asynPortDriver.cpp:1302
#10 asynPortDriver::getIntegerParam (this=0xc09ee0, index=51,
value=<optimized out>)
at ../../asyn/asynPortDriver/asynPortDriver.cpp:1289
#11 0x000000000048b364 in NDPluginDriver::connectToArrayPort
(this=this@entry=0xc09ee0) at ../NDPluginDriver.cpp:253
#12 0x000000000044fdc8 in NDPluginStats::NDPluginStats (this=0xc09ee0,
portName=<optimized out>,
queueSize=<optimized out>, blockingCallbacks=<optimized out>,
NDArrayPort=<optimized out>,
NDArrayAddr=<optimized out>, maxBuffers=<optimized out>,
maxMemory=<optimized out>, priority=0, stackSize=0)
at ../NDPluginStats.cpp:838
#13 0x000000000044fe6c in NDStatsConfigure (portName=0xc0fae1
"STATS1", queueSize=20, blockingCallbacks=0,
NDArrayPort=0xc0faed "TetrAMM", NDArrayAddr=0, maxBuffers=0,
maxMemory=0, priority=0, stackSize=0)
at ../NDPluginStats.cpp:848
#14 0x000000000044feec in initCallFunc (args=<optimized out>) at
../NDPluginStats.cpp:874
#15 0x0000000000899c00 in iocshBody (
pathname=pathname@entry=0xbdcad0
"/epicsioc/used/epics/synApps_5_8_3_14_8/quadEM-R7-0/iocBoot/commonPlugins.cmd",
commandLine=commandLine@entry=0x0) at
../../../src/libCom/iocsh/iocsh.cpp:771
#16 0x0000000000899a24 in iocshBody (
pathname=pathname@entry=0xbbe4c0
"/epicsioc/used/epics/synApps_5_8_3_14_8/quadEM-R7-0/iocBoot/iocTetrAMM/TetrAMM.cmd",
commandLine=commandLine@entry=0x0) at
../../../src/libCom/iocsh/iocsh.cpp:744
#17 0x0000000000899a24 in iocshBody (pathname=<optimized out>,
commandLine=<optimized out>)
at ../../../src/libCom/iocsh/iocsh.cpp:744
--Type <RET> for more, q to quit, c to continue without paging--
#18 0x00000000004095f8 in main (argc=<optimized out>, argv=<optimized
out>) at ../quadEMTestAppMain.cpp:16
Some additional information about quadEM-R7-0 compiling: I initially
had compiling error like:
../drvTetrAMM.cpp:258:22: error: narrowing conversion of
‘18443366386873925631’ from ‘long long unsigned int’ to ‘long long
int’ [-Wnarrowing] 258 | case 0xfff40002ffffffffll:
So I changed line 258 (and three following case ***** sentences) to:
case static_cast<long long int>(0xfff40002ffffffff):
.....
case static_cast<long long int>(0xfff40000ffffffff):
.....
case static_cast<long long int>(0xfff40001ffffffff):
.....
case static_cast<long long int>(0xfff40003ffffffff):
I hope these changes are irrelevant.
Thank you very much!
Rong
On Tue, Dec 19, 2023 at 4:10 PM Mark Rivers <rivers at cars.uchicago.edu> wrote:
>
> Hi Rong,
>
>
>
> You appear to be running asyn R4-36.
>
>
>
> You are getting this error:
>
>
>
> NDStatsConfigure("STATS1", 20, 0, "TetrAMM", 0, 0, 0) terminate called after throwing an instance of 'ParamValNotDefined'
>
> what(): paramVal::getInteger value not defined Aborted (core dumped)
>
>
>
> I do not understand that. The only place where paramVal::getInteger should be called is in this line in asynPortDriver R4-36:
>
> https://github.com/epics-modules/asyn/blob/89c2b93d14cdb7fe48d490785cd7780c1b997277/asyn/asynPortDriver/asynPortDriver.cpp#L288
>
>
>
> Note that paramVal::getInteger is called in a try/catch block, and exception ParamValNotDefined is explicitly caught. So it should simply return asynParamUndefined to the function that called paramList::GetInteger, which is normally asynPortDriver::getIntegerParam().
>
>
>
> Your error message says that the crash generated a core dump. I think you need to run gdb on that core file and send the output of the gdb “backtrace” command.
>
>
>
> Alternatively you can run the IOC again under gdb as follows:
>
>
>
> gdb ../../bin/linux-arm/quadEMTestApp
>
> run st.cmd
>
>
>
> (when it crashes type this command)
>
> backtrace
>
>
>
> That will show the call stack when it crashed, and we may be able to figure out why it is happening.
>
>
>
> Mark
>
>
>
> -----Original Message-----
> From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of Rong Huang via Tech-talk
> Sent: Tuesday, December 19, 2023 2:35 PM
> To: tech-talk at aps.anl.gov
> Subject: quadEM-R7-0 ParamValNotDefined
>
>
>
> Hello,
>
>
>
> Sorry I am living in the past. I am trying to install the old version
>
> quadEM-R7-0 to match the EPICS_base version (3.14.12.8) and Asyn version in use.
>
>
>
> I installed everything without vxWorks, with the intention to run the IOC on a PC. Currently working on RHEL linux-arm inside VMware Fusion.
>
>
>
> The TetrAMM instrument is new, but I guess the error message is not about hardware but EPICS software. The printout of starting IOC is as
>
> follows:
>
>
>
> [rh@localhost iocTetrAMM]$ ../../bin/linux-arm/quadEMTestApp st.cmd
>
> errlogInit(5000)
>
> < envPaths
>
> epicsEnvSet("ARCH","linux-x86_64")
>
> epicsEnvSet("IOC","iocTetrAMM")
>
> epicsEnvSet("TOP","/epicsioc/used/epics/synApps_5_8_3_14_8/quadEM-R7-0")
>
> epicsEnvSet("SUPPORT","/epicsioc/used/epics/synApps_5_8_3_14_8")
>
> epicsEnvSet("AREA_DETECTOR","/epicsioc/used/epics/synApps_5_8_3_14_8/areaDetector-R2-5")
>
> epicsEnvSet("EPICS_BASE","/epicsioc/used/epics/base-3.14.12.8")
>
> epicsEnvSet("ASYN","/epicsioc/used/epics/synApps_5_8_3_14_8/asyn-4-36")
>
> epicsEnvSet("ADSUPPORT","/epicsioc/used/epics/synApps_5_8_3_14_8/areaDetector-R2-5/ADSupport")
>
> epicsEnvSet("ADCORE","/epicsioc/used/epics/synApps_5_8_3_14_8/areaDetector-R2-5/ADCore")
>
> epicsEnvSet("AUTOSAVE","/epicsioc/used/epics/synApps_5_8_3_14_8/autosave-5-10")
>
> epicsEnvSet("BUSY","/epicsioc/used/epics/synApps_5_8_3_14_8/busy-1-7-2")
>
> epicsEnvSet("CALC","/epicsioc/used/epics/synApps_5_8_3_14_8/calc-3-7-3")
>
> epicsEnvSet("SNCSEQ","/epicsioc/used/epics/synApps_5_8_3_14_8/seq-2-2-7")
>
> epicsEnvSet("SSCAN","/epicsioc/used/epics/synApps_5_8_3_14_8/sscan-2-11-3")
>
> epicsEnvSet("DEVIOCSTATS","/epicsioc/used/epics/synApps_5_8_3_14_8/iocStats-3-1-16")
>
> epicsEnvSet("IPAC","/epicsioc/used/epics/synApps_5_8_3_14_8/ipac-2-15")
>
> epicsEnvSet("IPUNIDIG","/epicsioc/used/epics/synApps_5_8_3_14_8/ipUnidig-2-10")
>
> # Tell EPICS all about the record types, device-support modules, drivers, # etc. in this build
>
> epicsEnvSet("QUADEM","/epicsioc/used/epics/synApps_5_8_3_14_8/quadEM-R7-0")
>
> dbLoadDatabase("/epicsioc/used/epics/synApps_5_8_3_14_8/quadEM-R7-0/dbd/quadEMTestApp.dbd")
>
> quadEMTestApp_registerRecordDeviceDriver(pdbbase)
>
> # The search path for database files
>
> # Note: the separator between the path entries needs to be changed to a semicolon (;) on Windows epicsEnvSet("EPICS_DB_INCLUDE_PATH",
>
> "/epicsioc/used/epics/synApps_5_8_3_14_8/areaDetector-R2-5/ADCore/db:/epicsioc/used/epics/synApps_5_8_3_14_8/quadEM-R7-0/db")
>
> < /epicsioc/used/epics/synApps_5_8_3_14_8/quadEM-R7-0/iocBoot/iocTetrAMM/TetrAMM.cmd
>
> epicsEnvSet("PREFIX", "quadEMTest:")
>
> epicsEnvSet("RECORD", "TetrAMM:")
>
> epicsEnvSet("PORT", "TetrAMM")
>
> epicsEnvSet("TEMPLATE", "TetrAMM")
>
> epicsEnvSet("QSIZE", "20")
>
> epicsEnvSet("RING_SIZE", "10000")
>
> epicsEnvSet("TSPOINTS", "2048")
>
> #epicsEnvSet("IP", "164.54.160.165:10001")
>
> epicsEnvSet("IP", "10.1.17.35:10001")
>
> #drvAsynIPPortConfigure("portName","hostInfo",priority,noAutoConnect,
>
> # noProcessEos)
>
> drvAsynIPPortConfigure("IP_TetrAMM", "10.1.17.35:10001", 0, 0, 0) asynOctetSetInputEos("IP_TetrAMM", 0, "\r\n") asynOctetSetOutputEos("IP_TetrAMM", 0, "\r") # Set both TRACE_IO_ESCAPE (for ASCII command/response) and TRACE_IO_HEX (for binary data) asynSetTraceIOMask("IP_TetrAMM", 0, 6)
>
> #asynSetTraceFile("IP_$(PORT)", 0, "AHxxx.out")
>
> #asynSetTraceMask("IP_$(PORT)", 0, 9)
>
> asynSetTraceIOTruncateSize("IP_TetrAMM", 0, 4000) # Load asynRecord record dbLoadRecords("/epicsioc/used/epics/synApps_5_8_3_14_8/asyn-4-36/db/asynRecord.db",
>
> "P=quadEMTest:, R=asyn1,PORT=IP_TetrAMM,ADDR=0,OMAX=256,IMAX=256")
>
> drvTetrAMMConfigure("TetrAMM", "IP_TetrAMM", 10000) dbLoadRecords("/epicsioc/used/epics/synApps_5_8_3_14_8/quadEM-R7-0/db/TetrAMM.template",
>
> "P=quadEMTest:, R=TetrAMM:, PORT=TetrAMM") < /epicsioc/used/epics/synApps_5_8_3_14_8/quadEM-R7-0/iocBoot/commonPlugins.cmd
>
> epicsEnvSet("T1", "Current1")
>
> epicsEnvSet("T2", "Current2")
>
> epicsEnvSet("T3", "Current3")
>
> epicsEnvSet("T4", "Current4")
>
> epicsEnvSet("T5", "SumX")
>
> epicsEnvSet("T6", "SumY")
>
> epicsEnvSet("T7", "SumAll")
>
> epicsEnvSet("T8", "DiffX")
>
> epicsEnvSet("T9", "DiffY")
>
> epicsEnvSet("T10", "PosX")
>
> epicsEnvSet("T11", "PosY")
>
> # Create 11 statistics plugins
>
> NDStatsConfigure("STATS1", 20, 0, "TetrAMM", 0, 0, 0) terminate called after throwing an instance of 'ParamValNotDefined'
>
> what(): paramVal::getInteger value not defined Aborted (core dumped)
>
>
>
>
>
> Thank you for your attention,
>
> Rong
- Replies:
- RE: quadEM-R7-0 ParamValNotDefined Mark Rivers via Tech-talk
- References:
- quadEM-R7-0 ParamValNotDefined Rong Huang via Tech-talk
- RE: quadEM-R7-0 ParamValNotDefined Mark Rivers via Tech-talk
- Navigate by Date:
- Prev:
RE: quadEM-R7-0 ParamValNotDefined Mark Rivers via Tech-talk
- Next:
struct evSubscrip error compiling caputRecorder with EPICS 7.0.8 J. Lewis Muir 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
2022
<2023>
2024
- Navigate by Thread:
- Prev:
RE: quadEM-R7-0 ParamValNotDefined Mark Rivers via Tech-talk
- Next:
RE: quadEM-R7-0 ParamValNotDefined Mark Rivers 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
2022
<2023>
2024
|