-
Notifications
You must be signed in to change notification settings - Fork 58
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
Fix Electron 3 ABI #55
Conversation
Electron 3's ABI was incorrectly specified as 64 instead of 59, and now that Electron 4 has shipped and actually has ABI version 64, this is causing prebuild/prebuild-install to try to share binaries between Electron 3 and 4 which doesn't work. Fixes electron#54
The ABI of Electron 3 is Their are solutions to this being worked on upstream so that Electron can reserve ABI values independently of Node (along with other channels of distribution). Not sure what the best solution is for this right now but this isn't it. |
Hmm...does this tag not actually correspond to the 3.0.0 release then? I see that Electron 3.0.0 reports Node 10.2.0, even though the 3.0.0 tag lists a 9.7 version in DEPS. Regardless, I'm pretty sure that the actual ABI differs between Electron 3 and Electron 4. Here is a Electron 3 can load it, but Electron 4 can't, and fails with
A symbol dump includes
Since Electron 3 can load it, its v8 must not include these changes to the Node 10.2 (running independent of Electron), on the other hand, cannot load this binary, and fails with the same error as Electron 4. So I'm not entirely sure what's going on here, but I'm pretty sure Electron 3 and 4 do not have ABI-compatible versions of The end result is that binaries built for Electron 3 that reference any of those symbols that had a So I'm seeing that this isn't really a bug in |
The result being that I think all packages using |
@bendemboski We changed build systems from 3.0 to 4.0 The node used in the GYP build is in the https://github.com/electron/node/tree/3a619a78bcbf105f6c7d48a2eeeda919111fbc0f As mentioned above there may be an incompatibility and there is active work upstream to determine how best to handle downstream distributions of node and their ABI compatibility. This issue is not a bug in Electron or |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Requesting changes to prevent merge
@MarshallOfSound thanks for taking the time to explain this to me -- I'm new to chasing around Electron's Node/v8 dependencies and ABI versions, and it seems to be a kinda steep learning curve 😄 The core issue that prebuilt packages such as keytar cannot run against Electron 4 because Electron 3 and 4 have different binary interfaces is starting to cause widespread problems as people upgrade to Electron 4 (see here here here, maybe here) and I think preventing Electron 4 adoption. Can you point me to where the discussions are happening so I can track the status of a fix to these issues, or suggest where else I might raise this issue? |
@bendemboski We've raised an issue with the Node.JS TSC to get some unique ABI numbers for Electron so that we can assign a new Electron specific ABI to Electron 4. We'll update this PR / issue with information as we figure it out. |
Great, thanks, I'll follow that issue for updates. |
Electron 4.0.4 now has a dedicated ABI number of 69. Refs: #57 |
Electron 3's ABI was incorrectly specified as 64 instead of 59, and now that Electron 4 has shipped and actually has ABI version 64, this is causing prebuild/prebuild-install to try to share binaries between Electron 3 and 4 which doesn't work.
Fixes #54