ODR violation in GWN
Open
Beginner friendly
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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