Skip to content

CRTM seg faults when built and run with spack-stack/1.9.1 #1671

Description

@RussTreadon-NOAA

As documented in GDASApp issue #1283, ctests which execute the CRTM abort with a segmentation fault.

Below is a the traceback from a Hera run of test_gdasapp_atm_jjob_var_run. This tests assimilates amsu_n19 observations.

0: Loading MW water emissivity coefficients: /scratch1/NCEPDEV/da/Russ.Treadon/git/global-workflow/spack-stack/sorc/gdas.cd/build/gdas/test/atm/global-workflow/testrun/RUND\
IRS/gdas_test/gdasatmanl_18/crtm/FASTEM6.MWwater.EmisCoeff.bin
0:
0:    Using  1 OpenMP threads =  1 for profiles and  1 for channels.
0: [h5c54:1670078:0:1670078] Caught signal 11 (Segmentation fault: address not mapped to object at address 0x7ffc1dfa3008)
0: ==== backtrace (tid:1670078) ====
0:  0 0x0000000000053519 ucs_debug_print_backtrace()  ???:0
0:  1 0x0000000000012990 __funlockfile()  :0
0:  2 0x00000000000a7614 _f90_dope_vector_init()  ???:0
0:  3 0x0000000000417092 crtm_k_matrix_modulecrtm_k_matrix_mp_profile_solution_()  /scratch1/NCEPDEV/da/Russ.Treadon/git/global-workflow/spack-stack/sorc/gdas.cd/bundle/crtm/src/CRTM_K_Matrix_Module.f90:932
0: =================================
srun: error: h5c54: task 0: Segmentation fault (core dumped)

Line 932 of CRTM_K_Matrix_Module.f90 is the Thread_Loop line below

        ! THREAD LOOP
        ! ------------
!$OMP PARALLEL DO NUM_THREADS(n_channel_threads)                        &
!$OMP    FIRSTPRIVATE(ln, r_cloudy)                                     &
!$OMP    PRIVATE(Message, ChannelIndex, n_Full_Streams, PVar, AAvar,    &
!$OMP          start_ch, end_ch, Wavenumber, Status_FWD, Status_K,      &
!$OMP          transmittance, transmittance_K, transmittance_clear,     &
!$OMP          transmittance_clear_K, l, mth_Azi)
        Thread_Loop: DO nt = 1, n_channel_threads
          start_ch = (nt - 1) * chunk_ch + 1
          IF ( nt == n_channel_threads) THEN
            end_ch = n_sensor_channels
          ELSE
            end_ch = start_ch + chunk_ch - 1
          END IF
          ln = (start_ch - 1) - n_inactive_channels(nt)

          ! -------------
          ! CHANNEL LOOP
          ! -------------
          Channel_Loop: DO l = start_ch, end_ch

It has been confirmed that test_gdasapp_atm_jjob_var_run runs with OMP_NUMTHREADS=1. --cpus-per-task=1 is specified on the srun command.

This issue is opened to document this problem and its resolution.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions