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";
}