Not all known bugs are listed here - check the Mantis bug database for additional problems, especially any associated with Channel Access. Bugs registered in the Mantis database are closed when a new version of Base is released, so it R3.14.7 is out you'll have to check the closed bugs list.
Reported by Kate Feng: A global pointer needs to be initialized for RTEMS in src/libCom/osi/os/RTEMS/devLibOSD.c as follows:
Index: devLibOSD.c =================================================================== RCS file: /net/phoebus/epicsmgr/cvsroot/epics/base/src/libCom/osi/os/RTEMS/devLibOSD.c,v retrieving revision 1.1.2.2 diff -u -r1.1.2.2 devLibOSD.c --- devLibOSD.c 12 Aug 2003 15:39:48 -0000 1.1.2.2 +++ devLibOSD.c 2 Jul 2004 23:03:13 -0000 @@ -90,6 +90,7 @@ devConnectInterruptVME, devDisconnectInterruptVME, devEnableInterruptLevelVME, devDisableInterruptLevelVME, devA24Malloc,devA24Free,rtmsDevInit}; +devLibVirtualOS *pdevLibVirtualOS = &devLibRTEMSOS; /* RTEMS specific initialization */ LOCAL long
Reported by Gasper Jansa: The ODLY (Output Delay) is not handled properly. The following fixes the problem:
diff -c -r1.22.2.2 calcoutRecord.c *** calcoutRecord.c 16 Dec 2003 19:51:34 -0000 1.22.2.2 --- calcoutRecord.c 24 Jun 2004 17:42:32 -0000 *************** *** 247,254 **** if(pcalc->odly > 0.0) { pcalc->dlya = 1; db_post_events(pcalc,&pcalc->dlya,DBE_VALUE); ! callbackRequestProcessCallback(&prpvt->doOutCb, ! (double)pcalc->odly,pcalc); return(0); } else { pcalc->pact = FALSE; --- 247,254 ---- if(pcalc->odly > 0.0) { pcalc->dlya = 1; db_post_events(pcalc,&pcalc->dlya,DBE_VALUE); ! callbackRequestProcessCallbackDelayed(&prpvt->doOutCb, ! pcalc->prio,pcalc,(double)pcalc->odly); return(0); } else { pcalc->pact = FALSE;
Reported by Dirk Zimoch: There is a bug in dbAccess.c that can crash a PowerPC IOC when DTYP is read via CA (actually when the enum strings are fetched) if the record type has no registered device support - this is the case for purely soft record types such as the calc record. The fix is to apply the following patch in base/src/db:
Index: dbAccess.c =================================================================== RCS file: /net/phoebus/epicsmgr/cvsroot/epics/base/src/db/dbAccess.c,v diff -u -r1.116.2.3 -r1.116.2.4 --- dbAccess.c 19 Feb 2004 01:17:39 -0000 1.116.2.3 +++ dbAccess.c 7 Jun 2004 12:09:48 -0000 1.116.2.4 @@ -147,6 +147,10 @@ goto choice_common; case DBF_DEVICE: pdbDeviceMenu = (dbDeviceMenu *)pdbFldDes->ftPvt; + if(!pdbDeviceMenu) { + *options = (*options)^DBR_ENUM_STRS;/*Turn off option*/ + break; + } no_str = pdbDeviceMenu->nChoice; papChoice = pdbDeviceMenu->papChoice; goto choice_common;
Building R3.14.6 gives compile errors in src/libCom/test/blockingSockTest.cpp when using Tornado 2.2, and warnings from solaris-sparc. These can be fixed by applying the following patch in base/src/libCom/test:
Index: blockingSockTest.cpp =================================================================== RCS file: /net/phoebus/epicsmgr/cvsroot/epics/base/src/libCom/test/blockingSockTest.cpp,v diff -u -r1.1.2.9 -r1.1.2.11 --- blockingSockTest.cpp 13 May 2004 20:00:51 -0000 1.1.2.9 +++ blockingSockTest.cpp 2 Jun 2004 20:55:09 -0000 1.1.2.11 @@ -126,8 +126,9 @@ clientCircuit::clientCircuit ( const address & addrIn ) : circuit ( epicsSocketCreate ( AF_INET, SOCK_STREAM, IPPROTO_TCP ) ) { + address tmpAddr = addrIn; int status = ::connect ( - this->sock, & addrIn.sa, sizeof ( addrIn ) ); + this->sock, & tmpAddr.sa, sizeof ( tmpAddr ) ); assert ( status == 0 ); circuit * pCir = this; @@ -156,8 +157,9 @@ assert ( this->sock != INVALID_SOCKET ); // setup server side + address tmpAddr = addrIn; int status = bind ( this->sock, - & addrIn.sa, sizeof ( addrIn ) ); + & tmpAddr.sa, sizeof ( tmpAddr ) ); assert ( status == 0 ); status = listen ( this->sock, 10 ); assert ( status == 0 ); @@ -215,7 +217,7 @@ client.shutdown (); epicsThreadSleep ( 1.0 ); - char * pStr = "esscimqi_?????"; + const char * pStr = "esscimqi_?????"; if ( client.recvWakeupDetected () ) { pStr = "esscimqi_socketBothShutdownRequired"; }