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
Prebuilt Electron binaries segfault at startup on Arch Linux with glibc 2.28 #13972
Comments
👋 Thanks for opening your first issue here! If you're reporting a 🐞 bug, please make sure you include steps to reproduce it. We get a lot of issues on this repo, so please be patient and we will get back to you as soon as we can. To help make it easier for us to investigate your issue, please follow the contributing guidelines. |
The electron package from the Arch Linux community repository was actually built using glibc 2.27, nice try. ;) (glibc tries pretty hard to maintain ABI compatibility, you should never need to rebuild software in order to work with newer glibc -- the fact that this breaks indicates either a glibc bug or a something in the software stack that depends on private details of glibc when it shouldn't.)
So, it's entirely likely that rebuilding it on Arch Linux with glibc 2.28 would have the same issues, and that the issue lies in the build process. For the record, our package is built using https://git.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/electron and you can see various patches we apply in order to use system dependencies, in the same directory of the git repository as the PKGBUILD file. |
More context: https://bugs.archlinux.org/task/59550 (Arch Linux bugreport). it would appear to be coming from libnode.so, and it's not just electron either -- sone R packages do the same. |
So I've done some testing and posted the results on the VSCode issue linked: microsoft/vscode#55934 TL;DR:
|
Another update: did a clean build outside of the Arch packaging tools, but with most of the Arch patches applied, and it worked (which isn't really surprising). I'm not quite sure where the Debian sysroot images are coming from or how they are produced, but upgrading glibc in those might be an interesting thing to try. |
I might actually just try bisecting glibc and seeing when it started crashing. |
I've bisected glibc to this commit. The versions before it run fine, the version including it cause a segfault. I'm not entirely sure what the reason is. Trying to build the latest glibc-2.28 tag now with it reverted. Edit: disregard that, I messed up. Re-testing now... |
Per discussion with azanella on freenode's #glibc channel:
And the conclusion was that this should be brought up for discussion on libc-alpha. |
Could you check by reverting e7feec374c635b6a29d65c39ae5e1855528fed39 ? I would to get some freedback before address it on libc-alpha. |
This is the commit that I traced it down to when bisecting too. I'll try just reverting it and see what happens. |
Just reverting that commit (on top of the latest 2.28 tag) seems to fix things. Doesn't explain how the binary got so messed up though... |
Also, repo Electron's
|
Does Electron's libnode.so work correctly with glibc 2.28? |
The one in the official binary releases from this repo does not; the one in the Arch package does, as it's built with a different toolchain. I'm actually trying to build upstream Electron with Arch clang right now, will see where this goes, as it seems like an Electron issue and not a glibc issue to me. |
So yeah, it's definitely a toolchain issue, more specifically a linker issue. Simply replacing |
Right, I saw reports where libnode.so is also failing on other projects and it seems to be the same issue. I was trying to reproduce the build failure with GNU linkers, but without much success. |
It seems to be an LLD bug. I'm trying a build with a newer prebuilt clang (and thus lld) version now. |
Good news: the tests pass with an updated lld, and the resulting libnode.so isn't horribly bugged. |
@pcc on #llvm IRC found the exact revision that fixed it: https://github.com/llvm-project/lld/commit/1adba6d5d2f5f51d0719e81f71461437ecc1bd59 |
Electron apps including Slack are also broken on Fedora 29 for the same reason. I built a glibc with @mfonville's patch, which solves the problem for me. This build is available here: https://copr.fedorainfracloud.org/coprs/ghjm/glibc/. You can install the updated glibc using |
@ghjm Fedora has released a new |
@allanlewis Fedora has said they are not going to apply this patch. See https://bugzilla.redhat.com/show_bug.cgi?id=1653832 for details. I'm pretty sure I never signed up to maintain this forever, but I've started a new build here: https://copr.fedorainfracloud.org/coprs/ghjm/glibc/build/838399/. Assuming it succeeds, the new builds should be available in about an hour. |
Absolutely - I'm grateful you started it at all!
Thanks, @ghjm! For now I've added
|
For reference, users of Slack should upgrade to version 3.3.7 released earlier this week, which has this fix: https://slack.com/release-notes/linux |
Thank you for taking the time to report this issue and helping to make Electron better. The version of Electron you reported this on has been superseded by newer releases. If you're still experiencing this issue in Electron v4.2.x or later, please add a comment specifying the version you're testing with and any other new information that a maintainer trying to reproduce the issue should know. I'm setting the Thanks in advance! Your help is appreciated. |
The electron 2.x release line was fixed in #13988 by updating the version of lld used to build the prebuilt electron release, and electron 3.x was never affected as it already used the newer lld. So this is definitely resolved. |
There is an regression, latest prebuiilt clients of teams, electron, and rambox, shows a segfault Ubuntu 20.04.1 x64 |
@cjdg would you mind opening a new issue with some more details about the segfault? Ideally a stack trace or core dump. |
…ary electron apps The problem is in fact in lld[1] used to build Electron but it's too serious regression to fool around. [1] electron/electron#13972 (comment) git-svn-id: file:///srv/repos/svn-packages/svn@331347 eb2447ed-0c53-47e4-bac8-5bc4a241df78
Expected Behavior
Electron runs correctly.
Actual behavior
Electron segfaults on start, before anything useful happens.
To Reproduce
Download the prebuilt Electron release (electron-2.0.x-linux-x64.zip); unzip it; run
./electron
; observe the fireworks.Additional Information
The issue seems to be caused by the glibc 2.28 upgrade on Arch - downgrading to glibc 2.27 makes Electron work. I'm not really sure what the issue itself is, as Electron crashes even before Breakpad kicks in, so no minidump is produced, and I don't have a machine powerful enough to produce a debug build in a reasonable amount of time (and it's likely that a debug build produced on my machine with glibc 2.28 will work fine anyway, being linked against the correct glibc). Distribution-provided binaries (the
electron
package in the repository) work fine, even though they were not rebuilt to match the glibc upgrade.The text was updated successfully, but these errors were encountered: