dissent icon indicating copy to clipboard operation
dissent copied to clipboard

dissent-bin SIGABRTs due to bad stack bounds

Open amyipdev opened this issue 1 year ago • 5 comments

Running Dissent from AUR dissent-bin gives the following output:

❯ dissent
runtime/cgo: bad stack bounds: lo=0x9a886fb9b5f64c50 hi=0x7ffe2375ec60

zsh: IOT instruction (core dumped)  dissent

It appears that, while almost every library links properly through /usr/lib, that libc, libpthread, and libresolv - all standard system libraries - are linking to a Nix store:

❯ ldd /usr/bin/dissent
	linux-vdso.so.1 (0x00007fffed5c1000)
	libadwaita-1.so.0 => /usr/lib/libadwaita-1.so.0 (0x00007d30d0a50000)
	libgtk-4.so.1 => /usr/lib/libgtk-4.so.1 (0x00007d30d0200000)
	libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0x00007d30d7228000)
	libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0x00007d30d71c1000)
	libharfbuzz.so.0 => /usr/lib/libharfbuzz.so.0 (0x00007d30d00f2000)
	libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0x00007d30d717b000)
	libcairo-gobject.so.2 => /usr/lib/libcairo-gobject.so.2 (0x00007d30d7172000)
	libcairo.so.2 => /usr/lib/libcairo.so.2 (0x00007d30cffbf000)
	libgraphene-1.0.so.0 => /usr/lib/libgraphene-1.0.so.0 (0x00007d30d7153000)
	libgio-2.0.so.0 => /usr/lib/libgio-2.0.so.0 (0x00007d30cfde6000)
	libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00007d30d70ef000)
	libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007d30cfc9a000)
	libgirepository-1.0.so.1 => /usr/lib/libgirepository-1.0.so.1 (0x00007d30d0a2c000)
	libpthread.so.0 => /nix/store/ksk3rnb0ljx8gngzk19jlmbjyvac4hw6-glibc-2.38-44/lib/libpthread.so.0 (0x00007d30d70ea000)
	libresolv.so.2 => /nix/store/ksk3rnb0ljx8gngzk19jlmbjyvac4hw6-glibc-2.38-44/lib/libresolv.so.2 (0x00007d30d0a1b000)
	libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007d30cfc75000)
	libc.so.6 => /nix/store/ksk3rnb0ljx8gngzk19jlmbjyvac4hw6-glibc-2.38-44/lib/libc.so.6 (0x00007d30cfa8c000)
	libfribidi.so.0 => /usr/lib/libfribidi.so.0 (0x00007d30cfa6c000)
	libappstream.so.5 => /usr/lib/libappstream.so.5 (0x00007d30cf9bb000)
	libm.so.6 => /usr/lib/libm.so.6 (0x00007d30cf8cf000)
	libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x00007d30d70df000)
	libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00007d30cf87f000)
	libepoxy.so.0 => /usr/lib/libepoxy.so.0 (0x00007d30cf74e000)
	libXi.so.6 => /usr/lib/libXi.so.6 (0x00007d30d0a07000)
	libX11.so.6 => /usr/lib/libX11.so.6 (0x00007d30cf60b000)
	libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0x00007d30cf5f3000)
	libcloudproviders.so.0 => /usr/lib/libcloudproviders.so.0 (0x00007d30cf5d9000)
	libtracker-sparql-3.0.so.0 => /usr/lib/libtracker-sparql-3.0.so.0 (0x00007d30cf4fd000)
	libpng16.so.16 => /usr/lib/libpng16.so.16 (0x00007d30cf4c3000)
	libtiff.so.6 => /usr/lib/libtiff.so.6 (0x00007d30cf435000)
	libjpeg.so.8 => /usr/lib/libjpeg.so.8 (0x00007d30cf398000)
	libxkbcommon.so.0 => /usr/lib/libxkbcommon.so.0 (0x00007d30cf34f000)
	libwayland-client.so.0 => /usr/lib/libwayland-client.so.0 (0x00007d30cf33b000)
	libwayland-egl.so.1 => /usr/lib/libwayland-egl.so.1 (0x00007d30cf336000)
	libXext.so.6 => /usr/lib/libXext.so.6 (0x00007d30cf321000)
	libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x00007d30cf315000)
	libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0x00007d30cf310000)
	libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x00007d30cf308000)
	libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x00007d30cf2f9000)
	libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x00007d30cf2f4000)
	libcairo-script-interpreter.so.2 => /usr/lib/libcairo-script-interpreter.so.2 (0x00007d30cf2d3000)
	libthai.so.0 => /usr/lib/libthai.so.0 (0x00007d30cf2c8000)
	libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00007d30cf1fa000)
	libgraphite2.so.3 => /usr/lib/libgraphite2.so.3 (0x00007d30cf1d5000)
	libz.so.1 => /usr/lib/libz.so.1 (0x00007d30cf1bb000)
	libXrender.so.1 => /usr/lib/libXrender.so.1 (0x00007d30cf1ae000)
	libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007d30cf183000)
	libxcb-render.so.0 => /usr/lib/libxcb-render.so.0 (0x00007d30cf174000)
	libxcb-shm.so.0 => /usr/lib/libxcb-shm.so.0 (0x00007d30cf16d000)
	libpixman-1.so.0 => /usr/lib/libpixman-1.so.0 (0x00007d30cf0c3000)
	libmount.so.1 => /usr/lib/libmount.so.1 (0x00007d30cf074000)
	libffi.so.8 => /usr/lib/libffi.so.8 (0x00007d30cf069000)
	libpcre2-8.so.0 => /usr/lib/libpcre2-8.so.0 (0x00007d30cefcb000)
	/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007d30d7262000)
	libcurl.so.4 => /usr/lib/libcurl.so.4 (0x00007d30cef05000)
	libxmlb.so.2 => /usr/lib/libxmlb.so.2 (0x00007d30ceed4000)
	libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00007d30ced7c000)
	libyaml-0.so.2 => /usr/lib/libyaml-0.so.2 (0x00007d30ced5b000)
	libsystemd.so.0 => /usr/lib/libsystemd.so.0 (0x00007d30cec6e000)
	libzstd.so.1 => /usr/lib/libzstd.so.1 (0x00007d30ceb9b000)
	libstemmer.so.0 => /usr/lib/libstemmer.so.0 (0x00007d30ceace000)
	libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007d30ceaa5000)
	libjson-glib-1.0.so.0 => /usr/lib/libjson-glib-1.0.so.0 (0x00007d30cea7b000)
	libsqlite3.so.0 => /usr/lib/libsqlite3.so.0 (0x00007d30ce91e000)
	liblzma.so.5 => /usr/lib/liblzma.so.5 (0x00007d30ce8eb000)
	libjbig.so.2.1 => /usr/lib/libjbig.so.2.1 (0x00007d30ce8dc000)
	liblzo2.so.2 => /usr/lib/liblzo2.so.2 (0x00007d30ce8bb000)
	libdatrie.so.1 => /usr/lib/libdatrie.so.1 (0x00007d30ce8b2000)
	libbz2.so.1.0 => /usr/lib/libbz2.so.1.0 (0x00007d30ce89f000)
	libbrotlidec.so.1 => /usr/lib/libbrotlidec.so.1 (0x00007d30ce890000)
	libXau.so.6 => /usr/lib/libXau.so.6 (0x00007d30ce889000)
	libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007d30ce881000)
	libblkid.so.1 => /usr/lib/libblkid.so.1 (0x00007d30ce848000)
	libnghttp3.so.9 => /usr/lib/libnghttp3.so.9 (0x00007d30ce825000)
	libnghttp2.so.14 => /usr/lib/libnghttp2.so.14 (0x00007d30ce7fb000)
	libidn2.so.0 => /usr/lib/libidn2.so.0 (0x00007d30ce7d7000)
	libssh2.so.1 => /usr/lib/libssh2.so.1 (0x00007d30ce78e000)
	libpsl.so.5 => /usr/lib/libpsl.so.5 (0x00007d30ce77a000)
	libssl.so.3 => /usr/lib/libssl.so.3 (0x00007d30ce69a000)
	libcrypto.so.3 => /usr/lib/libcrypto.so.3 (0x00007d30ce000000)
	libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00007d30ce646000)
	libicuuc.so.74 => /usr/lib/libicuuc.so.74 (0x00007d30cde13000)
	libcap.so.2 => /usr/lib/libcap.so.2 (0x00007d30ce638000)
	libgcrypt.so.20 => /usr/lib/libgcrypt.so.20 (0x00007d30cdcca000)
	liblz4.so.1 => /usr/lib/liblz4.so.1 (0x00007d30ce613000)
	libbrotlicommon.so.1 => /usr/lib/libbrotlicommon.so.1 (0x00007d30ce5f0000)
	libunistring.so.5 => /usr/lib/libunistring.so.5 (0x00007d30cdb1a000)
	libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00007d30cda42000)
	libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00007d30ce5c0000)
	libcom_err.so.2 => /usr/lib/libcom_err.so.2 (0x00007d30ce5ba000)
	libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x00007d30ce5ac000)
	libkeyutils.so.1 => /usr/lib/libkeyutils.so.1 (0x00007d30ce5a3000)
	libicudata.so.74 => /usr/lib/libicudata.so.74 (0x00007d30cbc00000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007d30cb800000)
	libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0x00007d30ce57d000)

I can't say for certain whether this is the cause, but given that it appears to be because of false setup of the stack, I'd imagine this has something to do with it. Manually pulling the binaries out of the tarball also yields the same results.

amyipdev avatar Mar 22 '24 04:03 amyipdev

Please wait for action https://github.com/diamondburned/dissent/actions/runs/8387085229 to finish and try its binary.

diamondburned avatar Mar 22 '24 07:03 diamondburned

@diamondburned image

should i still be looking for the binary?

amyipdev avatar Mar 23 '24 22:03 amyipdev

Oops. Looks like patchelf --reset-rpath is not happy. I'm not too sure how to fix the RUNPATH here...

diamondburned avatar Mar 24 '24 01:03 diamondburned

I am suspecting it's the RUNPATH set by Nix's linker though.

diamondburned avatar Mar 24 '24 01:03 diamondburned

Will have to revert these commits for now...

diamondburned avatar Mar 24 '24 01:03 diamondburned