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  <20182019  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  <20182019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: Segmentation fault when setting motorStatusProblem_ to 1
From: "Sobhani, Bayan" <[email protected]>
To: Mark Rivers <[email protected]>, "Kasemir, Kay" <[email protected]>
Cc: "[email protected]" <[email protected]>
Date: Thu, 1 Feb 2018 19:25:15 +0000
Thank you Mark and Kay, I believe my problem is solved now. I ran the IOC from gdb that way and saw:

#5  0x00007ffff7bd89a6 in SmarActMCS2Axis::stop(double) [clone .localalias.1]
    () from /home/alex/iocs/motor/lib/linux-x86_64/libsmarActMCS2Motor.so
#6  0x00007ffff7bd89a6 in SmarActMCS2Axis::stop(double) [clone .localalias.1]
    () from /home/alex/iocs/motor/lib/linux-x86_64/libsmarActMCS2Motor.so

Repeated over and over again. My SmarActMCS2Axis::stop function had a line in it that read "stop(channel)", which was supposed to be calling a function in the global namespace, but was instead calling itself recursively. Replacing it with "::stop(channel)" fixed the problem.

Alex

-----Original Message-----
From: Kasemir, Kay [mailto:[email protected]] 
Sent: Thursday, February 1, 2018 1:49 PM
To: Sobhani, Bayan <[email protected]>
Cc: [email protected]
Subject: Re: Segmentation fault when setting motorStatusProblem_ to 1

>How exactly do i run the IOC from gdb? 

# Go to the directory that has the st.cmd file cd iocStart/your_ioc_directory

# Check the st.cmd file. It should start with something like #  "#!../../bin/linuxx86_64/name_of_your_ioc_binary"
#
# That's what you load into GDB

gdb ../../bin/linuxx86_64/name_of_your_ioc_binary

# Then, inside gdb, you start the process with the st.cmd file as input run st.cmd

# Once it crashes, list the threads
info threads

# Pick one
thread 3

# Get backtrace
bt

# Select some interesting stack frame
frame 2

# print stuff
print some_var
print *some_pointer_var

   

References:
Segmentation fault when setting motorStatusProblem_ to 1 Sobhani, Bayan
RE: Segmentation fault when setting motorStatusProblem_ to 1 Mark Rivers
RE: Segmentation fault when setting motorStatusProblem_ to 1 Sobhani, Bayan
Re: Segmentation fault when setting motorStatusProblem_ to 1 Kasemir, Kay

Navigate by Date:
Prev: Re: Segmentation fault when setting motorStatusProblem_ to 1 Kasemir, Kay
Next: cross-compiling for ppc64 with seq 2.1 and 2.2 Jeong Han Lee
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  <20182019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Segmentation fault when setting motorStatusProblem_ to 1 Kasemir, Kay
Next: cross-compiling for ppc64 with seq 2.1 and 2.2 Jeong Han Lee
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  <20182019  2020  2021  2022  2023  2024 
ANJ, 01 Feb 2018 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·