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                          phhargr...@lbl.gov
Computer Languages & Systems Software (CLaSS) Group
Computer Science Department               Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory     Fax: +1-510-486-6900

Reply via email to