Hi Brad,
Thank you for getting back to me so quickly!
Yes, the installed executable ~/chapel-1.31.0/bin/linux64-x86_64/chpl
fails to compile even the simple examples/hello.chpl
code, with the same errors, so it's not limited to make check
.
Recompiling with --savec tmp --print-commands
, it breaks in the # compiling generated source
section. The exact offending command is:
mpicxx -o tmp/hello.tmp tmp/_main.o /home/razoumov/chapel-1.31.0/lib/linux64/gnu/x86_64/cpu-native/loc-flat/comm-gasnet/ibv/large/tasks-qthreads/tmr-generic/unwind-none/mem-jemalloc/atomics-cstdlib/hwloc-bundled/re2-bundled/fs-none/lib_pic-none/san-none/main.o -L/home/razoumov/chapel-1.31.0/lib/linux64/gnu/x86_64/cpu-native/loc-flat/comm-gasnet/ibv/large/tasks-qthreads/tmr-generic/unwind-none/mem-jemalloc/atomics-cstdlib/hwloc-bundled/re2-bundled/fs-none/lib_pic-none/san-none -lchpl -L/home/razoumov/chapel-1.31.0/third-party/gmp/install/linux64-x86_64-native-gnu-none/lib -lgmp -Wl,-rpath,/home/razoumov/chapel-1.31.0/third-party/gmp/install/linux64-x86_64-native-gnu-none/lib -L/home/razoumov/chapel-1.31.0/third-party/hwloc/install/linux64-x86_64-native-gnu-none-flat/lib -lhwloc -Wl,-rpath,/home/razoumov/chapel-1.31.0/third-party/hwloc/install/linux64-x86_64-native-gnu-none-flat/lib -D_GNU_SOURCE=1 --param max-inline-insns-single=35000 --param inline-unit-growth=10000 --param large-function-growth=200000 -L/home/razoumov/chapel-1.31.0/third-party/gasnet/install/linux64-x86_64-native-gnu-none/substrate-ibv/seg-large/lib -lgasnet-ibv-par -L/cvmfs/soft.computecanada.ca/gentoo/2020/usr/lib64 -libverbs -L/cvmfs/soft.computecanada.ca/easybuild/software/2020/Core/gcccore/9.3.0/lib/gcc/x86_64-pc-linux-gnu/9.3.0 -lgcc -L/home/razoumov/chapel-1.31.0/third-party/qthread/install/linux64-x86_64-native-gnu-none-flat-jemalloc-bundled/lib -Wl,-rpath,/home/razoumov/chapel-1.31.0/third-party/qthread/install/linux64-x86_64-native-gnu-none-flat-jemalloc-bundled/lib -lqthread -lchpl -L/home/razoumov/chapel-1.31.0/third-party/jemalloc/install/target/linux64-x86_64-native-gnu-none/lib -ljemalloc -L/home/razoumov/chapel-1.31.0/third-party/re2/install/linux64-x86_64-native-gnu-none/lib -lre2 -Wl,-rpath,/home/razoumov/chapel-1.31.0/third-party/re2/install/linux64-x86_64-native-gnu-none/lib -lnuma -lm -lpthread
There is -L/home/razoumov/chapel-1.31.0/third-party/jemalloc/install/target/linux64-x86_64-native-gnu-none/lib -ljemalloc
in there, and if I move it closer to the beginning of the command, the line works. In fact, the offending sequence is:
-L/cvmfs/soft.computecanada.ca/gentoo/2020/usr/lib64 -libverbs \
-L/home/razoumov/chapel-1.31.0/third-party/jemalloc/install/target/linux64-x86_64-native-gnu-none/lib -ljemalloc \
If I reverse the order of the two lines, the code compiles fine. So, the collision is with the InfiniBand's RDMA library.
There is no problem with the libjemalloc.a
itself, it defines the needed symbols:
$ nm ~/chapel-1.31.0/third-party/jemalloc/install/target/linux64-x86_64-native-gnu-none/lib/libjemalloc.a | grep chpl_je_mallocx
0000000000007a40 T chpl_je_mallocx
0000000000000046 t chpl_je_mallocx.cold
From the build directory I get the same errors:
$ pwd
/tmp/razoumov/chapel-1.31.0
$ which chpl
/tmp/razoumov/chapel-1.31.0/bin/linux64-x86_64/chpl
$ chpl ./examples/hello.chpl -o hello
/tmp/chpl-razoumov.deleteme-6ATbbJ/_main.o:_main.c:function chpl_calloc: error: undefined reference to 'chpl_je_mallocx'
/tmp/chpl-razoumov.deleteme-6ATbbJ/_main.o:_main.c:function chpl_malloc: error: undefined reference to 'chpl_je_mallocx'
...
Thank you,
Alex.