epicsScanDouble accepts "inf" and "nan", so envGetDoubleConfigParam returns success for them and the parsed value flows into getMaxPeriod's only range gate, maxPeriod < maxSearchPeriodLowerLimit. That comparison is false for both inf and NaN, so a non-finite period reaches getNTimers(), whose static_cast<unsigned> of 1 + log(maxPeriod/...)/log2 is an undefined float->unsigned conversion: inf aborts the client in malloc via a garbage nTimers allocation, and NaN drives the search-timer wheel off a NaN period where every deadline comparison is false. Gate the parsed value on finite() (from epicsMath.h) and positivity alongside the parse status, and fall back to the default period. A non-positive period is not a "low" period to be clamped up to the 60 s lower limit; it takes the same invalid-input path as inf/NaN. getMaxPeriod() is getNTimers()'s only caller, so this makes the conversion finite and positive by construction.
EPICS Base
EPICS (Experimental Physics and Industrial Control System) is a set of software tools and applications which provide a software infrastructure for use in building distributed control systems to operate devices such as Particle Accelerators, Large Experiments and major Telescopes. EPICS Base is the central core of the control system toolkit. More details can be found at the About page of the official website
Links
Documentation
Community Communication
Quick Install
Download a release from the Downloads page and unpack it. Inside the unpacked folder run:
make
For more information on how to install on your system see the Installation page of the documentation.
Quick run a softIOC
After building, you can run an example soft-IOC (Input/Output Controller) which runs a Channel Access server.
./bin/*/softIoc -x first
Run the dbl command to list the records it provides:
epics> dbl
first:BaseVersion
first:exit
epics>
Contributing
See CONTRIBUTING.md.
License
EPICS Base is distributed subject to a Software License Agreement found in the file LICENSE that is included with this distribution.