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
<2020>
2021
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
<2020>
2021
2022
2023
2024
|