EPICS Base R3.14.12: Known Problems
Any patch files linked below should be applied at the root of the EPICS base
installation directory. Download them, then use the GNU Patch program as
follows:
% cd /path/to/base-3.14.12.x
% patch -p0 < /path/to/file.patch
R3.14.12.8 Problems
The following known problem exists in version 3.14.12.8 of EPICS Base:
- 2018-09-17: This release does not build using GNU Make 3.81 because the
undefine command was not added until the 3.82 release. Apply
this patch to fix the problem if you can't
upgrade your version of GNU Make. This bug does not appear in any other
Base releases.
The 3.14 branch of Base is now no longer supported, so no further fixes will be
documented here or patch files added to this page. Please upgrade to the 3.15
branch.
R3.14.12.7 Problems
The following significant problems have been reported in version 3.14.12.7 of
EPICS Base and may also be present in earlier versions:
- 2018-02-02: Embedded IOCs using generalTime with an event system could be
affected by a
problem reported by Till Strauman, which is fixed by
this patch. The fix will also be needed for
R3.14.12.6 and later release series.
- 2018-03-09: If a database file creates an info tag on a record that has
has an alias, the info tag may actually be created on the alias rather than
the original record depending on the order of the two in the file. This
problem was discovered and
reported by
Dirk Zimoch, and is only being fixed on the 3.15 and later branches. The
workaround for databases that need both aliases and info tags on the same
record is to create the alias/aliases after all the info tags, or to always
use the double argument alias(record, new-name)
syntax outside of the record definition.
R3.14.12.6 Problems
The following significant problems have been reported in version 3.14.12.6 of
EPICS Base and may also be present in earlier versions:
- 2017-07-24: RTEMS IOCs may crash or display random messages if their
callback ring buffer fills up, because the callbackRequest() routine passes
a stack-allocated message buffer to be printed but the buffer can be reused
before it gets displayed. This patch
replaces the stack-allocated message with an array of static strings.
- 2017-04-24: IOCs with very large numbers of CA links may crash on shutdown
due to a bug in the dbCa code. This patch
solves the issue.
- 2017-04-17: macLib can lose errors when more than one macro is used in
a string to be expanded. This patch fixes
the problem and adds a self-test to prove it.
- 2017-02-27: An access fault in dbConvert on 64-bit systems is fixed with
this patch. Thanks to Carsten Winkler, Freddie
Akeroyd and Benjamin Franksen for finding and resolving this bug, which only
occurs on systems where int and long are different
sizes.
R3.14.12.5 Problems
The following significant problems have been reported in version 3.14.12.5 of
EPICS Base and may also be present in earlier versions:
- 2017-06-13: An IOC crash resulting from an access security CA channel
disconnectting can be fixed by applying this
patch; this bug was
fixed in
R3.14.12.6 but has been reported twice now in older versions of
Base.
- 2016-09-29: A race-condition reported
in the
pcaspy module turned out to be a bug in gdd, which is fixed by
this patch. Thanks to Xiaoqiang Wang for finding
and providing a fix for this bug, which does not affect the IOC at all so
the patch only needs to be applied for installations that build CAS server
tools such as the CA Gateway or pcaspy.
- 2016-08-11: This patch fixes a
race condition
in db_get_field_and_count() that was found back in May.
- 2016-03-30: Initializing a string record with a string longer than 40
characters can cause the IOC to crash at iocInit (see Launchpad
bug 1563191).
This patch prevents both bugs.
- 2016-03-30: The C++ version of the epicsThread API can corrupt memory
in some circumstances when the thread exits (see Launchpad
bug 1558206).
This patch fixes the problem.
- 2015-11-09: Another patch for Microsoft VS 2015 users,
this patch is required to prevent a compiler
error when building for these targets.
- 2015-08-20: Users of the Microsoft VS 2015 compiler will need to apply
this patch to Base to prevent a compiler
error. Apparently only the Community Edition of this compiler works for
64-bit builds, the Express Edition exceeds a compiler limit when compiling
Base.
- 2015-06-30: If EPICS Base is built with readline support, any IOC that
calls epicsExit() from a thread other than the main thread is likely to
leave the user's terminal in a weird state, requiring the user to run
something like 'stty sane' to clean it up. This
patch fixes the readline support code to clean up automatically by
registering an epicsAtExit() routine.
- 2015-04-29: The latest version of Cygwin (using gcc 4.9.2) has moved the
declaration of the select() system call to a different header file.
This patch adjusts the Base headers so
Base builds properly with the latest Cygwin.
- 2015-04-09: The dbContextReadNotifyCacheAllocator clears its pool of free
buffers on an array size change, but doesn't consider buffers currently in
use, which will later be free'd. Such buffers were being returned to the
pool and later reused in allocations for which they were too short.
This patch tracks the size of
buffers which are in use and only returns buffers which are the correct
length to the pool. Smaller buffers are free'd immediately.
R3.14.12.4 Problems
The following significant problems have been reported in version 3.14.12.4 of
EPICS Base and may also be present in earlier versions:
- 2015-03-20: The ao record type does not check converted raw values for
overflow of a 32-bit integer before writing them to the RVAL field. On some
architectures the result may be unexpected (caused by Undefined Behaviour).
This patch corrects that by limiting the raw
value to the 32-bit signed integer range. The ai and ao ROFF fields are now
unsigned values, to allow a raw offset of 0x80000000.
- 2015-03-05: Sites that do certain kinds of cross-builds may have problems
with the Cap5.so shared library being built and installed where it shouldn't
have been. This patch should fix that.
- 2015-02-10: The CA Repeater may sometimes print bogus error messages, at
least on Windows. This patch clears up those
messages.
- 2015-02-05: The caget/caput/camonitor programs do not convert the value
zero correctly in binary mode (-lb or -0b depending on channel data type).
This patch fixes this problem.
- 2015-01-07: Some linux distributions apply strict compiler flags which
cause the Cap5.c compilation to fail. Apply this
patch to clean up the source file and remove those warnings.
- 2014-12-23: This patch fixes an error message
from iocInit about forward-links over CA, thanks to Dirk Zimoch.
- 2014-12-02: If your build fails to find the xsubpp program (part of the
Perl distribution) try applying this patch which
is needed for recent versions of Perl such as the one included with
Scientific Linux 7, RHEL 7 and CentOS 7.0.
- 2014-10-29: Windows builds need this
patch to correctly create dependency files for C and C++ compilations.
This will also be needed for other targets whose C/C++ compilers cannot
generate dependency files so the build uses mkmf.pl to create them.
- 2014-10-08: IOC applications running under Cygwin need a file equivalent
to the dllPath.bat that supports the Bash syntax. After applying
this patch to Base the build system supports
adding the target relPaths.sh to the iocBoot/ioc/Makefile which fulfils the
above requirement. The relPaths.sh file must be sourced, not executed, to be
able to perform the necessary modications to the environment.
- 2014-09-17: The previous patch from 2014-04-07 would cause a complete
rebuild whenever you run make, and also had problems in gdd. The original
patch file has been modified to correct these problems.
- 2014-04-07: The build rules in Base were not explicitly requiring that all
include files have been installed before the compilation of C or C++ source
files starts, thus on highly parallel machines some applications may not
build properly with 'make -j'. This patch adds
the necessary requirement to the rules.
- 2014-02-25: Xiaoqiang Wang proposed some fixes that allow static builds
on the MinGW targets to succeed. This patch
makes those changes and fixes another issue in blockingSockTest.
- 2014-02-17: This patch contains build
configuration fixes for Apple iOS 7.0 and XCode 5.0 from Tom
Pelaia.
- 2014-01-29: Matt Pearson pointed out a bug in epicsTime::strftime() which
rounds its nanoseconds output without incrementing the whole seconds. It is
not actually feasible to fix this and round properly in all cases, but
this patch prevents the nanosecond
value from getting larger than all 9s, which should be sufficient for most
purposes.
- 2013-12-04: This version of Base added support for Apple's Xcode 5.0
which can build software for iOS 7.0 and the ARMv8 64-bit CPU on the
newest iPhone 5S device. Unfortunately the Xcode upgrade broke the
build of the ios-x86 iPhone simulator target, although the ios-arm target
successfully built code which runs fine on the real hardware. See above
(2014-02-17) for the fix.
R3.14.12.3 Problems
The following significant problems have been reported in version 3.14.12.3 of
EPICS Base and may also be present in earlier versions:
- 2013-12-04: If an IOC loads a record instance of a record type that was
not defined in its DBD files, the dbLoadRecords command may segfault before
displaying the error message that explains the problem.
This patch prevents that crash.
- 2013-09-13: Reading back a .TSEL field that is pointed to another record's
.TIME field was exposing internal details (that the link target field gets
changed internally to point the .VAL field) which don't need to be made
visible. This patch hides the change, and should
allow a .TSEL field to be saved and restored properly using autosave.
- 2013-07-10: Building base against VxWorks 6.9 fails for several reasons.
Apply this patch to resolve a name conflict,
this patch to configure the build rules properly
for vxWorks 6.9, and this patch for a change
in the gmtime_r() and localtime_r() APIs. Other changes may also be needed
for the IOC to run properly.
- 2013-06-07: Hostnames that begin with numbers can cause problems on some
systems. This patch modifies the libCom
routine aToIPAddr() to fix this, and adds a new test program to
check its functionality.
- 2013-05-06: The Windows implementation of the epicsThread API leaks a
thread handle for each epicsThread that is closed, which could cause a
resource shortage problem on long-running IOCs, CA client programs or other
Windows programs using the epicsThread API.
This patch from Giles Knap fixes the
problem.
- 2013-04-24: The newer compiler in VxWorks 6.8 is clever enough to not
link the object file from libCom/osi/os/vxWorks/atReboot.app into generated
executable images, although this object is actually wanted.
This patch changes how the sysAtReboot
initialization takes place and ensures that the necessary steps will be
taken properly at IOC startup to register the shutdown function.
- 2013-01-23: If you need to use a version of Perl which is not found at
/usr/bin/perl some of the scripts that come with Base will run the
wrong perl. This patch changes all of the Perl
preamble lines to #!/usr/bin/env perl which should be correct on
all modern Unix-like systems. This line is not used on Windows systems.
- 2013-01-09: A fix for bug
597054 is available for sites that want their period scan tasks to not
drift on workstaion OSs. Apply this patch which
prints warning messages when repeated over-run errors occur (patch modified
on 2013-10-23).
- 2012-12-18: A race condition can occur when reloading the access security
file from a subroutine record that is processed using
caput
rather
than a longer-running CA client such as MEDM or caput -c
.
This patch fixes the problem.
R3.14.12.2 Problems
The following significant problems have been reported in version 3.14.12.2 of
EPICS Base and may also be present in earlier versions:
R3.14.12.1 Problems
The following significant problems were reported in version 3.14.12.1 of
EPICS Base and subsequently fixed in version 3.14.12.2:
- 2011-05-23: Cygwin builds on drives other than C: can fail when gnumake
first tries to link the antelope.exe program, with an error message like
ld: cannot find -lCom. This patch
fixes that problem, which was not present in R3.14.12.
- 2011-06-27: On MacOS X machines when running a 64-bit kernel the two
versions of the EpicsHostArch script both return the wrong result.
This patch modifies those scripts to give the
correct output.
- 2011-07-07: Some combination of Windows 7 and MinGW Make try to compile
C files using the C++ compiler, which doesn't work. Apply
this patch to delete the old build rule that
causes this problem.
- 2011-07-21: VxWorks systems that do not use a PowerPC CPU may see
the error message
initHandlerAddrList() unsolicitedHandlerEPICS not in
sym table
. Apply this patch to resolve
this problem.
- 2011-07-26: Some versions of GCC for specific processors don't like
certain legal C++ constructs which are rarely used and result in an
udpiiu.cpp:1391: error: generic thunk code fails for method ...
message. Apply this patch to resolve this
problem, which is
bug
816678.
- 2011-10-20: Multi-threaded CA clients (such as recent versions of the
sequener) that run inside the IOC process may miss monitors from local
channels without this patch, which fixes
bug 878372
and bug
878387.
- 2011-11-01: The caget and camonitor programs have not properly handled
array PVs since R3.14.12, especially when using the -#n
option with multiple PVs at the same time. The camonitor code could also
crash if an array PV disconnects and later reconnects with a larger size
array. This patch resolves these problems and
fixes bug 794749.
- 2011-11-08: Building 3.14.12.1 using gcc version 4.6 or later requires
this patch which is a combination of the two
patches attached to bug
736273 which was fixed back in August.
- 2011-11-09: There is a bug in the makeBaseApp.pl script when using the
cygwin-x86 architecture; it outputs windows-style paths in the generated
configure/RELEASE file, i.e. C:/EPICS/base instead of
/cygdrive/c/EPICS/base. This patch
fixes the problem.
R3.14.12 Problems
The following significant problems were reported in version 3.14.12 of EPICS
Base and subsequently fixed in version 3.14.12.1:
- 2010-12-14: When building IOCs with a Win32 target architecture,
the generated xxx_registerRecordDeviceDriver.cpp file can
cause a number of warnings to be reported because we don't
properly escape the back-slash path-separator characters in the
bldTop string.
2010-12-16: Stephen Norum reported the above and some related
issues in the convertRelease.pl and
fullPathName.pl scripts.
This patch can be applied to fix
these problems.
- 2011-01-07: If errlogPrintf() is called during shutdown, it can
cause a recursive assert failure.
This patch from Michael
Davidsaver fixes the issue. This is
bug
693534.
- 2011-01-13: The native element count for array fields is
truncated by the IOC server to 16 bits, so (unless you use the
dynamic array sizing features that were new in this release) it is
not possible to transfer more than 65534 elements of an array from
an IOC without applying this patch and
rebuilding Base and the IOC. Note that the CA client library is
not affected, just the rsrv server code. This is
bug
701673.
- 2011-02-16: Problems with an IOC running on Windows when
communicating with local CA clients might be solved by applying
this patch, which might also solve
some issues with non-IOC CA client programs. This is
bug
717252.
- 2011-03-01: Systems that generate a lot of errlog output can
trigger a bug in msgbufGetNode() that overwrites older messages in
the output buffer. This patch
fixes that problem and modifies the errlog test program to
match.