![]() |
![]() ![]()
Experimental Physics and
| ||||||||||||||
|
On 8/28/22 2:20 AM, Abdalla Ahmad via
Tech-talk wrote:
The importance depends on your tolerance for the IOC crashing with weird symptoms due to a mis-match between the caller and the library it's calling. Even though the compile-time Application Program Interface (API) of a particular support module version is often compatible with earlier versions, very few if any EPICS support module authors check that new releases of a module are 100% compatible with earlier ones at the Application Binary Interface (ABI) level; those differences tend to be larger and more important if the module is at least partially coded in C++, which is becoming more common. There are tools available from the Linux community for checking ABI compatibility between releases, but they aren't very widely used and can make maintenance significantly more complicated. If an IOC dynamically links with a different version of a shared library than the version it was built with (e.g. your Asyn 4.41 vs. 4.42 described above) there is a possibility that the calls it makes into the library (i.e. using the modules ABI) will not be quite the same as the calls that it would have made with the other version, which can lead to the library doing something different and the possibility of a crash or introducing unexpected behavior. We recommend setting SHRLIB_VERSION when building support module libraries so that IOCs that link with shared libraries will not attempt to use a library that is different than the version it was built with. Disabling that check may work with some libraries and version updates (and maybe even with some record types and device support settings) but not with others, so you are taking a risk with the operation of your control system by doing that. HTH, - Andrew -- Complexity is free, it's Simplicity that takes work.
| ||||||||||||||
ANJ, 14 Sep 2022 |
![]() · Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing · |