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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: LUA: Segmentation fault on Raspberry for IOC being invoked from shell prompt; no problem via gdb execution. |
From: | "Lang, Keenan C. via Tech-talk" <tech-talk at aps.anl.gov> |
To: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>, Kuldeep Joshi <kuldeep.joshi at gmail.com> |
Date: | Sun, 14 Feb 2021 01:01:33 +0000 |
Hello Kuldeep,
From your stack trace, the issue is occurring when the record is setting up the input links, which occurs after the point that it would attempt to load the scripts and compile the bytecode.
The line that triggers the error is calling dbNameToAddr which takes a specified PV name and attempts to return a data structure about it. I see that the recommended way of checking the information the record needs was changed between 3.15 and 3.16 to use dbLinkIsConstant/dbLinkIsVolatile.
I've updated the code on the master branch to match up with the equivalent code from the calcout record from a more modern version of epics base.
Hopefully, that fixes what is causing the issue.
Keenan Lang
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Kuldeep Joshi via Tech-talk <tech-talk at aps.anl.gov>
Sent: Friday, February 12, 2021 6:58 AM To: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov> Subject: LUA: Segmentation fault on Raspberry for IOC being invoked from shell prompt; no problem via gdb execution. Hello
I have compiled Epics 7.0.4.1 with SynApps 6-2 on Raspberry PI with Raspberry OS. I am specifying ARCH=linux-arm I see from the release notes that there can be some build issues for self hosted ARM processors On building the IOC I notice that the command history is not working. ie I get special characters displayed on arrow key press (instead of the earlier typed command). readline-common is installed on the PI The db files in the current working directory are not identified even when the OS PATH variable has ./ in it. In this case I have to specifically give file/script name as ./filename to dbLoadRecords() calls. This workaround is working successfully. I tried implementing the LUA script record, which is causing segmentation fault. Setting the present directory path using epicsEnvSet("LUA_SCRIPT_PATH", "./:./scripts") is not helping.
I suspect the problem is that the file path is not being passed over to the iocsh and hence the problem. When I execute the code via gdb, there is no such problem and the shell executes the lua script and the lua records successfully.
Any pointers will be helpful.
This problem is not occurring on regular Intel PCThank you in advance, Kuldeep Joshi the core dump backtrace in gdb is below
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
Core was generated by `../../bin/linux-arm/timsAmpA ./st.cmd.tims'.Program terminated with signal SIGSEGV, Segmentation fault. #0 0xb6b7f67c in dbNameToAddr () from /home/pi/Documents/Projects/EPICS/base-7.0/lib/linux-arm/libdbCore.so [Current thread is 1 (Thread 0xb6fe0250 (LWP 1128))] (gdb) bt #0 0xb6b7f67c in dbNameToAddr () from /home/pi/Documents/Projects/EPICS/base-7.0/lib/linux-arm/libdbCore.so #1 0xb6e7ae7c in setLinks(luascriptRecord*) () from /home/pi/Documents/Projects/EPICS/support/synApps/support/lua-R3-0-1/lib/linux-arm/liblua.so #2 0xb6e7af6c in init_record(dbCommon*, int) () from /home/pi/Documents/Projects/EPICS/support/synApps/support/lua-R3-0-1/lib/linux-arm/liblua.so #3 0xb6bb9574 in iocBuild_2 () from /home/pi/Documents/Projects/EPICS/base-7.0/lib/linux-arm/libdbCore.so #4 0xb6bb9724 in iocBuild () from /home/pi/Documents/Projects/EPICS/base-7.0/lib/linux-arm/libdbCore.so #5 0xb6bb98fc in iocInit () from /home/pi/Documents/Projects/EPICS/base-7.0/lib/linux-arm/libdbCore.so #6 0xb6bb9d44 in iocInitCallFunc () from /home/pi/Documents/Projects/EPICS/base-7.0/lib/linux-arm/libdbCore.so #7 0xb6accb9c in iocshBody () from /home/pi/Documents/Projects/EPICS/base-7.0/lib/linux-arm/libCom.so #8 0x00018ba4 in main () (gdb) |