This is an ABI incompatibility with clang 14 and 15 where givaro was
compiled with 14 and sage was compiled with 15.
I suggest downgrading to clang 14 or set flags like
https://github.com/conda-forge/sagelib-feedstock/blob/5542b278f642b772ae243b323c7cbc7a170a5f9a/recipe/build.sh#L21-L25
until we rebuild givaro with clang 15.

Isuru

On Wed, May 31, 2023 at 2:01 PM Matthias Goerner <enisc...@gmail.com> wrote:

> I am focusing on the Sage 9.8 issue of the missing symbol
> __ZN6FFPACK8CharPolyIN6Givaro8Poly1DomINS1_7ModularIddvEENS1_5DenseEEEEERNT_7ElementERKS7_S9_mNS7_8Domain_t11Element_ptrEmRNSC_8RandIterENS_19FFPACK_CHARPOLY_TAGEm
>
> Demangled with c++filt, the missing symbol is:
> Givaro::Poly1Dom<Givaro::Modular<double, double, void>,
> Givaro::Dense>::Element&
> FFPACK::CharPoly<Givaro::Poly1Dom<Givaro::Modular<double, double, void>,
> Givaro::Dense> >(Givaro::Poly1Dom<Givaro::Modular<double, double, void>,
> Givaro::Dense> const&, Givaro::Poly1Dom<Givaro::Modular<double, double,
> void>, Givaro::Dense>::Element&, unsigned long,
> Givaro::Poly1Dom<Givaro::Modular<double, double, void>,
> Givaro::Dense>::Domain_t::Element_ptr, unsigned long,
> Givaro::Poly1Dom<Givaro::Modular<double, double, void>,
> Givaro::Dense>::Domain_t::RandIter&, FFPACK::FFPACK_CHARPOLY_TAG, unsigned
> long)
>
> I expect this to be in ffpack, so I made sure that ffpack is indeed picked
> up from the dedicated conda environment:
>
> lsof -p 70202 | grep -i ffpack
> python3.1 70202 matthias  txt      REG               1,15  1132624 5917685
> /Users/matthias/anaconda3/envs/sage98-py311/lib/libffpack.1.dylib
>
> I then looked whether similar symbols are available in ffpack with the
> following command:
> nm /Users/matthias/anaconda3/envs/sage98-py311/lib/libffpack.1.dylib |
> grep
> __ZN6FFPACK8CharPolyIN6Givaro8Poly1DomINS1_7ModularIddvEENS1_5DenseEEEEERNT_7ElementERKS7_S9_mNS7_8Domain_t11Element_ptrEm
>
> Which gave:
> 000000000004f17c T
> __ZN6FFPACK8CharPolyIN6Givaro8Poly1DomINS1_7ModularIddvEENS1_5DenseEEEEERNT_7ElementERKS7_S9_mNS7_8Domain_t11Element_ptrEmNS_19FFPACK_CHARPOLY_TAGEm
> 000000000004ec10 T
> __ZN6FFPACK8CharPolyIN6Givaro8Poly1DomINS1_7ModularIddvEENS1_5DenseEEEEERNT_7ElementERKS7_S9_mNS7_8Domain_t11Element_ptrEmRNS7_8Domain_t8RandIterENS_19FFPACK_CHARPOLY_TAGEm
>
> which demangled gives:
> Givaro::Poly1Dom<Givaro::Modular<double, double, void>,
> Givaro::Dense>::Element&
> FFPACK::CharPoly<Givaro::Poly1Dom<Givaro::Modular<double, double, void>,
> Givaro::Dense> >(Givaro::Poly1Dom<Givaro::Modular<double, double, void>,
> Givaro::Dense> const&, Givaro::Poly1Dom<Givaro::Modular<double, double,
> void>, Givaro::Dense>::Element&, unsigned long,
> Givaro::Poly1Dom<Givaro::Modular<double, double, void>,
> Givaro::Dense>::Domain_t::Element_ptr, unsigned long,
> FFPACK::FFPACK_CHARPOLY_TAG, unsigned long)
> Givaro::Poly1Dom<Givaro::Modular<double, double, void>,
> Givaro::Dense>::Element&
> FFPACK::CharPoly<Givaro::Poly1Dom<Givaro::Modular<double, double, void>,
> Givaro::Dense> >(Givaro::Poly1Dom<Givaro::Modular<double, double, void>,
> Givaro::Dense> const&, Givaro::Poly1Dom<Givaro::Modular<double, double,
> void>, Givaro::Dense>::Element&, unsigned long,
> Givaro::Poly1Dom<Givaro::Modular<double, double, void>,
> Givaro::Dense>::Domain_t::Element_ptr, unsigned long,
> Givaro::Poly1Dom<Givaro::Modular<double, double, void>,
> Givaro::Dense>::Domain_t::RandIter&, FFPACK::FFPACK_CHARPOLY_TAG, unsigned
> long)
>
> And then I got confused: the latter demangled method has the same
> signature as the missing one.
>
> In other words: from a C++ perspective, the missing method is there, it is
> just that the way the name and signature get mangled is different between
> linbox_flint_interface.cpython-311-darwin.so and libffpack.1.dylib
>
> So it seems it is an ABI problem where we get two different managled names
> for the same function signature.
>
> I am not sure what to make out of this and have only two explanations:
> 1. It is a bug in the C++ compiler.
> 2. The two libraries were compiled with different C++ compilers or with
> different compiler options.
>
> On Wednesday, May 31, 2023 at 11:01:20 AM UTC-7 Matthias Goerner wrote:
>
> Sorry for the late reply. Here are the details about my conda environment.
> I am not exactly sure what other information is useful to debug this. I am
> familiar with the linux tools, but am struggling with otool and vmmap to
> figure out what is going on here and see whether I am picking up any
> library from something that is not in the dedicated conda environment.
>
> On Friday, May 26, 2023 at 8:05:04 AM UTC-7 Matthias Koeppe wrote:
>
> config.log please
>
> On Wednesday, May 24, 2023 at 3:16:25 PM UTC-7 Matthias Goerner wrote:
>
> Hi!
>
> I can't get sage to work when installing it with conda on a new MacBook
> Pro with M2 chip and Ventura 13.3.
>
> I tried
> conda -n sage create sage=9.X python=3.Y
> for (X,Y) = (5,10), (8,10), (8,11).
> With Sage 9.5, I get the attached crash report.
> With Sage 9.8, I get the following linking error below.
>
> Cheers,
>     Matthias
>
> (sage-py310) matthias@matthiass-air-2 ~ % sage
> ┌────────────────────────────────────────────────────────────────────┐
> │ SageMath version 9.8, Release Date: 2023-02-11                     │
> │ Using Python 3.10.11. Type "help()" for help.                      │
> └────────────────────────────────────────────────────────────────────┘
> ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
> ┃ Warning: sage.all is not available; this is a limited REPL.        ┃
> ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
> sage: import sage.all
> ---------------------------------------------------------------------------
> ImportError                               Traceback (most recent call last)
> Cell In[1], line 1
> ----> 1 import sage.all
>
> File
> ~/anaconda3/envs/sage-py310/lib/python3.10/site-packages/sage/all.py:168
>     166 from sage.modules.all    import *
>     167 from sage.monoids.all    import *
> --> 168 from sage.algebras.all   import *
>     169 from sage.modular.all    import *
>     170 from sage.sat.all        import *
>
> File
> ~/anaconda3/envs/sage-py310/lib/python3.10/site-packages/sage/algebras/all.py:21
>       5
> #*****************************************************************************
>       6 #       Copyright (C) 2005 William Stein [...]
>       7 #
>    (...)
>      17 #                  http://www.gnu.org/licenses/
>      18
> #*****************************************************************************
>      19 from sage.misc.lazy_import import lazy_import
> ---> 21 import sage.algebras.catalog as algebras
>      23 from .quatalg.all import *
>      24 from .steenrod.all import *
>
> File
> ~/anaconda3/envs/sage-py310/lib/python3.10/site-packages/sage/algebras/catalog.py:84
>       1 r"""
>       2 Catalog of Algebras
>       3
>    (...)
>      80   <sage.algebras.yokonuma_hecke_algebra.YokonumaHeckeAlgebra>`
>      81 """
>      83 from sage.algebras.free_algebra import FreeAlgebra as Free
> ---> 84 from sage.algebras.quatalg.quaternion_algebra import
> QuaternionAlgebra as Quaternion
>      85 from sage.algebras.steenrod.steenrod_algebra import
> SteenrodAlgebra as Steenrod
>      86 from
> sage.algebras.finite_dimensional_algebras.finite_dimensional_algebra import
> FiniteDimensionalAlgebra as FiniteDimensional
>
> File
> ~/anaconda3/envs/sage-py310/lib/python3.10/site-packages/sage/algebras/quatalg/quaternion_algebra.py:68
>      61 from operator import itemgetter
>      63 from .quaternion_algebra_element import (
>      64     QuaternionAlgebraElement_abstract,
>      65     QuaternionAlgebraElement_generic,
>      66     QuaternionAlgebraElement_rational_field,
>      67     QuaternionAlgebraElement_number_field)
> ---> 68 from . import quaternion_algebra_cython
>      70 from sage.modular.modsym.p1list import P1List
>      72 from sage.misc.cachefunc import cached_method
>
> File
> ~/anaconda3/envs/sage-py310/lib/python3.10/site-packages/sage/algebras/quatalg/quaternion_algebra_cython.pyx:1,
> in init sage.algebras.quatalg.quaternion_algebra_cython
> (build/cythonized/sage/algebras/quatalg/quaternion_algebra_cython.cpp:6484)()
> ----> 1 # distutils: language = c++
>       2 # distutils: libraries = gmp m NTL_LIBRARIES
>       3 # distutils: extra_compile_args = NTL_CFLAGS
>
> File
> ~/anaconda3/envs/sage-py310/lib/python3.10/site-packages/sage/matrix/matrix_integer_dense.pyx:1,
> in init sage.matrix.matrix_integer_dense
> (build/cythonized/sage/matrix/matrix_integer_dense.cpp:59322)()
> ----> 1 # -*- coding: utf-8 -*-
>       2 # distutils: extra_compile_args = NTL_CFLAGS M4RI_CFLAGS
>       3 # distutils: libraries = iml NTL_LIBRARIES gmp m CBLAS_LIBRARIES
>
> ImportError:
> dlopen(/Users/matthias/anaconda3/envs/sage-py310/lib/python3.10/site-packages/sage/libs/linbox/
> linbox_flint_interface.cpython-310-darwin.so, 0x0002): symbol not found
> in flat namespace
> '__ZN6FFPACK8CharPolyIN6Givaro8Poly1DomINS1_7ModularIddvEENS1_5DenseEEEEERNT_7ElementERKS7_S9_mNS7_8Domain_t11Element_ptrEmRNSC_8RandIterENS_19FFPACK_CHARPOLY_TAGEm'
>
> --
> You received this message because you are subscribed to the Google Groups
> "sage-support" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sage-support+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sage-support/c028a399-8ecc-4370-9130-88b303487e50n%40googlegroups.com
> <https://groups.google.com/d/msgid/sage-support/c028a399-8ecc-4370-9130-88b303487e50n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-support/CA%2B01voO9E7_w2qE5uYYT8AXRfQLbrpJfRGjk274HpJ0RyiMo5A%40mail.gmail.com.

Reply via email to