Skip to content

Inkscape and OpenShot throw error "undefined symbol: ssyrk_64_" from libcblas #947

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
2 tasks
Khris777 opened this issue Nov 27, 2023 · 5 comments
Closed
2 tasks

Comments

@Khris777
Copy link

Description

I did a fresh install of OpenShot and Inkscape this weekend.
I'm using EndeavorOS and the arch repositories with the pacman package manager.

Both applications fail to start and throw the same error:

Inkscape:
symbol lookup error: /usr/lib/libcblas.so.3: undefined symbol: ssyrk_64_

OpenShot:
ImportError: /usr/lib/libcblas.so.3: undefined symbol: ssyrk_64_

The cblas library just got updated to 3.12.0, so I presume that might be the cause.

cblas Version: 3.12.0
Operating System / Distro: EndeavorOS, Kernel 6.1.62-1-lts

Checklist

  • I've included a minimal example to reproduce the issue
  • I'd be willing to make a PR to solve this issue
@martin-frbg
Copy link
Collaborator

martin-frbg commented Nov 27, 2023

The _64_ in the symbol name suggests that your applications require an "INTERFACE64=ON" build of BLAS/CBLAS. it is possible that the symbol suffix naming has changed from previous releases (new name may be ssyrk64_ or ssyrk_64 as a side effect of providing both normal and extended-address-range symbols in the same library).In that case the 3.12 library would no longer be a drop-in replacement for earlier versions but require a recompile/relink of dependent applications. Can you check with "nm" what the symbol names are in the new Arch build ? (see #666 for background)

@Khris777
Copy link
Author

The 64 in the symbol name suggests that your applications require an "INTERFACE64=ON" build of BLAS/CBLAS. it is possible that the symbol suffix naming has changed from previous releases (new name may be ssyrk64_ as a side effect of providing both normal and extended-address-range symbols in the same library).In that case the 3.12 library would no longer be a drop-in replacement for earlier versions but require a recompile/relink of dependent applications. Can you check with "nm" what the symbol names are in the new Arch build ?

I am not knowledgable about nm, but when I use it on libcblas.so(.3(.11.0)) I get "no symbols".
Can you direct me to the correct file I need to look at?

There's also something about the 64-bit API in the release notes.

@martin-frbg
Copy link
Collaborator

The "no symbols" is a bit strange for a shared library, perhaps you looked at a symbolic link that is not pointing anywhere
after the update of libcblas to 3.12.0 ?
Make sure that your "blas" package also got updated to 3.12, and if the problem persists perhaps check with whoever manages the lapack/cblas package on the Arch Linux side - I just did a test build of 3.12 on Linux and my nm output looks correct -

nm lib/libcblas.so|grep ssyrk
000000000000d8a0 T cblas_ssyrk
000000000001d8c0 T cblas_ssyrk_64
                 U ssyrk_
                 U ssyrk_64_

(and libblas.so has the matching symbols for ssyrk that libcblas Uses:

nm lib/libblas.so|grep ssyrk
000000000000dff0 T ssyrk_
000000000007ec80 T ssyrk_64_


@Khris777
Copy link
Author

The "no symbols" is a bit strange for a shared library, perhaps you looked at a symbolic link that is not pointing anywhere after the update of libcblas to 3.12.0 ? Make sure that your "blas" package also got updated to 3.12, and if the problem persists perhaps check with whoever manages the lapack/cblas package on the Arch Linux side - I just did a test build of 3.12 on Linux and my nm output looks correct -

That was the problem, thanks, I didn't even look at blas as I believed there was automated dependency and version checking to prevent something like this.. The maintainer updated cblas a few days before blas, as of today both are at 3.12 and everything works again.

@guillaumechauvat
Copy link

In case this is useful to anyone finding this, I had the same exact error because I had an old /usr/local/lib64/libblas.so* ... I was confused because nm /usr/lib/libcblas.so.3.12.0 also returned "no symbols", but it works anyway after deleting the old library files.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants