I have the Sun/Oracle Studio compilers installed on Linux/x86-64 systems.
I test versions 12.2 and 12.4 with "-m32".
I both of those builds "make check" is failing with a SEGV from dlopen_test.
This is an improvement over the previous rc3, which did not build at all.
>From the core file on the Studio 12.4 system (the other is the same)
Program terminated with signal 11, Segmentation fault.
#0 0xf6373da7 in flush_and_invalidate_cache (a=4127109984)
at
/scratch/phargrov/OMPI/openmpi-2.0.0rc4-linux-x86_64-ss12u4-m32/openmpi-2.0.0rc4/opal/mca/patcher/base/patcher_base_patch.c:96
96 have_clflush = !!(cpuid2 & (1 << 19));
(gdb) where
#0 0xf6373da7 in flush_and_invalidate_cache (a=4127109984)
at
/scratch/phargrov/OMPI/openmpi-2.0.0rc4-linux-x86_64-ss12u4-m32/openmpi-2.0.0rc4/opal/mca/patcher/base/patcher_base_patch.c:96
#1 0xf6373ed4 in apply_patch (patch_data=0x971b4e0 "\351\033\277\066",
address=4127109984, data_size=5)
at
/scratch/phargrov/OMPI/openmpi-2.0.0rc4-linux-x86_64-ss12u4-m32/openmpi-2.0.0rc4/opal/mca/patcher/base/patcher_base_patch.c:138
#2 0xf6373fb8 in mca_base_patcher_patch_apply_binary (patch=0x971b4a8)
at
/scratch/phargrov/OMPI/openmpi-2.0.0rc4-linux-x86_64-ss12u4-m32/openmpi-2.0.0rc4/opal/mca/patcher/base/patcher_base_patch.c:152
#3 0xf6117e4c in mca_patcher_overwrite_apply_patch (patch=0x971b4a8)
at
/scratch/phargrov/OMPI/openmpi-2.0.0rc4-linux-x86_64-ss12u4-m32/openmpi-2.0.0rc4/opal/mca/patcher/overwrite/patcher_overwrite_module.c:151
#4 0xf6117ee9 in mca_patcher_overwrite_patch_address (sys_addr=4127109984,
hook_addr=4130697856)
at
/scratch/phargrov/OMPI/openmpi-2.0.0rc4-linux-x86_64-ss12u4-m32/openmpi-2.0.0rc4/opal/mca/patcher/overwrite/patcher_overwrite_module.c:255
#5 0xf6118000 in mca_patcher_overwrite_patch_symbol
(func_symbol_name=0xf63e9f2c "munmap",
func_new_addr=4130697856, func_old_addr=0xf6404aa0)
at
/scratch/phargrov/OMPI/openmpi-2.0.0rc4-linux-x86_64-ss12u4-m32/openmpi-2.0.0rc4/opal/mca/patcher/overwrite/patcher_overwrite_module.c:301
#6 0xf635771d in patcher_open ()
at
/scratch/phargrov/OMPI/openmpi-2.0.0rc4-linux-x86_64-ss12u4-m32/openmpi-2.0.0rc4/opal/mca/memory/patcher/memory_patcher_component.c:442
#7 0xf622ecfb in open_components (framework=0xf63fda40)
at
/scratch/phargrov/OMPI/openmpi-2.0.0rc4-linux-x86_64-ss12u4-m32/openmpi-2.0.0rc4/opal/mca/base/mca_base_components_open.c:117
[...truncated...]
Note that gcc, clang and open64 all work fine on this system when
configured with -m32.
I ran the Studio 12.5 beta (not in my original suite of tests) and do *NOT*
see the failure.
So, I think a compiler bug is a definite possibility here.
However, given the issues seen with xlc, I think is might also be possible
that the patcher code could contain "marginal C" with undefined behavior.
Note that w/o -m32 all the versions of the Studio Compilers are working
fine.
So the impact of this issue is pretty small.
-Paul
--
Paul H. Hargrove [email protected]
Computer Languages & Systems Software (CLaSS) Group
Computer Science Department Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory Fax: +1-510-486-6900