diamondburned / dissent

Tiny native Discord app
https://flathub.org/apps/details/so.libdb.dissent
GNU General Public License v3.0
1.17k stars 38 forks source link

dissent-bin SIGABRTs due to bad stack bounds #255

Open amyipdev opened 3 months ago

amyipdev commented 3 months ago

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.

diamondburned commented 3 months ago

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

amyipdev commented 3 months ago

@diamondburned image

should i still be looking for the binary?

diamondburned commented 3 months ago

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

diamondburned commented 3 months ago

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

diamondburned commented 3 months ago

Will have to revert these commits for now...