Skip to content
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

Fails on Arch Linux with ERROR: Error stripping "libzstd.so" : "" (segfault) #608

Closed
cebtenzzre opened this issue May 15, 2024 · 6 comments

Comments

@cebtenzzre
Copy link

Here is the end of the output from a failing run of linuxdeployqt:

Log:  copied: "/usr/lib/libzstd.so.1"
Log:  to "/home/jared/src/forks/gpt4all/gpt4all-chat/build/_CPack_Packages/Linux/IFW/gpt4all-installer-linux/packages/gpt4all/data/lib///libzstd.so.1"
Log: dpkg not found, hence not deploying copyright files
ERROR: Error stripping "libzstd.so" : ""
ERROR: Error stripping "libzstd.so" : ""

Information

OS: Arch Linux

$ ldd /usr/bin/strip
	linux-vdso.so.1 (0x00007fff997d2000)
	libbfd-2.42.0.so => /usr/lib/libbfd-2.42.0.so (0x00007fb59a6b9000)
	libc.so.6 => /usr/lib/libc.so.6 (0x00007fb59a4d5000)
	libz.so.1 => /usr/lib/libz.so.1 (0x00007fb59a4bc000)
	libzstd.so.1 => /usr/lib/libzstd.so.1 (0x00007fb59a3e9000)
	libsframe.so.1 => /usr/lib/libsframe.so.1 (0x00007fb59a3e1000)
	/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fb59a883000)

This is the LD_LIBRARY_PATH set when calling strip, found by replacing /usr/bin/strip with a shell wrapper that dumps the environment:

LD_LIBRARY_PATH=/home/jared/src/forks/gpt4all/gpt4all-chat/build/_CPack_Packages/Linux/IFW/gpt4all-installer-linux/packages/gpt4all/data/bin/../lib/:/usr/lib:/home/jared/src/forks/gpt4all/gpt4all-chat/build/_CPack_Packages/Linux/IFW/gpt4all-installer-linux/packages/gpt4all/data/bin:/usr/../lib

Analysis

strip can normally strip libzstd.so just fine, but because it links to libzstd.so and linuxdeploy sets LD_LIBRARY_PATH to include the local data/lib dir, strip tries to strip one of its own loaded shared libs and segfaults:

[26051.534584] strip[50517]: segfault at c100 ip 000000000000c100 sp 00007ffe633370b8 error 14 in strip[555bdf651000+3000] likely on CPU 21 (core 11, socket 0)
[26051.534593] Code: Unable to access opcode bytes at 0xc0d6.

Suggestion

strip does not crash when LD_LIBRARY_PATH is not set. Maybe LD_LIBRARY_PATH should only be set when calling ldd.

@Samueru-sama
Copy link

That's interesting you got strip to work on archlinux, here on artix I couldn't get it to work on aynthing and that is normal I think, it is meant to be used on debian stable, there my same scripts have no issue when doing the strip.

What I do is that I set NO_STRIP=true environment variable when testing on artix.

@probonopd
Copy link
Owner

probonopd commented May 25, 2024

Please provide details about your build environment (distribution, version, compiler, libc, etc.). Thanks!
Does https://github.com/probonopd/go-appimage/tree/master/src/appimagetool work better for you?

@QuentiumYT
Copy link

I have the same issue using linuxdeployqt (commit 8cb9438), build 67 on Ubuntu 24.04

NO_STRIP=true environment variable didn't work, but the command line has a -no-strip argument that works great

@probonopd
Copy link
Owner

probonopd commented Sep 8, 2024

strip does not crash when LD_LIBRARY_PATH is not set.

So the solution would be to unset LD_LIBRARY_PATH when strip is run?

@probonopd
Copy link
Owner

Please see whether the latest build fixes the issue. Thanks!

@QuentiumYT
Copy link

Works great, thanks for the new build

QuentiumYT added a commit to QuentiumYT/Stacer that referenced this issue Sep 9, 2024
omergoktas pushed a commit to omergoktas/linuxdeployqt that referenced this issue Oct 12, 2024
omergoktas pushed a commit to omergoktas/linuxdeployqt that referenced this issue Oct 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants