EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024  Index 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: AW: Crash in EPICS 7 at iocInit
From: Michael Davidsaver via Core-talk <core-talk at aps.anl.gov>
To: "Zimoch Dirk (PSI)" <dirk.zimoch at psi.ch>
Cc: EPICS core-talk <core-talk at aps.anl.gov>
Date: Tue, 11 Aug 2020 07:44:41 -0700
On 8/11/20 5:55 AM, Zimoch Dirk (PSI) wrote:
> When compiling with ELDK 5.3, using a newer compiler, I get this at the breakpoint:
> (gdb) print internal
> $1 = {<std::tr1::__shared_ptr<{anonymous}::InternalClientContextImpl, (__gnu_cxx::_Lock_policy)2u>> = {
>     _M_ptr = 0x10090cb8, _M_refcount = {_M_pi = 0x1008e188}}, <No data fields>}
> (gdb) print *internal._M_ptr
> $2 = {<epics::pvAccess::ClientContextImpl> = {<epics::pvAccess::Context> = {
>       _vptr.Context = 0xfe68f08}, <No data fields>},
>     <epics::pvAccess::ChannelProvider> = {<epics::pvAccess::Destroyable> = {_vptr.Destroyable = 0xfe68f80},
>     static PRIORITY_MIN = 0, static PRIORITY_MAX = 99, static PRIORITY_DEFAULT = 0, static PRIORITY_LINKS_DB = 99,
>     static PRIORITY_ARCHIVE = 49, static PRIORITY_OPI = 0, static num_instances = 2}, static num_instances = 1,
>   m_external_this = {<std::tr1::__weak_ptr<{anonymous}::InternalClientContextImpl, (__gnu_cxx::_Lock_policy)2u>> = {
>       _M_ptr = 0x10090cb8, _M_refcount = {_M_pi = 0x10091120}}, <No data fields>},
>   m_internal_this = {<std::tr1::__weak_ptr<{anonymous}::InternalClientContextImpl, (__gnu_cxx::_Lock_policy)2u>> = {
>       _M_ptr = 0x10090cb8, _M_refcount = {_M_pi = 0x1008e188}}, <No data fields>}, m_addressList = {
>     static npos = <optimized out>,
> [...]
> 
> That looks better. And it does not crash.
> 
> Using EPICS 7.0.3.1 with the older ELDK 4.2 and stopping at the same breakpoint, I see this:
> (gdb) print internal
> $1 = {<std::tr1::__shared_ptr<<unnamed>::InternalClientContextImpl,_S_atomic>> = {_M_ptr = 0x100c0ae0, _M_refcount = {
>       _M_pi = 0x100bdf28}}, <No data fields>}
> (gdb) print *internal._M_ptr
> Cannot access memory at address 0x1fd05494
> 
> This looks similar to the situation with 7.0.4. I wonder though why the address is 0x1fd05494 and not 0x100c0ae0.
> 
> However continuing works without problems.
> 
> Very strange.

Quite.  Especially since the InternalClientContextImpl constructor has
apparently succeeded in both cases.  So it might be interesting to
break in that constructor and see how 'this' compares with what
later appears in the shared_ptr instances.

Have you tried running the unittests?

Also, is ELDK still being maintained?  From what I can find, the
most recent release was in 5.6 in 2014.

https://ftp.denx.de/pub/eldk/

References:
Crash in EPICS 7 at iocInit Zimoch Dirk (PSI) via Core-talk
Re: Crash in EPICS 7 at iocInit Michael Davidsaver via Core-talk
AW: Crash in EPICS 7 at iocInit Zimoch Dirk (PSI) via Core-talk

Navigate by Date:
Prev: Re: epicsExportShared symbols Michael Davidsaver via Core-talk
Next: RE: epicsExportShared symbols Mark Rivers via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
Navigate by Thread:
Prev: AW: Crash in EPICS 7 at iocInit Zimoch Dirk (PSI) via Core-talk
Next: epicsExportShared symbols Mark Rivers via Core-talk
Index: 2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024 
ANJ, 11 Aug 2020 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·