After manually patching osdThread.c (patchfile has corrupt line numbers :-( ) "softIoc.exe" works well.
But now "caput.exe" runs sometimes into exception! This exception is very hard to catch (1% of calls
in my case).
The exception occurs in following function: "src/ca/tcpiiu.cpp":
After manually patching osdThread.c (patchfile has corrupt line numbers :-( ) "softIoc.exe" works well. tcpiiu. cpp":
But now "caput.exe" runs sometimes into exception! This exception is very hard to catch (1% of calls
in my case).
The exception occurs in following function: "src/ca/
bool tcpiiu :: connectNotify ( e::listMember == channelNode: :cs_createRespP end ) {
this-> createRespPend. remove ( chan );
this-> subscripReqPend .add ( chan ); <==== exception occurs here!
epicsGuard < epicsMutex > & guard, nciu & chan )
{
...
if ( chan.channelNod
...
"this-> subscripReqPend .add ( chan );" is dereferencing by "include/ tsDLList. h"
template <class T>
inline void tsDLList<T>::remove ( T &item )
{
tsDLNode<T> &theNode = item;
if ( this->pLast == &item ) {
nextNode. pPrev = theNode.pPrev; <====== sometimes "nextNode.pPrev" is NULL here!!!
this->pLast = theNode.pPrev;
}
else {
tsDLNode<T> &nextNode = *theNode.pNext;
...
Memory map: e={...} cacCtx={...} ...} nciu & cs_createRespPe nd } channelNode eForIO {...} privateInterfac eForIO rmationRequest= false } caAccessRights ame={.. .} chanTable={...} ioTable={...} ...} cac & e={...} cacCtx=??? ...} nciu * e={...} cacCtx=??? ...} nciu *
- nextNode {pNext=??? pPrev=??? } tsDLNode<nciu> &
pNext CXX0030: Fehler: Ausdruck kann nicht ausgewertet werden
pPrev CXX0030: Fehler: Ausdruck kann nicht ausgewertet werden
+ this 0x003db1b4 {pFirst=0x00000000 pLast=0x00000000 itemCount=0 } tsDLList<nciu> * const
- item {eventq={...} accessRightStat
+ cacChannel {priorityMax=99 priorityMin=0 priorityDefault=0 ...} cacChannel
+ chronIntIdRes<nciu> {...} chronIntIdRes<nciu>
+ channelNode {listMember=
+ privateInterfac
+ eventq {pFirst=0x00000000 pLast=0x00000000 itemCount=0 } tsDLList<baseNMIU>
+ accessRightState {f_readPermit=true f_writePermit=true
f_operatorConfi
+ cacCtx {_refLocalHostN
+ pNameStr 0x003dafd8 "demoHost:double1" char *
+ piiu 0x100543ec class noopiiu noopIIU netiiu *
sid 4294967295 unsigned int
count 0 unsigned int
retry 0 unsigned int
nameLength 17 unsigned short
typeCode 65535 unsigned short
priority 0 unsigned char
- theNode {pNext=0x00000000 pPrev=0x00000000 } tsDLNode<nciu> &
+ pNext 0x00000000 {eventq={...} accessRightStat
+ pPrev 0x00000000 {eventq={...} accessRightStat
I checked this at several machines and I don't know what to do next.