All recent builds failing with "signal: illegal instruction"

Thanks for sharing this info. Since Docker uses the underlying host’s kernel, compiling on machines with different CPU capabilities can result in different binaries.

As noted in this post: https://discuss.circleci.com/t/use-the-arch-cache-template-key-if-you-rely-on-cached-compiled-binary-dependencies/16129/2

It’s restricted to specific compiled assets, namely ones that are compiled to use Intel Xeon E5-2666 v3 (Haswell) specific cpu instruction sets that aren’t available in Xeon E5-2680 v2 (Ivy Bridge)

The ones we noticed in testing are security related libraries used for hashing and whose optimization level made them use the newer cpu hasing/crypto instructions. Libraries such as nokogiri did not present a problem.

It looks like RocksDB also takes advantage of new instruction sets.

1 Like