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  <20112012  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  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: soft ioc runs into fatal exception (base-3.14.12)
From: "Jeff Hill" <[email protected]>
To: "'Carsten Winkler'" <[email protected]>
Cc: [email protected]
Date: Tue, 15 Feb 2011 09:43:08 -0700
Hello Carsten,

> "caput.exe" runs sometimes into exception! This exception 
> is very hard to catch (1% of calls in my case).
> The exception occurs in the connectNotify function in "src/ca/tcpiiu.cpp":

My hypothesis is that this 1% corresponds with situations where caput.exe
times out waiting for the connect, and in this situation occasionally the ca
client context is being destroyed a very close to the same time that another
thread is processing a channel connect response message.

It appears that your issue might be fixed by prior revision 12173 (occurring
on 2011-01-15) to ca/tcpiiu.cpp. Unfortunately, I am having trouble finding
the relevant bug report to link to at launch-pad.

If this does not resolve your issue let me know and I will look more
carefully at the source.

C:\hill\epicsInBazaar\R3.14\trunk\src\ca>bzr diff -c12173 tcpiiu.cpp
=== modified file 'src/ca/tcpiiu.cpp'
--- src/ca/tcpiiu.cpp 2010-09-20 21:21:50 +0000
+++ src/ca/tcpiiu.cpp 2011-01-15 00:53:33 +0000
@@ -1866,10 +1866,14 @@
     guard.assertIdenticalMutex ( this->mutex );

     while ( nciu * pChan = this->createReqPend.get () ) {
+ pChan->channelNode::listMember =
+ channelNode::cs_none;
         pChan->serviceShutdownNotify ( cbGuard, guard );
     }

     while ( nciu * pChan = this->createRespPend.get () ) {
+ pChan->channelNode::listMember =
+ channelNode::cs_none;
         // we dont yet know the server's id so we cant
         // send a channel delete request and will instead
         // trust that the server can do the proper cleanup
@@ -1878,12 +1882,16 @@
     }

     while ( nciu * pChan = this->v42ConnCallbackPend.get () ) {
+ pChan->channelNode::listMember =
+ channelNode::cs_none;
         this->clearChannelRequest ( guard,
             pChan->getSID(guard), pChan->getCID(guard) );
         pChan->serviceShutdownNotify ( cbGuard, guard );
     }

     while ( nciu * pChan = this->subscripReqPend.get () ) {
+ pChan->channelNode::listMember =
+ channelNode::cs_none;
         pChan->disconnectAllIO ( cbGuard, guard );
         this->clearChannelRequest ( guard,
             pChan->getSID(guard), pChan->getCID(guard) );
@@ -1891,6 +1899,8 @@
     }

     while ( nciu * pChan = this->connectedList.get () ) {
+ pChan->channelNode::listMember =
+ channelNode::cs_none;
         pChan->disconnectAllIO ( cbGuard, guard );
         this->clearChannelRequest ( guard,
             pChan->getSID(guard), pChan->getCID(guard) );
@@ -1898,6 +1908,8 @@
     }

     while ( nciu * pChan = this->unrespCircuit.get () ) {
+ pChan->channelNode::listMember =
+ channelNode::cs_none;
         pChan->disconnectAllIO ( cbGuard, guard );
         // if we know that the circuit is unresponsive
         // then we dont send a channel delete request and
@@ -1907,6 +1919,8 @@
     }

      while ( nciu * pChan = this->subscripUpdateReqPend.get () ) {
+ pChan->channelNode::listMember =
+ channelNode::cs_none;
         pChan->disconnectAllIO ( cbGuard, guard );
         this->clearChannelRequest ( guard,
             pChan->getSID(guard), pChan->getCID(guard) );

Jeff
______________________________________________________
Jeffrey O. Hill           Email        [email protected]
LANL MS H820              Voice        505 665 1831
Los Alamos NM 87545 USA   FAX          505 665 5107

Message content: TSPA

With sufficient thrust, pigs fly just fine. However, this is
not necessarily a good idea. It is hard to be sure where they
are going to land, and it could be dangerous sitting under them
as they fly overhead. -- RFC 1925


> -----Original Message-----
> From: Carsten Winkler [mailto:[email protected]]
> Sent: Tuesday, February 15, 2011 2:33 AM
> To: Jeff Hill
> Subject: Re: soft ioc runs into fatal exception (base-3.14.12)
> 
> Hello Jeff,
> 
> here is the call stack of exception case:
> 
>      ca.dll!tsDLList<nciu>::remove(nciu & item={...})  line 230 + 0x9
> Bytes    C++
>       ca.dll!tcpiiu::connectNotify(epicsGuard<epicsMutex> & guard={...},
> nciu & chan={...})  line
> 1945    C++
>       ca.dll!cac::createChannelRespAction(callbackManager & mgr={...},
> tcpiiu & iiu={...}, const
> epicsTime & __formal={...}, const caHdrLargeArray & hdr={...}, const
> epicsTime & __formal={...})
> line 1126 + 0x10 Bytes    C++
>       ca.dll!cac::executeResponse(callbackManager & mgr={...}, tcpiiu &
> iiu={...}, const epicsTime &
> currentTime={...}, caHdrLargeArray & hdr={...}, char *
> pMshBody=0x0097f7f8)  line 1193 + 0x1f
> Bytes    C++
>       ca.dll!tcpiiu::processIncoming(const epicsTime & currentTime={...},
> callbackManager &
> mgr={...})  line 1252 + 0x2e Bytes    C++
>       ca.dll!tcpRecvThread::run()  line 519 + 0x13 Bytes    C++
>       Com.dll!epicsThreadCallEntryPoint(void * pPvt=0x003db0b8)  line 85 +
> 0x13 Bytes    C++
>       Com.dll!epicsWin32ThreadEntry(void * lpParameter=0x003da098)  line
> 499 + 0x11 Bytes    C
>       msvcr100d.dll!_callthreadstartex()  line 314 + 0xf Bytes    C
>       msvcr100d.dll!_threadstartex(void * ptd=0x003dfd68)  line 297    C
>       kernel32.dll!_BaseThreadStart@8()  + 0x37 Bytes
> 
> 
> Hope you can fix this problem because we have same problem in our
> OpcIocShell since many month. A
> fairy long time we thought this problem comes from OPC extension. But
> couldn't find the bug. Now we
> hope your fix for ca.dll will solve our problem in OpcIocShell too.
> 
> Greetings from Berlin
> Carsten
> 
> ________________________________
> 
> Helmholtz-Zentrum Berlin für Materialien und Energie GmbH
> 
> Mitglied der Hermann von Helmholtz-Gemeinschaft Deutscher
> Forschungszentren e.V
> 
> Aufsichtsrat: Vorsitzender Prof. Dr. Dr. h.c. mult. Joachim Treusch, stv.
> Vorsitzende Dr. Beatrix Vierkorn- Rudolph
> Geschäftsführer: Prof. Dr. Anke Rita Kaysser-Pyzalla, Prof. Dr. Dr. h.c.
> Wolfgang Eberhardt, Dr. Ulrich Breuer
> 
> Sitz Berlin, AG Charlottenburg, 89 HRB 5583
> 
> Postadresse:
> Hahn-Meitner-Platz 1
> D-14109 Berlin
> 
> http://www.helmholtz-berlin.de



Replies:
Re: soft ioc runs into fatal exception (base-3.14.12) Carsten Winkler
References:
soft ioc runs into fatal exception (base-3.14.12) Carsten Winkler
RE: soft ioc runs into fatal exception (base-3.14.12) Jeff Hill
Re: soft ioc runs into fatal exception (base-3.14.12) Carsten Winkler

Navigate by Date:
Prev: RE: EPICS Config for 2 Ethernet Adapters graham.cox
Next: RE: EPICS Config for 2 Ethernet Adapters Jeff Hill
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: soft ioc runs into fatal exception (base-3.14.12) Carsten Winkler
Next: Re: soft ioc runs into fatal exception (base-3.14.12) Carsten Winkler
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  <20112012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 18 Nov 2013 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·