llnl / llnl/axom

ODR violation in GWN

Open Beginner friendly
#1,983 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

App Integration bug compiler Quest User Request
Dominant language
C++
Stars
196
Forks
34
Avg merge
4d 1h
Merged PRs (30d)
11

Description

@liu15 reported the following error when compiling axom@0.15.0 against spheral@2025.12.0 w/ the oneapi compiler (intel-2025.2.0-gcc-13.3.1):

ld.lld: error: duplicate symbol: axom::quest::compute_integrals(mfem::GridFunction const&)
>>> defined at GWNMethods.hpp:1139 (<path>/toss4_intel.oneapi/axom/0.15.0.a/compiler-intel-2025.2.0-gcc-13.3.1/cpp-20/blt-0.7.2.a/cmake-3.30.5/raja-2026.07.0.a/camp-2026.07.1/cuda-none/mpi-mvapich2-2.3.7/umpire-2026.07.1.a/fmt-12.1.0.a/caliper-2.13.1.a/adiak-0.4.1.b/conduit-0.9.6.a/silo-4.12.0.59f860f.a/hdf5-2.0.0.b/zlib-1.3.1/mfem-4.9.b/hypre-3.1.0.d8f57a4.a/fei-2.23.03.i/lapack-3.12.0.b/mkl-2022.1.0/superlu-7.0.0.a/superlu_dist-9.1.0.c/parmetis-4.0.2.m/strumpack-8.0.0.cfba574f.b/scalapack-2.2.0.c/tsan-off/include/axom/quest/GWNMethods.hpp:1139)
>>>            (axom::quest::compute_integrals(mfem::GridFunction const&))
>>> defined at GWNMethods.hpp:1139 (<path>/toss4_intel.oneapi/axom/0.15.0.a/compiler-intel-2025.2.0-gcc-13.3.1/cpp-20/blt-0.7.2.a/cmake-3.30.5/raja-2026.07.0.a/camp-2026.07.1/cuda-none/mpi-mvapich2-2.3.7/umpire-2026.07.1.a/fmt-12.1.0.a/caliper-2.13.1.a/adiak-0.4.1.b/conduit-0.9.6.a/silo-4.12.0.59f860f.a/hdf5-2.0.0.b/zlib-1.3.1/mfem-4.9.b/hypre-3.1.0.d8f57a4.a/fei-2.23.03.i/lapack-3.12.0.b/mkl-2022.1.0/superlu-7.0.0.a/superlu_dist-9.1.0.c/parmetis-4.0.2.m/strumpack-8.0.0.cfba574f.b/scalapack-2.2.0.c/tsan-off/include/axom/quest/GWNMethods.hpp:1139)
>>>            PlanarBoundaryInst.cc.o:(.text+0x470) in archive <path>/toss4_intel.oneapi/spheral/v2025.12.0.e/compiler-intel-2025.2.0-gcc-13.3.1/cpp-20/blt-0.7.2.a/cmake-3.30.5/boost-1.91.0.a/eigen-5.0.0/qhull-2020.2.a/tsan-off/silo-4.12.0.59f860f.a/hdf5-2.0.0.b/zlib-1.3.1/polyclipper-1.2.5.a/polytope-0.7.3.d/mpi-mvapich2-2.3.7/caliper-2.13.1.a/adiak-0.4.1.b/cuda-none/conduit-0.9.6.a/axom-0.15.0.a/raja-2026.07.0.a/camp-2026.07.1/umpire-2026.07.1.a/fmt-12.1.0.a/mfem-4.9.b/hypre-3.1.0.d8f57a4.a/fei-2.23.03.i/lapack-3.12.0.b/mkl-2022.1.0/superlu-7.0.0.a/superlu_dist-9.1.0.c/parmetis-4.0.2.m/strumpack-8.0.0.cfba574f.b/scalapack-2.2.0.c/chai-2026.07.0.e/lib/libSpheral_CXX.a

He proposed and verified a fix that adds inline to three non-template functions in GWNMethods.hpp:

  • inline void setup_gwn_mesh(...);
  • inline FieldStats compute_field_stats(...);
  • inline IntegralStats compute_integrals(...);

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Open GWNMethods.hpp and inspect the three non-template functions named in the report: setup_gwn_mesh, compute_field_stats, and compute_integrals. Confirm the reported axom/spheral oneAPI build no longer produces the duplicate-symbol linker error; done means the ODR violation is resolved without changing the function behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
build-system, hpc
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
88/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.