Looks like I found the reason for the problem - MPI runtime/build incompatibility. I was lazy to create a local module for the Spack's intel-mpi/2019.8, so, while compiling with it, I ran with mpirun from locally installed intel-mpi/2019.5, relying on the notion that minor intel-mpi versions will be compatible with each other - which they have been so far.
Now I have created the Spack installed intel-mpi/2019.8 module, and using mpirun from the 2019.8 the xhpl binary that gives the illegal instruction with the intel-mpi/2019.5 mpirun works fine with the intel-mpi/2019.8 mpirun.
Looking in the core dump in gdb:
>│0x7f6bec7e1cf5 <fi_param_get_+293> (bad)
There's no address 0x7f6bec7e1cf5 in the assembler code:
...
0x7f6bec7e1cf0 <fi_param_get_+288> xor %eax,%eax │
0x7f6bec7e1cf2 <fi_param_get_+290> jmpq 0x7f6bec7e1c10 <fi_param_get_+64> │
0x7f6bec7e1cf7 <fi_param_get_+295> movzbl (%rbx),%r12d │
0x7f6bec7e1cfb <fi_param_get_+299> movzbl 0x24de7(%rip),%eax # 0x7f6bec806ae9
...
so it's looking to me as a bad program reference due to the mixup of the two intel-mpi versions, with libfabric in particular. Looks like even the minor releases intel-mpi change the libfabric as with other intel-mpi versions I get different errors but all related to libfabric.
There is probably still some Spack's involvement through the RPATH because this does run fine with the hand built binary, but, not worth digging deeper as the root cause is the different intel-mpi versions.
MC