Opened 5 years ago
Last modified 5 years ago
#143 new defect
XIOS2.5, Mojave and GCC8.2
Reported by: | acc | Owned by: | yushan |
---|---|---|---|
Priority: | major | Component: | XIOS |
Version: | 2.0 | Keywords: | |
Cc: |
Description
I've struggled but succeeded to get NEMO with XIOS2.5 (rev 1646) to compile and run on a new iMac Pro running the latest MacOSX (Mojave 10.14.3). The good news is that it is possible but with one caveat that justifies this ticket.
Here's a list of the components that led to a successful build:
gcc version 8.2.0 ( Macports gcc8 8.2.0_3 )
openmpi-3.1.3 (built from source)
netcdf-c-4.6.2 (built from source)
netcdf-fortran-4.4.4 (built from source)
hdf5-1.10.4 (built from source)
Then to compile XIOS I had to use an fcm arch file that differed from the default OSX one only by:
mpiCC -stdc++98 D_GLIBCXX_USE_CX11_ABI=0 instead of mpiCC
mpifort instead of mpif90 (not strictly necessary)
cpp-mp-8 instead of cpp-mp-4.5
make instead of gmake
but here is the caveat: everything compiles but all executables abort immediately when launched. The abort (segmentation violation/invalid memory access) seems to happen before any executable line is reached in the first xios routine entered so I had no luck debugging. By 'all executables' I mean test_client.exe, xios_server.exe and a nemo executable linked with xios.
However, if I rebuild XIOS with -O0 instead of -O3 everything compiles and runs and I can start to use the 20 cores in my new machine. Even -O1 is enough to break it so I'm stuck with -O0.
It is difficult to know whether or not this is a compiler bug or something in Boost, Blitz or XIOS that breaks with optimisation. Worth noting though in case anyone else struggles with a similar issue.
Here is a typical crash report (with -O1) in case it provides someone else with more of a clue:
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Application Specific Information:
/Users/acc/NEMO/XIOS/bin/test_client.exe
abort() called
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff60c1e23e pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff60cd4c1c pthread_kill + 285
2 libsystem_c.dylib 0x00007fff60b871c9 abort + 127
3 libgcc_s.1.dylib 0x0000000108aa7ec5 0x108a9e000 + 40645
4 libgcc_s.1.dylib 0x0000000108aa851b _Unwind_Resume + 55
5 test_client.exe 0x00000001072a51ef xios::CAxis::initializeTransformationMap(std::map<std::string, xios::transformation_type, std::less<std::string>, std::allocator<std::pair<std::string const, xios::transformation_type> > >&) + 553
6 libsystem_c.dylib 0x00007fff60b87d8d cxa_atexit + 38
Change History (2)
comment:1 Changed 5 years ago by ymipsl
- Owner changed from ymipsl to yushan
comment:2 Changed 5 years ago by yushan
Following-up :
Compilation with gcc8 successful.
Issue:
test_client.exe runs successfully when compiled with -O0
test_client.exe hangs when compiled with -O1. The program does not raise error but hangs before executing any instruction.
To be followed up...
We will try to compile and execute on our X64 intel architecture with GCC8.