Illegal Instruction¶
When running cardiacmodelling/ap-nimbus-app-manager
, cardiacmodelling/appredict-with-emulators
or cardiacmodelling/appredict-no-emulators
there is a possibility that ApPredict
will fail to run with the message indicating
“illegal instruction”, e.g. “PETSC ERROR: Caught signal number 4 Illegal instruction:
Likely due to memory corruption”.
This was encountered in early builds (i.e. builds before May 2020, or more specifically,
since commit e560e78),
due to the use of the ApPredict
build flag b=GccOptNative
, rather than b=GccOpt
.
The outcome of which was that when the container (and therefore ApPredict
) was being
built, at compile time it was picking up the server’s native cpu flags but in some cases
these were unlikely to be found in the container’s deployment environment (e.g. sse4_1
and sse4_2
– use cat /proc/cpuinfo
for examples).