MCIP run: Segmentation fault (core dumped)

ncdump_wrf_20110701.txt (18.6 KB)
ncdump_wrf_20110702.txt (18.6 KB)
run_mcip.csh (14.9 KB)
Makefile.txt (4.7 KB)
namelist.mcip.txt (962 Bytes)
run_mcip.log.txt (277 Bytes)

Hello all,

I am facing some issues on running MCIP test case (wrfout data downloaded from CMAS Data Warehouse). ./run_mcip.csh gives the following error message:

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0 0x7FF455DE6697
#1 0x7FF455DE6CDE
#2 0x7FF454E9F3FF
#3 0x0
Segmentation fault (core dumped)
Error running mcip

I am using the following programs related to MCIP run:

  1. CMAQ 5.2.1
  2. CentOS 7 gcc gfortran
  3. NETCDF Fortran 4.4.5
  4. I/O API 3.2

I am attaching here the MCIP Makefile, MCIP run script , ncdump of input wrfout files, MCIP log file and MCIP output namelist file that I used to compile and run MCIP.

I will be grateful if anyone here can solve my issue.

Hasibul

One way to get more information is to re-build MCIP (and I/O API and netCDF) with debug/traceback flags such as you can find in the I/O API ioapi/Makeinclude.Linux2_x86_64gfortdbg

That way, you’ll get a traceback with files and line-numbers to see where the error is actually happening…

Turning on debug flags is always helpful. I’d first try doing that only for MCIP. Nothing is getting written to the log file, so I think the program is not even getting to any I/O calls involving netCDF or I/O API.

  • Do you have sufficient memory? Perhaps put limit stacksize unlimited or something like that in your run script.
  • MCIP is an entirely serial code. Did you compile it with MPI wrappers?
  • Are you able to run other programs on your system, such as CMAQv5.2.1?

I am using gdb debugging options to backtrace the errors. I attached the screenshots of the debugging results. Can you give me tips on how to edit the lines mentioned in the bug?
I was able to run CMAQ 5.2.1 in my system.
Backtrace

I just checked your Makefile. I see two potential issues with your LIBS definition, at the beginning and at the end.

LIBS = -L$(IOAPI_ROOT)/lib-lioapi
Issue 1: I believe there should be a space, so that it instead reads
LIBS = -L$(IOAPI_ROOT)/lib -lioapi

-Wl,--unresolved-symbols=ignore-in-object-files
Issue 2: that flag telling the compiler (or linker?) to ignore unresolved symbols is likely the culprit here. I am guessing you had problems getting the code to compile because of undefined symbols (such as not being able to find libioapi.a due to Issue 1). You then added that flag, which enabled the code to compile (congratulations), but it did not actually solve your problem.

My recommendation: Add the space and take out that flag. Run make clean; make. Does it compile then?

2 Likes

It is now compiled and run successfully. Thank you very much!