EPICS base R3.14.0beta1: Known Problems

Device Support, which does not implement special_linconv, is broken

In release beta1 changes were made to allow ESLO EOFF to be database design fields. Because of changes that were made to aiRecord and aoRecord device support that does not implement special_linconv may no longer work.

To fix aiRecord.c, in init_record replace

    if ((pai->linr == menuConvertLINEAR) && pdset->special_li
nconv) {

by

    if ((pai->eslo==1.0) && (pai->eoff==0.0)) {

To fix aoRecord.c, in init_record replace

    if ((pao->linr == menuConvertLINEAR) && pdset->special_li
nconv) {

by

    if ((pao->eslo==1.0) && (pao->eoff==0.0)) {

CA puts to disabled record

If a CA client issues a put to a disabled record then, when the record is ena bled, database puts to the record will not make the record process until a CA pu t is again issued. The fix is:

diff -c -r1.113 dbAccess.c
*** dbAccess.c	2002/04/08 14:46:13	1.113
--- dbAccess.c	2002/05/02 20:09:18
***************
*** 614,619 ****
--- 614,620 ----
  		if(*ptrace) printf("disabled:  %s\n",precord->name);
  		/*take care of caching and notifyCompletion*/
  		precord->rpro = FALSE;
+ 		precord->putf = FALSE;
                  callNotifyCompletion = TRUE;
  		/* raise disable alarm */
  		if (precord->stat==DISABLE_ALARM) goto all_done;

casEventMask

The multiply-defined fatal error of the type

ld: fatal: symbol `resTable<casEventMaskEntry,
    stringId>::tableSize(void) const' is multiply-defined:
    (file ../../../../../lib/solaris-sparc->gnu//libcas.a(caServerI.o)
    and file ../../../../../lib/solaris-sparc-> gnu//libcas.a(casEventMask.o));

in the build of base can be fixed by removing line 43

template class resTable < casEventMaskEntry, stringId >;

from base/src/cas/generic/casEventMask.cc.

config - Old build rules

The following files should be added in the base/config directory to allow builds of R3.13 (Makefile.Host) extensions with beta1.

win32-x86-borland builds need:
File name:   CONFIG.Host.win32-x86-borland
File contents:   -include $(EPICS_BASE)/config/CONFIG.Host.Borland
File name:   CONFIG_HOST_ARCH.win32-x86-borland
File contents:   -include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.Borland
File name:   CONFIG_SITE.Host.win32-x86-borland
File contents:   -include $(EPICS_BASE)/config/CONFIG_SITE.Host.Borland

hpux-m68k builds need:
File name:   CONFIG.Host.hpux-m68k
File contents:   -include $(EPICS_BASE)/config/CONFIG.Host.hp700
File name:   CONFIG_HOST_ARCH.hpux-m68k
File contents:   -include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.hp700
File name:   CONFIG_SITE.Host.hpux-m68k
File contents:   -include $(EPICS_BASE)/config/CONFIG_SITE.Host.hp700

osf-alpha builds need:
File name:   CONFIG.Host.osf-alpha
File contents:   -include $(EPICS_BASE)/config/CONFIG.Host.alpha
File name:   CONFIG_HOST_ARCH.osf-alpha
File contents:   -include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.alpha

sun4-sparc builds need:
File name:   CONFIG.Host.sun4-sparc
File contents:   -include $(EPICS_BASE)/config/CONFIG.Host.sun4
File name:   CONFIG_HOST_ARCH.sun4-sparc
File contents:   -include $(EPICS_BASE)/config/CONFIG_HOST_ARCH.sun

configure - New build rules

The following change is needed for shared library builds on Unix hosts.

Index: CONFIG_BASE
===================================================================
RCS file: /net/phoebus/epicsmgr/cvsroot/epics/base/configure/CONFIG_BASE,v
retrieving revision 1.32
diff -r1.32 CONFIG_BASE
8a9
> EPICS_BASE_HOST_LIB = $(EPICS_BASE)/lib/$(EPICS_HOST_ARCH)

vxWorks TIMEZONE pentium

If the name of the timezone has more than a few characters a crash can occur on pentium vxWorks iocs. See ansiTime in the vxWorks reference manual for details about TIMEZONE.

epicsReadLine

src/libCom/osi/os/default/epicsReadline.c used a char variable to hold the return value from getc(), and compared this against EOF. getc() returns int not char because ANSI C allows char to be unsigned if the architecture finds that easier, thus EOF can never be stored in a char on a PowerPC CPU. char should be changed to int or signed char.

RTEMS and NTP

The RTEMS startup routine waits until a time synchronization packet is received from an NTP server. This causes the RTEMS intialization to loop endlessly if there is no NTP server on the network. This problem has been fixed in the CVS version by allowing the initialization to time out after a minute or so and to set the IOC time to January 1, 2001.

=======