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.

Reply via email to