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 2025 | 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 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | RE: quadEM-R7-0 ParamValNotDefined |
From: | Mark Rivers via Tech-talk <tech-talk at aps.anl.gov> |
To: | Rong Huang <ronghuang at ls-cat.org>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Tue, 19 Dec 2023 22:10:19 +0000 |
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: 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----- 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 |