Experimental Physics and Industrial Control System
Hi Mark,
Thank you very much for looking into this quickly.
I will find a linux-x86_64 computer and try it again!
Thanks,
Rong
On Tue, Dec 19, 2023 at 6:23 PM Mark Rivers <rivers at cars.uchicago.edu> wrote:
>
> Hi Rong,
>
>
>
> I still don't understand the error. Your trace shows that the error is happening here:
>
>
>
> #8 0x0000000000796160 in paramList::getInteger (this=<optimized out>, index=index@entry=51, value=0xffffffffe050)
>
> at ../../asyn/asynPortDriver/asynPortDriver.cpp:259
>
>
>
> This is line 259 in asynPortDriver.cpp in asyn-R4-30
>
> https://github.com/epics-modules/asyn/blob/7f10aeaa8ce798bb00442dc9e44bdb619a409d46/asyn/asynPortDriver/asynPortDriver.cpp#L259
>
>
>
> Note that it is calling paramVal::getInteger in a try/catch block that explicitly catches the exception you are getting, ParamValNotDefined. So I don't understand why this is causing your program to terminate, rather than simply catching the error and return and error status.
>
>
>
> It seems like perhaps there is something different about the way C++ exception handling works with the linux-arm architecture? No one has ever reported this error before, but most people are using linux-x86_64.
>
>
>
> 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.
>
>
>
> Those errors are fixed in quadEM R9-5. They are not related to the exception errors you are getting.
>
>
>
> Mark
>
>
>
> -----Original Message-----
> From: Rong Huang <ronghuang at ls-cat.org>
> Sent: Tuesday, December 19, 2023 5:20 PM
> To: Mark Rivers <rivers at cars.uchicago.edu>
> Cc: tech-talk at aps.anl.gov
> Subject: Re: quadEM-R7-0 ParamValNotDefined
>
>
>
> 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/89c2b93d14cdb7fe48d490785cd
>
> > 7780c1b997277/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/a
>
> > reaDetector-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/areaD
>
> > etector-R2-5/ADSupport")
>
> >
>
> > epicsEnvSet("ADCORE","/epicsioc/used/epics/synApps_5_8_3_14_8/areaDete
>
> > ctor-R2-5/ADCore")
>
> >
>
> > epicsEnvSet("AUTOSAVE","/epicsioc/used/epics/synApps_5_8_3_14_8/autosa
>
> > ve-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-1
>
> > 1-3")
>
> >
>
> > epicsEnvSet("DEVIOCSTATS","/epicsioc/used/epics/synApps_5_8_3_14_8/ioc
>
> > Stats-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/ipUnid
>
> > ig-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-R
>
> > 7-0")
>
> >
>
> > dbLoadDatabase("/epicsioc/used/epics/synApps_5_8_3_14_8/quadEM-R7-0/db
>
> > d/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/as
>
> > ynRecord.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/commonPlug
>
> > ins.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
- References:
- quadEM-R7-0 ParamValNotDefined Rong Huang via Tech-talk
- RE: quadEM-R7-0 ParamValNotDefined Mark Rivers via Tech-talk
- Re: 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:
Re: Steps for installing any EPICS Device Support module Eusebio Naif Al-Soliman Fuentes 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 Ralph Lange 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