Observed issues › fuzz/s1-3463-cce21
Appears to behave incorrectlyCompiler crash · Fortran · OpenMP · Open
ftn: internal compiler error "Error getting dope vector information" mapping a component section of a structure dummy
Legality: independently confirmed. 2 independent readings find the program legal and the result required. How this is checked
Affected variants
| Compiler | MI300A gfx942 unified memory (XNACK 1) | MI300A gfx942 copy (XNACK 0) | MI250X gfx90a copy (XNACK 0) | MI300X gfx942 copy (XNACK 0) | MI350X gfx950 copy (XNACK 0) | A100 sm_80 separate memory | A100 sm_80 managed memory |
|---|---|---|---|---|---|---|---|
| AFAR 24.3.0 | correct | correct | unknown not run | correct | correct | n/a | n/a |
| CCE 19.0.0 | behaves incorrectly | behaves incorrectly | unknown not run | unknown not run | unknown not run | n/a | n/a |
| CCE 20.0.2 | behaves incorrectly | behaves incorrectly | unknown not run | unknown not run | unknown not run | n/a | n/a |
| CCE 21.0.3 | behaves incorrectly | behaves incorrectly | unknown not run | unknown not run | unknown not run | n/a | n/a |
| CCE 21.0.4 | behaves incorrectly | behaves incorrectly | unknown not run | unknown not run | unknown not run | n/a | n/a |
| NVHPC 25.11 | n/a | n/a | n/a | n/a | n/a | correct | correct |
| NVHPC 26.9 | n/a | n/a | n/a | n/a | n/a | correct | correct |
| GCC 16.2.0 | correct | correct | correct | correct | correct | correct | n/a |
"behaves incorrectly" / "not supported": this issue, confirmed in up to four environments (another build directory, another node, a repeat). "fails another way": a different failure, not counted as this issue. "unknown": not run there, or the runs disagree.
Messages
| Result | Compiler and GPU | Message |
|---|---|---|
| behaves incorrectly | CCE 19.0.0, MI300A unified CCE 19.0.0, MI300A copy | showWarning: Headers and libraries from cray-libsci/25.03.0 will be ignored because depends on PE_MPICH which is unavailable.. Error message :: Error getting dope vector information Error detected :: File '/workspace/crayftn/pdgcs/v_dope_utl.c', line 931 Initiated from :: Line 807 (v_main.c) Optimizer built :: 2025-02-07 (production) File :: s1-3463-cce21-orig.f90 Function :: kp3 |
| behaves incorrectly | CCE 20.0.2, MI300A unified CCE 20.0.2, MI300A copy | showWarning: Headers and libraries from cray-libsci/25.09.0 will be ignored because depends on PE_MPICH which is unavailable.. Error message :: Error getting dope vector information Error detected :: File '/workspace/crayftn/pdgcs/v_dope_utl.c', line 933 Initiated from :: Line 807 (v_main.c) Optimizer built :: 2025-11-17 (production) File :: s1-3463-cce21-orig.f90 Function :: kp3 |
| behaves incorrectly | CCE 21.0.3, MI300A unified CCE 21.0.3, MI300A copy | showWarning: Headers and libraries from cray-libsci/26.03.0 will be ignored because depends on PE_MPICH which is unavailable.. Error message :: Error getting dope vector information Error detected :: File '/workspace/crayftn/pdgcs/v_dope_utl.c', line 935 Initiated from :: Line 879 (v_main.c) Optimizer built :: 2026-07-14 (production) File :: s1-3463-cce21-orig.f90 Function :: kp3 |
| behaves incorrectly | CCE 21.0.4, MI300A unified CCE 21.0.4, MI300A copy | showWarning: Headers and libraries from cray-libsci/26.03.0 will be ignored because depends on PE_MPICH which is unavailable.. Error message :: Error getting dope vector information Error detected :: File '/workspace/crayftn/pdgcs/v_dope_utl.c', line 935 Initiated from :: Line 879 (v_main.c) Optimizer built :: 2026-09-24 (production) File :: s1-3463-cce21-orig.f90 Function :: kp3 |
Reproduce
CCE 19.0.0, MI300A unified
module load cce/19.0.0 craype-accel-amd-gfx942 rocm/6.4.3 module unload cray-mpich ftn -fopenmp -O2 repro.f90 -o repro HSA_XNACK=1 OMP_TARGET_OFFLOAD=mandatory ./repro
CCE 20.0.2, MI300A unified
module load cce/20.0.2 craype-accel-amd-gfx942 rocm/6.4.3 module unload cray-mpich ftn -fopenmp -O2 repro.f90 -o repro HSA_XNACK=1 OMP_TARGET_OFFLOAD=mandatory ./repro
CCE 21.0.3, MI300A unified
module load cce/21.0.3 craype-accel-amd-gfx942 rocm/7.2.0 module unload cray-mpich ftn -fopenmp -O2 repro.f90 -o repro HSA_XNACK=1 OMP_TARGET_OFFLOAD=mandatory ./repro
CCE 21.0.4, MI300A unified
module load cce/21.0.4 craype-accel-amd-gfx942 rocm/7.2.0 module unload cray-mpich ftn -fopenmp -O2 repro.f90 -o repro HSA_XNACK=1 OMP_TARGET_OFFLOAD=mandatory ./repro
AFAR 24.3.0, MI300A unified (runs correctly)
$AFAR/bin/amdflang -fopenmp --offload-arch=gfx942 -O2 repro.f90 -o repro HSA_XNACK=1 OMP_TARGET_OFFLOAD=mandatory ./repro
Program (88 lines)
! Finding: CCE 19, 20, 21 internal compiler error "Error getting
! dope vector information" (v_dope_utl.c; line 931 in 19.0.0, 933 in
! 20.0.2, 935 in 21.0.3) on a target construct in an internal subroutine
! that maps components of a structure dummy (dr%a, dr%nd%k(1:n)) together
! with host-associated variables (an allocatable array, scalars), in a
! program with a default declare mapper for another type.
!
! Legal OpenMP 5.2 (structure components and array sections of them are
! map list items, 5.2 §5.8.3; host-associated variables in a map clause).
! Legality: offload.engine.prerun.check accepts it (rerun: offload.engine.rules with the race rule
! and the restriction checks, and the AFAR flang front end, not under test here); no compiler under
! test, gfortran or gcc is a legality witness. AFAR compiles and runs the
! unreduced program.
!
! : hand reductions that drop the unused module, types
! and dummies no longer show the ICE (it needs parts that look unused); the
! vendor packet uses this generated program.
!
! Observed (tuolumne, MI300A, -O2, 2026-10-23, results/t28_probe/icev2.log):
! the confirmer's reduction of s1 seed 3463 (results/confirm/drafts/
! fuzz_s1_3463_cce21_gfx942_unified, 252 -> 161 lines, ICE site kept)
! gives the ICE on CCE 19, 20 and 21; this file is that program reduced
! further on CCE 21 by deleting lines while the ICE stays
! (data/evidence/dataenv_probe/min_ice.py; 161 -> 106 lines). A hand-written form with
! only the structure dummy's component maps compiles
! (data/evidence/dataenv_probe/ice/d1.f90), so the trigger is not reduced further.
! Fuzz campaign s1: the "Error getting dope vector information" cells of
! CCE 19/20/21.
!
! Fix: reduced further by clause and list-item
! deletion as well as lines (data/evidence/dataenv_probe/min_ice.py, 106 -> 49 lines,
! results/t28_probe/short/); the ICE stays on CCE 19, 20 and 21 at their
! v_dope_utl.c sites and AFAR compiles it (results/t28_probe/icev_fr1.log).
! The remaining program: an internal subroutine with a target construct
! mapping dr%nd%k(1:n) of a structure dummy, next to an unused internal
! subroutine with a character(len=*) dummy, an optional assumed-shape
! dummy and complex dummies, and a module declare reduction; removing any
! of these makes the ICE go away.
!
! ftn -fopenmp -O2 (a bundle:
!@file fuzz_dmod.f90
module fuzz_dmod
implicit none
type :: mt_t
end type mt_t
type :: pair_t
integer :: x, y
end type pair_t
!$omp declare reduction(padd: pair_t: omp_out = pair_t(omp_out%x + omp_in%x, omp_out%y + omp_in%y)) &
!$omp& initializer(omp_priv = pair_t(0, 0))
contains
end module fuzz_dmod
!@file fuzz_prog.f90
program fuzz_prog
use omp_lib, only: omp_get_team_num, omp_get_thread_num, omp_is_initial_device
use fuzz_dmod
implicit none
integer, parameter :: n = 48, m = 8
type :: nd_t
integer :: k(n)
end type nd_t
type :: rec_t
type(nd_t) :: nd
end type rec_t
contains
subroutine kp2(ia, ib, ic, xs, xz4, xz8, dr, ms, zopt)
integer, intent(inout) :: ia(:)
integer, intent(in) :: ib(:)
integer, intent(in) :: ic(n, m)
character(len=*), intent(in) :: xs
complex, intent(in) :: xz4(n)
complex(kind=8), intent(in) :: xz8(n)
type(rec_t), intent(inout) :: dr
type(mt_t), intent(inout) :: ms
integer, intent(in), optional :: zopt(:)
end subroutine kp2
subroutine kp3(ia, ib, o3, xc, dr)
integer, intent(inout) :: ia(n)
integer, intent(in) :: ib(n)
integer, intent(inout) :: o3(n)
character(len=4), intent(inout) :: xc(n)
type(rec_t), intent(inout) :: dr
!$omp target map(dr%nd%k(1:n))
if (omp_get_team_num() == 0) then
end if
!$omp end target
end subroutine kp3
end program fuzz_prog
Something to add? Dispute its legality · Report it fixed in a newer release · Report a mistake on this page
Expected and observed
Observed where it behaves incorrectly
Warning: Headers and libraries from cray-libsci/25.03.0 will be ignored because depends on PE_MPICH which is unavailable.. Error message :: Error getting dope vector information Error detected :: File '/workspace/crayftn/pdgcs/v_dope_utl.c', line 931 Initiated from :: Line 807 (v_main.c) Optimizer built :: 2025-02-07 (production) File :: s1-3463-cce21-orig.f90 Function :: kp3
What the specification requires
The specification text this program relies on and the compiler is expected to support.
OpenMP 5.2 §5.8.3
Evidence
Same compiler, one change
- the map clause dropped from the target construct: AFAR 24.3.0: correct; CCE 19.0.0: correct; CCE 20.0.2: correct; CCE 21.0.3: correct; CCE 21.0.4: correct
Control program
module fuzz_dmod implicit none type :: mt_t end type mt_t type :: pair_t integer :: x, y end type pair_t !$omp declare reduction(padd: pair_t: omp_out = pair_t(omp_out%x + omp_in%x, omp_out%y + omp_in%y)) & !$omp& initializer(omp_priv = pair_t(0, 0)) contains end module fuzz_dmod program fuzz_prog use omp_lib, only: omp_get_team_num, omp_get_thread_num use fuzz_dmod implicit none integer, parameter :: n = 48, m = 8 type :: nd_t integer :: k(n) end type nd_t type :: rec_t type(nd_t) :: nd end type rec_t contains subroutine kp2(ia, ib, ic, xs, xz4, xz8, dr, ms, zopt) integer, intent(inout) :: ia(:) integer, intent(in) :: ib(:) integer, intent(in) :: ic(n, m) character(len=*), intent(in) :: xs complex, intent(in) :: xz4(n) complex(kind=8), intent(in) :: xz8(n) type(rec_t), intent(inout) :: dr type(mt_t), intent(inout) :: ms integer, intent(in), optional :: zopt(:) end subroutine kp2 subroutine kp3(ia, ib, o3, xc, dr) integer, intent(inout) :: ia(n) integer, intent(in) :: ib(n) integer, intent(inout) :: o3(n) character(len=4), intent(inout) :: xc(n) type(rec_t), intent(inout) :: dr !$omp target if (omp_get_team_num() == 0) then end if !$omp end target end subroutine kp3 end program fuzz_prog
Other compilers run it correctly
AFAR 24.3.0, NVHPC 25.11, NVHPC 26.9, GCC 16.2.0