vladimiry / ElectronMail

Unofficial ProtonMail Desktop App
GNU General Public License v3.0
1.51k stars 99 forks source link

Apple Silicon/M1 Support #357

Closed tusing closed 2 years ago

tusing commented 3 years ago

It would be fantastic if we could get a version compiled and optimized for Apple Silicon.

(I believe this would require an upgrade to Electron 11.)

vladimiry commented 3 years ago

The recent app release is based on Electron v11.1.0. I can't guarantee proper work on Apple Silicon hardware nor on macOS in general since I don't possess sold-by-apple devices. The released app versions go through the e2e/spectron tests executed on Linux/macOS/Windows systems which is the way I used to verify that the app is functioning on the macOS system.

vladimiry commented 3 years ago

Referencing relevant links:

vladimiry commented 3 years ago

Ideally, I need GitHub Actions to support Apple-Silicon-based environment (which unlikely to happen any time soon), so I could compile the native dependencies and test the basic app functionality on the system close to end-user systems. Although it appears that Xcode 12.2+ is already supported there so I guess things might go well if I just compile arm arch using the recent electron-builder version which supports @electron/universal thing.

vladimiry commented 3 years ago

This will be wontfix for now since I won't be able to verify things when/if I play around the issue.

badwulfy commented 3 years ago

I know you don't plan to support officially M1, but by curiosity I tried to build an arm64 version of Electronmail on my M1 Macbook and it succeed. First, I did some edit in package.json to change the architecture to arm64. Then I used the usual way to build the app as said on the readme of the project. The app work flawlessly and smoothly. I created a gist with the DMG and the diff in package.json is someone is interested : https://gist.github.com/badwulfy/90d6e2596fe7f14019f2330ff007fd85

Then I tried to do the same build procedure on an Intel Mac. The build succeed, but I wasn't able to run on my M1 Mac (crashed immediately). I have not yet investigated further. If someone has an idea, I'm interested.

vladimiry commented 3 years ago

@badwulfy thanks for the report. Yes, the process should not be complex but I still tend to avoid adding support for M1 primarily because I'd like to be able to test things at my side at least initially.

Then I tried to do the same build procedure on an Intel Mac. The build succeed, but I wasn't able to run on my M1 Mac (crashed immediately).

There are native dependencies involved that get compiled from code sources during the app package assembling process. That might be the cause.

If your app has native dependency, it can be compiled only on the target platform unless prebuild is not used.

badwulfy commented 3 years ago

For people interested, I published an M1 build of the version 4.12.8 in the release page on my "fork" (used only to build the app). https://github.com/badwulfy/ElectronMail/releases/tag/v4.12.8

I plan to automate build with github actions when I'll have time.

vladimiry commented 3 years ago

I published an M1 build of the version 4.12.8

I'd recommend to wait for #443 resolving in 4.12.9.

badwulfy commented 3 years ago

I had not seen the issue. I just built the new version 4.12.9 : https://github.com/badwulfy/ElectronMail/releases/tag/v4.12.9 Thanks for pointing it out.

macbugs commented 2 years ago

I created a gist with the DMG and the diff in package.json if someone is interested

I applied the patch, but the build of current version still fails, as some script is missing...

% npm run electron-builder:dist

> electron-mail@4.12.7 electron-builder:dist
> npm exec --package=ts-node -- ts-node --files --require tsconfig-paths/register ./scripts/electron-builder/run-with-default-evn-vars.ts --arm64 --publish never

node:internal/modules/cjs/loader:936
  throw err;
  ^

Error: Cannot find module './run-with-default-evn-vars.ts'
ylluminate commented 2 years ago

Anyone having any luck here yet with Apple Silicon build automation?

ajgraves commented 2 years ago

Came to check on M1/arm64 support for macOS, and subscribing (even though this is closed). Hoping some traction can be made here, as Electron apps running under Rosetta 2 are nowhere near as performant as Electron apps for M1/arm64.

ylluminate commented 2 years ago

Too true. Electron and Chromium based apps are indeed horrible on Rosetta.

macbugs commented 2 years ago

Oh well, same problem here 😉

ylluminate commented 2 years ago

@vladimiry any chance you might be able to look over the situation more closely and offer an updated estimate of where things stand now? (eg, does this help?: https://github.com/electron/universal/releases)

vladimiry commented 2 years ago

I'm generally avoiding macOS-specific tasks, primarily because not able to test stuff at my side. But I could pull the trigger on this one if you will be ready to test the build.

ylluminate commented 2 years ago

More than happy to test anytime you're ready @vladimiry.

vladimiry commented 2 years ago

The test build is uploaded here. The file to test is electron-mail-5.0.2-mac-universal.dmg. If possible, run the tests on both M1 and non-M1 laptops.

ylluminate commented 2 years ago

Thanks so much @vladimiry!

The x64 (electron-mail-5.0.2-mac-x64.dmg) works fine - just as always without any noticeable changes. It does indeed show up as "Intel" mode in Activity Monitor.

When I attempt to run the Universal version (electron-mail-5.0.2-mac-universal.dmg), I receive the following error:

A JavaScript error occurred in the main process
Uncaught Exception:
Error: dlopen(/Applications/ElectronMail.app/Contents/Resources/app.asar.unpacked/node_modules/sodium-native/build/Release/sodium.node, 0x0001): tried: '/Applications/ElectronMail.app/Contents/Resources/app.asar.unpacked/node_modules/sodium-native/build/Release/sodium.node' (mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e)))
at process.func [as dlopen] (node:electron/js2c/asar_bundle:5:1812)
at Module._extensions..node (node:internal/modules/cjs/loader:1203:18)
at Object.func [as .node] (node:electron/js2c/asar_bundle:5:2039)
at Module.load (node:internal/modules/cjs/loader:988:32)
at Module._load (node:internal/modules/cjs/loader:829:12)
at c._load (node:electron/js2c/asar_bundle:5:13343)
at Module.require (node:internal/modules/cjs/loader:1012:19)
at require (node:internal/modules/cjs/helpers:102:18)
at load (/Applications/ElectronMail.app/Contents/Resources/app.asar/node_modules/node-gyp-build/index.js:22:10)
at Object.<anonymous> (/Applications/ElectronMail.app/Contents/Resources/app.asar/node_modules/sodium-native/index.js:1:39)

I do, however, see the app still running as an "Apple" mode app within Activity Monitor, so you do appear to be close.

When in /Applications/ElectronMail.app/Contents/MacOS file shows:

$ file ElectronMail
ElectronMail: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64Mach-O 64-bit executable x86_64] [arm64:Mach-O 64-bit executable arm64Mach-O 64-bit executable arm64]
ElectronMail (for architecture x86_64): Mach-O 64-bit executable x86_64
ElectronMail (for architecture arm64):  Mach-O 64-bit executable arm64

It appears that other frameworks show similar results via file.

Any additional details I might provide?

vladimiry commented 2 years ago

Any additional details I might provide?

If you have a non-M1 laptop, but Intel-based, try electron-mail-5.0.2-mac-universal.dmg on it.

so you do appear to be close

Just asked electron-builder to prepare a "universal" build. Unfortunately, it didn't work out, even though there were no errors during the packaging process:

  > npm exec --package=electron-builder -- electron-builder --universal --publish never

    • electron-builder  version=23.3.1 os=20.6.0
    • loaded configuration  file=/Users/runner/work/ElectronMail/ElectronMail/electron-builder.yml
    • rebuilding native dependencies  dependencies=keytar@7.9.0, msgpackr-extract@2.0.2, sodium-native@3.3.0, spellchecker@3.7.0 platform=darwin arch=x64
    • install prebuilt binary  name=keytar version=7.9.0 platform=darwin arch=x64 napi= 
    ⨯ cannot find prebuild-install  
    • packaging       platform=darwin arch=x64 electron=19.0.8 appOutDir=dist/mac-universal--x64
    • downloading     url=https://github.com/electron/electron/releases/download/v19.0.8/electron-v19.0.8-darwin-x64.zip size=82 MB parts=6
    • downloaded      url=https://github.com/electron/electron/releases/download/v19.0.8/electron-v19.0.8-darwin-x64.zip duration=2.287s
    • rebuilding native dependencies  dependencies=keytar@7.9.0, msgpackr-extract@2.0.2, sodium-native@3.3.0, spellchecker@3.7.0 platform=darwin arch=arm64
    • install prebuilt binary  name=keytar version=7.9.0 platform=darwin arch=arm64 napi= 
    ⨯ cannot find prebuild-install  
    • packaging       platform=darwin arch=arm64 electron=19.0.8 appOutDir=dist/mac-universal--arm64
    • downloading     url=https://github.com/electron/electron/releases/download/v19.0.8/electron-v19.0.8-darwin-arm64.zip size=79 MB parts=6
    • downloaded      url=https://github.com/electron/electron/releases/download/v19.0.8/electron-v19.0.8-darwin-arm64.zip duration=1.413s
    • packaging       platform=darwin arch=universal electron=19.0.8 appOutDir=dist/mac-universal

So the only thing I could try for now is disabling mergeASARs flag, so a new build is coming (it's not going to help though I guess).

ylluminate commented 2 years ago

I did indeed ask for some feedback from someone with an Intel Mac, should hear back soon.

Hmmmmmmm.... It seems perhaps there is something going on with the arm64 vs arm64e ABI situation... Hmmmm.

vladimiry commented 2 years ago

Ideally, I need GitHub Actions to support Apple-Silicon-based environment (which unlikely to happen any time soon), so I could compile the native dependencies and test the basic app functionality on the system close to end-user systems.

Besides, I guess it's impossible to properly compile arm64 native modules on non-M1 system (currently using macos-latest GitHub Actions runner). The CI system is yet to support M1 silicon runner (also see https://github.com/actions/virtual-environments/issues/2187).

ylluminate commented 2 years ago

Hmm, this is interesting/strange. I'll need to check with another project I work with to see how the CI guys are generating their Apple Silicon binaries on GH Actions runner...

I suppose one option could be to just outline an "Apple Silicon Build Instructions" sections on the front page and I could test that out and we could iterate and refine it to get it working such that any Apple Silicon users that want it could build our own with a clean process (and I could probably get someone to make a MacPorts formula to make it simpler).

vladimiry commented 2 years ago

I suppose one option could be to just outline an "Apple Silicon Build Instructions" sections on the front page and I could test that out

It should be almost the same process as currently listed in the readme expect for the final/packaging step where you set --arm64 or --universal option (use master branch):

If you want to skip building the @protonmail stuff (I'd recommend), foremost unpack the proton-clients-artifact file to the project folder. The file listed at the page bottom on the https://github.com/vladimiry/ElectronMail/actions/runs/2514834063 page (prebuilt @protonmail clients of the latest release).

You could also skip the pnpm run app:dist step by unpacking the app-artifact-macOS file to the project folder (located on the same above-listed page). So no app/proton building steps but just packaging.

vladimiry commented 2 years ago

So no app/proton building steps but just packaging.

Correction. If you skip pnpm run app:dist by unpacking both artifacts, the pnpm run build:electron-builder-hooks run is still required before running a final/packaging step.

vladimiry commented 2 years ago

So the only thing I could try for now is disabling mergeASARs flag, so a new build is coming (it's not going to help though I guess).

Here it's.

badwulfy commented 2 years ago

So the only thing I could try for now is disabling mergeASARs flag, so a new build is coming (it's not going to help though I guess).

Here it's.

As you expected, the binary did not work on my M1.

A JavaScript error occurred in the main process

Uncaught Exception:
Error [ERR_REQUIRE_ESM]: require() of ES Module /Applications/ElectronMail.app/Contents/Resources/app.asar/index.js not supported.
index.js is treated as an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which declares all .js files in that package scope as ES modules.
Instead rename index.js to end in .cjs, change the requiring code to use dynamic import() which is available in all CommonJS modules, or change "type": "module" to "type": "commonjs" in /Applications/ElectronMail.app/Contents/Resources/app.asar/package.json to treat all .js files as CommonJS (using .mjs for all ES modules instead).

at c._load (node:electron/js2c/asar_bundle:5:13343)
at Object.<anonymous> (node:electron/js2c/browser_init:185:3104)
at ./lib/browser/init.ts (node:electron/js2c/browser_init:185:3308)
at __webpack_require__ (node:electron/js2c/browser_init:1:128)
at node:electron/js2c/browser_init:1:1200
at node:electron/js2c/browser_init:1:1267
at c._load (node:electron/js2c/asar_bundle:5:13343)

I had the same kind of problems last December in September when I tried to make a universal binary.

If i build ElectronMail from an intel, it only worked on Intel. If I build from an Apple Silicon, it only worked on Apple Silicon.

It must be possible (considering the number of projects that managed to do it), but I didn't find out what was wrong exactly and how to solve it at that time.

badwulfy commented 2 years ago

I just tried to build with debug mode of electron-builder enabled (with export DEBUG=electron-builder) During the build, I go this error :

  ~/Downloads/ElectronMail   master *1 ❯ pnpm run clean:prebuilds && npm exec --package=electron-builder -- electron-builder --universal --publish never

> electron-mail@5.0.1 clean:prebuilds /Users/kiralex/Downloads/ElectronMail
> rimraf ./node_modules/{keytar,sodium-native,spellchecker,msgpackr-extract}/{bin,build,prebuilds} ./node_modules/@msgpackr-extract/ ./node_modules/sodium-native/deps/{unix,win,libsodium-*}

  • electron-builder  version=23.1.0 os=21.5.0
  • loaded configuration  file=/Users/kiralex/Downloads/ElectronMail/electron-builder.yml
  • writing effective config  file=dist/builder-effective-config.yaml
  • rebuilding native dependencies  dependencies=keytar@7.9.0, msgpackr-extract@2.0.2, sodium-native@3.3.0, spellchecker@3.7.0 platform=darwin arch=x64
  • install prebuilt binary  name=keytar version=7.9.0 platform=darwin arch=x64 napi=
  ⨯ cannot find prebuild-install  
  • packaging       platform=darwin arch=x64 electron=19.0.4 appOutDir=dist/mac-universal--x64
>>> [hook: afterPack] Processing ["dmg"] targets
  • rebuilding native dependencies  dependencies=keytar@7.9.0, msgpackr-extract@2.0.2, sodium-native@3.3.0, spellchecker@3.7.0 platform=darwin arch=arm64
  • install prebuilt binary  name=keytar version=7.9.0 platform=darwin arch=arm64 napi=
  ⨯ cannot find prebuild-install  
  • packaging       platform=darwin arch=arm64 electron=19.0.4 appOutDir=dist/mac-universal--arm64
>>> [hook: afterPack] Processing ["dmg"] targets
  • packaging       platform=darwin arch=universal electron=19.0.4 appOutDir=dist/mac-universal
  ⨯ Can't reconcile two non-macho files node_modules/spellchecker/build/Release/hunspell.a  failedTask=build stackTrace=Error: Can't reconcile two non-macho files node_modules/spellchecker/build/Release/hunspell.a
    at Object.exports.mergeASARs (/Users/kiralex/Downloads/ElectronMail/node_modules/@electron/universal/src/asar-utils.ts:151:13)
    at exports.makeUniversalApp (/Users/kiralex/Downloads/ElectronMail/node_modules/@electron/universal/src/index.ts:205:13)
    at MacPackager.doPack (/Users/kiralex/Downloads/ElectronMail/node_modules/app-builder-lib/src/macPackager.ts:125:9)
    at MacPackager.pack (/Users/kiralex/Downloads/ElectronMail/node_modules/app-builder-lib/src/macPackager.ts:191:7)
    at Packager.doBuild (/Users/kiralex/Downloads/ElectronMail/node_modules/app-builder-lib/src/packager.ts:441:9)
    at Object.executeFinally (/Users/kiralex/Downloads/ElectronMail/node_modules/builder-util/src/promise.ts:12:14)
    at Packager._build (/Users/kiralex/Downloads/ElectronMail/node_modules/app-builder-lib/src/packager.ts:376:31)
    at Packager.build (/Users/kiralex/Downloads/ElectronMail/node_modules/app-builder-lib/src/packager.ts:337:12)
    at Object.executeFinally (/Users/kiralex/Downloads/ElectronMail/node_modules/builder-util/src/promise.ts:12:14)

I tried to update electron-builder to the latest version (as it seems to fix some issues when building universal binary) but I still get the same error.

vladimiry commented 2 years ago

As you expected, the binary did not work on my M1.

The error you posted there related to the module loading, not a binary thing (it didn't get to the native module loading stage loading yet).

⨯ Can't reconcile two non-macho files node_modules/spellchecker/build/Release/hunspell.a failedTask=build stackTrace=Error: Can't reconcile two non-macho files node_modules/spellchecker/build/Release/hunspell.a

It's solved in the "wip" branch. Pick this files section to your/master branch https://github.com/vladimiry/ElectronMail/blob/4f11b3f7f5537ffb1322f12b23e2b20e1dd47b10/electron-builder.yml#L9-L17 And when you package the app use the --arm64 --publish never args (--universal is not something I'm a fan of at the moment as it adds complexity, would prefer to ship 2 separate builds).

Alphrag commented 2 years ago

Hey guys, Following @ylluminate's request, I've had a quick look at your build to compare it with ours (at Ferdium) for arm.

@vladimiry We indeed do not use the --universal flag as it hasn't been working properly. When we build on our machines we use npm run build -- --mac --arm64 --dir which corresponds to what you are suggesting. However, when we use the github CI, we let electron-builder take care of everything, by calling the command npm run build -- --publish always and having the appropriate targets set in electron-builder.yaml as follows:

mac:
  [...]
  target:
    - target: dmg
      arch: [x64, arm64]
    - target: zip
      arch: [x64, arm64]

It also seems that it is possible to build the arm app on an intel Mac (I've just done it on mine to test, but I can't run the app for obvious reasons), so this should not be a problem with Github CI. If you've got questions, just let me know and I'll be happy to see if I can help!

vraravam commented 2 years ago

It's also essential to note that we at Ferdium took a hard look at our dependencies that require native compilation - and removed them over time. That way, we are not compiling dependencies with native libraries as part of our CI build process. You might also need to review and watch out for these items.

vladimiry commented 2 years ago

Can someone test this build on M1 hardware? It's built with --arm64 arg vs --universal used before. I guess it might work. Fortunately with https://github.com/github/roadmap/issues/528 resolving CI should be able to rune e2e test for arm64 build.

Native deps got compiled without errors:

...
rebuilding native dependencies  dependencies=keytar@7.9.0, msgpackr-extract@2.0.2, sodium-native@3.3.0, spellchecker@3.7.0 platform=darwin arch=arm64
...
• execute command  command=/Users/runner/hostedtoolcache/node/16.16.0/x64/bin/node /Users/runner/hostedtoolcache/node/16.16.0/x64/lib/node_modules/npm/bin/npm-cli.js rebuild --verbose keytar@7.9.0 msgpackr-extract@2.0.2 sodium-native@3.3.0 spellchecker@3.7.0
... 
npm timing build:run:install:node_modules/msgpackr-extract Completed in 13095ms
npm timing build:run:install:node_modules/keytar Completed in 27758ms
npm timing build:run:install:node_modules/spellchecker Completed in 44430ms
npm timing build:run:install:node_modules/sodium-native Completed in 296869ms
...

It also seems that it is possible to build the arm app on an intel Mac (I've just done it on mine to test, but I can't run the app for obvious reasons), so this should not be a problem with Github CI.

Thanks for confirming that macos-latest image should work for arm64/M1-target compilation.

electron-builder.yaml as follows:

It's a config-based target specification, which should be the same as CLI based when we specify --arm64 arg (currently used way in this project).

and removed them over time

I do the same (just recently remove one native dep). Also considering dropping the unmaintained spellchecker one and using native spellchecking or switching to https://github.com/Wulf/nodehun. But at the same time added a simple rust-based experimental native dep https://github.com/vladimiry/ElectronMail/tree/wip/src/electron-main/database/serialization/compression-native (being loaded lazily/by-demand and currently hidden under the feature flag). I'm not really afraid to add new native deps, but those should be maintained. And I don't use prebuilds, which obviously complicates the packaging step.

vladimiry commented 2 years ago

Thanks for confirming that macos-latest image should work for arm64/M1-target compilation.

Just noticed that you go with macos-12 image, but I use macos-latest which is currently 11.6.7. So if the provided in the previous message build still doesn't work, there is a room for another try (macos-latest => macos-12 switch for arm64 build).

ylluminate commented 2 years ago

Can someone test this build on M1 hardware?

This build yields the following problem report (crash): https://p153.p0.n0.cdn.getcloudapp.com/items/nOuXLB1Q/d4727fbe-dff2-4ff1-938d-e309fb0d61f2.txt

badwulfy commented 2 years ago

Can someone test this build on M1 hardware? It's built with --arm64 arg vs --universal used before. I guess it might work. Fortunately with github/roadmap#528 resolving CI should be able to rune e2e test for arm64 build.

When running this build, it crash instantly crash

Here is the crash report:

-------------------------------------
Translated Report (Full Report Below)
-------------------------------------

Process:               ElectronMail [71172]
Path:                  /Applications/ElectronMail.app/Contents/MacOS/ElectronMail
Identifier:            github.comvladimiryElectronMail
Version:               5.0.2 (5.0.2)
Code Type:             ARM-64 (Native)
Parent Process:        launchd [1]
User ID:               501

Date/Time:             2022-07-14 17:03:48.3024 +0200
OS Version:            macOS 12.4 (21F79)
Report Version:        12
Anonymous UUID:        349A064B-821D-0DBD-2DC7-865E3AFEA2D1

Sleep/Wake UUID:       B28A2FEA-A30D-4B0A-AF8B-B38704034757

Time Awake Since Boot: 92000 seconds
Time Since Wake:       4256 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    Namespace DYLD, Code 4 Symbol missing
missing symbol called
(terminated at launch; ignore backtrace)

Thread 0 Crashed::  Dispatch queue: com.apple.main-thread
0   dyld                                   0x1010b3820 __abort_with_payload + 8
1   dyld                                   0x1010ba9e0 abort_with_payload_wrapper_internal + 104
2   dyld                                   0x1010baa14 abort_with_payload + 16
3   dyld                                   0x10107293c dyld4::halt(char const*) + 328
4   dyld                                   0x101091240 dyld4::APIs::_dyld_missing_symbol_abort() + 44
5   sodium.node                            0x101fa20a0 create_sodium_native + 24
6   Electron Framework                     0x10e7f7d94 node::AsyncResource::CallbackScope::CallbackScope(node::AsyncResource*) + 1552
7   Electron Framework                     0x10e8180d4 node::binding::get_linked_module(char const*) + 3276
8   Electron Framework                     0x10e816f30 node_module_register + 2096
9   Electron Framework                     0x109ae6d4c v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)) + 15484
10  Electron Framework                     0x109ae68b8 v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)) + 14312
11  Electron Framework                     0x109ae5c0c v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&)) + 11068
12  ???                                   0x7507f09a6c ???
13  ???                                   0x7507e8c918 ???
14  ???                                   0x7507e8c918 ???
15  ???                                   0x7507e8c918 ???
16  ???                                   0x7507e8c918 ???
17  ???                                   0x7507e8c918 ???
18  ???                                   0x750006cb3c ???
19  ???                                   0x750005a2ec ???
20  ???                                   0x7500058e94 ???
21  ???                                   0x7507e8c918 ???
22  ???                                   0x7507e8c918 ???
23  ???                                   0x7507e8c918 ???
24  ???                                   0x7507e8c918 ???
25  ???                                   0x7507e8c918 ???
26  ???                                   0x7507e8c918 ???
27  ???                                   0x750006cb3c ???
28  ???                                   0x750005a2ec ???
29  ???                                   0x7500058e94 ???
30  ???                                   0x7507e8c918 ???
31  ???                                   0x7507e8c918 ???
32  ???                                   0x7507e8c918 ???
33  ???                                   0x7507e8c918 ???
34  ???                                   0x7507e8c918 ???
35  ???                                   0x750006cb3c ???
36  ???                                   0x750005a2ec ???
37  ???                                   0x7500058e94 ???
38  ???                                   0x7507e8c918 ???
39  ???                                   0x7507e8c918 ???
40  ???                                   0x7507e8c918 ???
41  ???                                   0x7507e8c918 ???
42  ???                                   0x7507e8c918 ???
43  ???                                   0x7507e8c918 ???
44  ???                                   0x750005a2ec ???
45  ???                                   0x7500058e94 ???
46  ???                                   0x7507e8c918 ???
47  ???                                   0x7507e8c918 ???
48  ???                                   0x7507e8c918 ???
49  ???                                   0x7507e8c918 ???
50  ???                                   0x7507e8c918 ???
51  ???                                   0x7507e8c918 ???
52  ???                                   0x750005a2ec ???
53  ???                                   0x7500058e94 ???
54  ???                                   0x7507e8c918 ???
55  ???                                   0x7507e8c918 ???
56  ???                                   0x7507e8c918 ???
57  ???                                   0x7507e8c918 ???
58  ???                                   0x7507e8c918 ???
59  ???                                   0x7507e8c918 ???
60  ???                                   0x750005a2ec ???
61  ???                                   0x7500058e94 ???
62  ???                                   0x7507e8c918 ???
63  ???                                   0x7507e8c918 ???
64  ???                                   0x7507e8c918 ???
65  ???                                   0x7507e8c918 ???
66  ???                                   0x7507e8c918 ???
67  ???                                   0x7507e8c918 ???
68  ???                                   0x7507e8c918 ???
69  ???                                   0x7507e8c918 ???
70  ???                                   0x7507e8c918 ???
71  ???                                   0x7507e8c918 ???
72  ???                                   0x7507e8c918 ???
73  ???                                   0x7507e8c918 ???
74  ???                                   0x7507e8c918 ???
75  ???                                   0x7507e8c918 ???
76  ???                                   0x750004dee8 ???
77  ???                                   0x7507e8c918 ???
78  ???                                   0x7507e8c918 ???
79  ???                                   0x7507e8c918 ???
80  ???                                   0x7507e8c918 ???
81  ???                                   0x7507e8c918 ???
82  ???                                   0x7507e8c918 ???
83  ???                                   0x7507e8ab4c ???
84  ???                                   0x7507e8a7e8 ???
85  Electron Framework                     0x109b8bc88 v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*) + 2080
86  Electron Framework                     0x109b8b4f4 v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*) + 140
87  Electron Framework                     0x109a8e188 v8::Function::Call(v8::Local<v8::Context>, v8::Local<v8::Value>, int, v8::Local<v8::Value>*) + 356
88  Electron Framework                     0x10e7eca98 node::EmitAsyncDestroy(node::Environment*, node::async_context) + 250948
89  Electron Framework                     0x10e7eda84 node::EmitAsyncDestroy(node::Environment*, node::async_context) + 255024
90  Electron Framework                     0x10e7ed954 node::EmitAsyncDestroy(node::Environment*, node::async_context) + 254720
91  Electron Framework                     0x10e7ad3c8 node::LoadEnvironment(node::Environment*, std::__1::function<v8::MaybeLocal<v8::Value> (node::StartExecutionCallbackInfo const&)>) + 120
92  Electron Framework                     0x108d87450 node::FreeArrayBufferAllocator(node::ArrayBufferAllocator*) + 18168
93  Electron Framework                     0x108d0c8c0 v8::internal::compiler::RawMachineAssembler::TargetParameter() + 5948
94  Electron Framework                     0x10a8b3cd4 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 3293140
95  Electron Framework                     0x10a8b70cc v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 3306444
96  Electron Framework                     0x10a8b3698 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 3291544
97  Electron Framework                     0x108ed42c0 v8::internal::compiler::BasicBlock::set_loop_header(v8::internal::compiler::BasicBlock*) + 13620
98  Electron Framework                     0x108ed52e4 v8::internal::compiler::BasicBlock::set_loop_header(v8::internal::compiler::BasicBlock*) + 17752
99  Electron Framework                     0x108ed4e7c v8::internal::compiler::BasicBlock::set_loop_header(v8::internal::compiler::BasicBlock*) + 16624
100 Electron Framework                     0x108ed3984 v8::internal::compiler::BasicBlock::set_loop_header(v8::internal::compiler::BasicBlock*) + 11256
101 Electron Framework                     0x108ed3e50 v8::internal::compiler::BasicBlock::set_loop_header(v8::internal::compiler::BasicBlock*) + 12484
102 Electron Framework                     0x108c4b17c ElectronMain + 128
103 dyld                                   0x10106d08c start + 520

Thread 1:
0   libsystem_pthread.dylib                0x1b336f078 start_wqthread + 0

Thread 2:
0   libsystem_pthread.dylib                0x1b336f078 start_wqthread + 0

Thread 3:
0   libsystem_pthread.dylib                0x1b336f078 start_wqthread + 0

Thread 4:: ThreadPoolServiceThread
0   libsystem_kernel.dylib                 0x1b3342358 kevent64 + 8
1   Electron Framework                     0x10b51956c v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16291948
2   Electron Framework                     0x10b4d36f8 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16005624
3   Electron Framework                     0x10b4a22ac v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 15803820
4   Electron Framework                     0x10b4ec18c v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16106636
5   Electron Framework                     0x10b4d7e4c v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16023884
6   Electron Framework                     0x10b4ec300 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16107008
7   Electron Framework                     0x10b5070e0 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16217056
8   libsystem_pthread.dylib                0x1b337426c _pthread_start + 148
9   libsystem_pthread.dylib                0x1b336f08c thread_start + 8

Thread 5:: ThreadPoolForegroundWorker
0   libsystem_kernel.dylib                 0x1b33368b0 mach_msg_trap + 8
1   libsystem_kernel.dylib                 0x1b3336d20 mach_msg + 76
2   Electron Framework                     0x10b512c8c v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16265100
3   Electron Framework                     0x10b4e5b6c v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16080492
4   Electron Framework                     0x10b4e6438 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16082744
5   Electron Framework                     0x10b4e6160 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16082016
6   Electron Framework                     0x10b5070e0 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16217056
7   libsystem_pthread.dylib                0x1b337426c _pthread_start + 148
8   libsystem_pthread.dylib                0x1b336f08c thread_start + 8

Thread 6:: ThreadPoolBackgroundWorker
0   libsystem_kernel.dylib                 0x1b33368b0 mach_msg_trap + 8
1   libsystem_kernel.dylib                 0x1b3336d20 mach_msg + 76
2   Electron Framework                     0x10b512c8c v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16265100
3   Electron Framework                     0x10b4e5b6c v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16080492
4   Electron Framework                     0x10b4e6288 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16082312
5   Electron Framework                     0x10b4e60dc v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16081884
6   Electron Framework                     0x10b5070e0 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16217056
7   libsystem_pthread.dylib                0x1b337426c _pthread_start + 148
8   libsystem_pthread.dylib                0x1b336f08c thread_start + 8

Thread 7:: ThreadPoolForegroundWorker
0   libsystem_kernel.dylib                 0x1b33368b0 mach_msg_trap + 8
1   libsystem_kernel.dylib                 0x1b3336d20 mach_msg + 76
2   Electron Framework                     0x10b512c8c v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16265100
3   Electron Framework                     0x10b4e5b6c v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16080492
4   Electron Framework                     0x10b4e6288 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16082312
5   Electron Framework                     0x10b4e6160 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16082016
6   Electron Framework                     0x10b5070e0 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16217056
7   libsystem_pthread.dylib                0x1b337426c _pthread_start + 148
8   libsystem_pthread.dylib                0x1b336f08c thread_start + 8

Thread 8:: Chrome_IOThread
0   libsystem_kernel.dylib                 0x1b3342358 kevent64 + 8
1   Electron Framework                     0x10b51956c v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16291948
2   Electron Framework                     0x10b4d36f8 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16005624
3   Electron Framework                     0x10b4a22ac v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 15803820
4   Electron Framework                     0x10b4ec18c v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16106636
5   Electron Framework                     0x10a8b829c v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 3311004
6   Electron Framework                     0x10b4ec300 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16107008
7   Electron Framework                     0x10b5070e0 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16217056
8   libsystem_pthread.dylib                0x1b337426c _pthread_start + 148
9   libsystem_pthread.dylib                0x1b336f08c thread_start + 8

Thread 9:: MemoryInfra
0   libsystem_kernel.dylib                 0x1b33368b0 mach_msg_trap + 8
1   libsystem_kernel.dylib                 0x1b3336d20 mach_msg + 76
2   Electron Framework                     0x10b512c8c v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16265100
3   Electron Framework                     0x10b512b64 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16264804
4   Electron Framework                     0x10b484d08 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 15683592
5   Electron Framework                     0x10b4d36f8 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16005624
6   Electron Framework                     0x10b4a22ac v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 15803820
7   Electron Framework                     0x10b4ec18c v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16106636
8   Electron Framework                     0x10b4ec300 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16107008
9   Electron Framework                     0x10b5070e0 v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*) + 16217056
10  libsystem_pthread.dylib                0x1b337426c _pthread_start + 148
11  libsystem_pthread.dylib                0x1b336f08c thread_start + 8

Thread 10:
0   libsystem_kernel.dylib                 0x1b333cc20 kevent + 8
1   Electron Framework                     0x108c4a7f4 uv_free_interface_addresses + 1196
2   Electron Framework                     0x108c3a034 uv_run + 356
3   Electron Framework                     0x10e8a5c28 node::CommonEnvironmentSetup::context() const + 150276
4   libsystem_pthread.dylib                0x1b337426c _pthread_start + 148
5   libsystem_pthread.dylib                0x1b336f08c thread_start + 8

Thread 11:
0   libsystem_kernel.dylib                 0x1b333a270 __psynch_cvwait + 8
1   libsystem_pthread.dylib                0x1b337483c _pthread_cond_wait + 1236
2   Electron Framework                     0x108c45950 uv_cond_wait + 12
3   Electron Framework                     0x10e8a5dd8 node::CommonEnvironmentSetup::context() const + 150708
4   Electron Framework                     0x10e8a3c18 node::CommonEnvironmentSetup::context() const + 142068
5   libsystem_pthread.dylib                0x1b337426c _pthread_start + 148
6   libsystem_pthread.dylib                0x1b336f08c thread_start + 8

Thread 12:
0   libsystem_kernel.dylib                 0x1b333a270 __psynch_cvwait + 8
1   libsystem_pthread.dylib                0x1b337483c _pthread_cond_wait + 1236
2   Electron Framework                     0x108c45950 uv_cond_wait + 12
3   Electron Framework                     0x10e8a5dd8 node::CommonEnvironmentSetup::context() const + 150708
4   Electron Framework                     0x10e8a3c18 node::CommonEnvironmentSetup::context() const + 142068
5   libsystem_pthread.dylib                0x1b337426c _pthread_start + 148
6   libsystem_pthread.dylib                0x1b336f08c thread_start + 8

Thread 13:
0   libsystem_kernel.dylib                 0x1b333a270 __psynch_cvwait + 8
1   libsystem_pthread.dylib                0x1b337483c _pthread_cond_wait + 1236
2   Electron Framework                     0x108c45950 uv_cond_wait + 12
3   Electron Framework                     0x10e8a5dd8 node::CommonEnvironmentSetup::context() const + 150708
4   Electron Framework                     0x10e8a3c18 node::CommonEnvironmentSetup::context() const + 142068
5   libsystem_pthread.dylib                0x1b337426c _pthread_start + 148
6   libsystem_pthread.dylib                0x1b336f08c thread_start + 8

Thread 14:
0   libsystem_kernel.dylib                 0x1b33368ec semaphore_wait_trap + 8
1   Electron Framework                     0x108c45f5c uv_sem_wait + 24
2   Electron Framework                     0x10e911400 node::SetTracingController(v8::TracingController*) + 48092
3   libsystem_pthread.dylib                0x1b337426c _pthread_start + 148
4   libsystem_pthread.dylib                0x1b336f08c thread_start + 8

Thread 0 crashed with ARM Thread State (64-bit):
    x0: 0x0000000000000006   x1: 0x0000000000000004   x2: 0x000000016ef11c00   x3: 0x0000000000000014
    x4: 0x000000016ef11800   x5: 0x0000000000000000   x6: 0x0000000000000000   x7: 0x0000000000000000
    x8: 0x0000000000000020   x9: 0x0000000000000009  x10: 0x0000000000000001  x11: 0x000000000000000a
   x12: 0x0000000000000000  x13: 0x0000000000000037  x14: 0x00000000961af449  x15: 0x00000000003d0a08
   x16: 0x0000000000000209  x17: 0x000000010106b14c  x18: 0x0000000000000000  x19: 0x0000000000000000
   x20: 0x000000016ef11800  x21: 0x0000000000000014  x22: 0x000000016ef11c00  x23: 0x0000000000000004
   x24: 0x0000000000000006  x25: 0x0000000000000080  x26: 0x000000016ef124a0  x27: 0x000000014981a908
   x28: 0x0000007400000000   fp: 0x000000016ef117d0   lr: 0x00000001010ba9e0
    sp: 0x000000016ef11790   pc: 0x00000001010b3820 cpsr: 0x00001000
   far: 0x000000010e7f7f34  esr: 0x56000080  Address size fault

Binary Images:
       0x101068000 -        0x1010c7fff dyld (*) <d9c2a46e-8dc4-3950-9d6a-f799e8ccb683> /usr/lib/dyld
       0x101f88000 -        0x101fb3fff sodium.node (*) <830b89bd-c6a4-3b3a-8155-506fcc69df79> /Applications/ElectronMail.app/Contents/Resources/app.asar.unpacked/node_modules/sodium-native/build/Release/sodium.node
       0x108a94000 -        0x10fa83fff com.github.Electron.framework (*) <4c4c44ce-5555-3144-a1a6-7d10a1f2e49b> /Applications/ElectronMail.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework
               0x0 - 0xffffffffffffffff ??? (*) <00000000-0000-0000-0000-000000000000> ???
       0x1b336d000 -        0x1b3379fff libsystem_pthread.dylib (*) <42166a2c-89a9-3c38-a215-f028544cea23> /usr/lib/system/libsystem_pthread.dylib
       0x1b3335000 -        0x1b336cfff libsystem_kernel.dylib (*) <03f48dc5-caa7-3678-af61-1a3c7fa8b06e> /usr/lib/system/libsystem_kernel.dylib

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=1.2G resident=0K(0%) swapped_out_or_unallocated=1.2G(100%)
Writable regions: Total=766.7M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=766.7M(100%)

                                VIRTUAL   REGION 
REGION TYPE                        SIZE    COUNT (non-coalesced) 
===========                     =======  ======= 
Activity Tracing                   256K        1 
ColorSync                           16K        1 
CoreGraphics                        16K        1 
CoreServices                       176K        1 
Dispatch continuations            64.0M        1 
Kernel Alloc Once                   32K        1 
MALLOC                           106.2M       30 
MALLOC guard page                   96K        6 
MALLOC_MEDIUM (reserved)         480.0M        4         reserved VM address space (unallocated)
Memory Tag 253                    32.0G       23 
Memory Tag 255                     4.1G       16 
STACK GUARD                       56.2M       15 
Stack                             89.8M       15 
VM_ALLOCATE                       8224K        3 
__AUTH                            2597K      308 
__AUTH_CONST                      20.3M      501 
__CTF                               756        1 
__DATA                            19.1M      498 
__DATA_CONST                      23.8M      512 
__DATA_DIRTY                      1793K      214 
__FONT_DATA                          4K        1 
__LINKEDIT                       581.0M        9 
__OBJC_CONST                      3634K      279 
__OBJC_RO                         83.0M        1 
__OBJC_RW                         3152K        1 
__TEXT                           606.6M      529 
__UNICODE                          592K        1 
dyld private memory               1024K        1 
mapped file                       64.3M       12 
shared memory                      848K       13 
===========                     =======  ======= 
TOTAL                             38.3G     2999 
TOTAL, minus reserved VM space    37.8G     2999 

-----------
Full Report
-----------

{"app_name":"ElectronMail","timestamp":"2022-07-14 17:03:50.00 +0200","app_version":"5.0.2","slice_uuid":"4c4c44b0-5555-3144-a166-2eb030dd0214","build_version":"5.0.2","platform":1,"bundleID":"github.comvladimiryElectronMail","share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"macOS 12.4 (21F79)","incident_id":"0F88FD41-2728-4852-B6AA-7078C367CACB","name":"ElectronMail"}
{
  "uptime" : 92000,
  "procLaunch" : "2022-07-14 17:03:45.6877 +0200",
  "procRole" : "Foreground",
  "version" : 2,
  "userID" : 501,
  "deployVersion" : 210,
  "modelCode" : "MacBookAir10,1",
  "procStartAbsTime" : 2225917120039,
  "coalitionID" : 25963,
  "osVersion" : {
    "train" : "macOS 12.4",
    "build" : "21F79",
    "releaseType" : "User"
  },
  "captureTime" : "2022-07-14 17:03:48.3024 +0200",
  "incident" : "0F88FD41-2728-4852-B6AA-7078C367CACB",
  "bug_type" : "309",
  "pid" : 71172,
  "procExitAbsTime" : 2225979843033,
  "translated" : false,
  "cpuType" : "ARM-64",
  "procName" : "ElectronMail",
  "procPath" : "\/Applications\/ElectronMail.app\/Contents\/MacOS\/ElectronMail",
  "bundleInfo" : {"CFBundleShortVersionString":"5.0.2","CFBundleVersion":"5.0.2","CFBundleIdentifier":"github.comvladimiryElectronMail"},
  "storeInfo" : {"deviceIdentifierForVendor":"37FE92D8-BEFB-5900-B28C-4A0A6F8E0865","thirdParty":true},
  "parentProc" : "launchd",
  "parentPid" : 1,
  "coalitionName" : "github.comvladimiryElectronMail",
  "crashReporterKey" : "349A064B-821D-0DBD-2DC7-865E3AFEA2D1",
  "wakeTime" : 4256,
  "sleepWakeUUID" : "B28A2FEA-A30D-4B0A-AF8B-B38704034757",
  "sip" : "enabled",
  "isCorpse" : 1,
  "exception" : {"codes":"0x0000000000000000, 0x0000000000000000","rawCodes":[0,0],"type":"EXC_CRASH","signal":"SIGABRT"},
  "termination" : {"code":4,"flags":518,"namespace":"DYLD","indicator":"Symbol missing","details":["(terminated at launch; ignore backtrace)"],"reasons":["missing symbol called"]},
  "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
  "faultingThread" : 0,
  "threads" : [{"triggered":true,"id":2317787,"threadState":{"x":[{"value":6},{"value":4},{"value":6156262400},{"value":20},{"value":6156261376},{"value":0},{"value":0},{"value":0},{"value":32},{"value":9},{"value":1},{"value":10},{"value":0},{"value":55},{"value":2518348873},{"value":4000264},{"value":521},{"value":4312183116,"symbolLocation":392,"symbol":"__simple_bprintf"},{"value":0},{"value":0},{"value":6156261376},{"value":20},{"value":6156262400},{"value":4},{"value":6},{"value":128},{"value":6156264608},{"value":5528201480},{"value":498216206336}],"flavor":"ARM_THREAD_STATE64","lr":{"value":4312508896},"cpsr":{"value":4096},"fp":{"value":6156261328},"sp":{"value":6156261264},"esr":{"value":1442840704,"description":" Address size fault"},"pc":{"value":4312479776,"matchesCrashFrame":1},"far":{"value":4538203956}},"queue":"com.apple.main-thread","frames":[{"imageOffset":309280,"symbol":"__abort_with_payload","symbolLocation":8,"imageIndex":0},{"imageOffset":338400,"symbol":"abort_with_payload_wrapper_internal","symbolLocation":104,"imageIndex":0},{"imageOffset":338452,"symbol":"abort_with_payload","symbolLocation":16,"imageIndex":0},{"imageOffset":43324,"symbol":"dyld4::halt(char const*)","symbolLocation":328,"imageIndex":0},{"imageOffset":168512,"symbol":"dyld4::APIs::_dyld_missing_symbol_abort()","symbolLocation":44,"imageIndex":0},{"imageOffset":106656,"symbol":"create_sodium_native","symbolLocation":24,"imageIndex":1},{"imageOffset":97926548,"symbol":"node::AsyncResource::CallbackScope::CallbackScope(node::AsyncResource*)","symbolLocation":1552,"imageIndex":2},{"imageOffset":98058452,"symbol":"node::binding::get_linked_module(char const*)","symbolLocation":3276,"imageIndex":2},{"imageOffset":98053936,"symbol":"node_module_register","symbolLocation":2096,"imageIndex":2},{"imageOffset":17116492,"symbol":"v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&))","symbolLocation":15484,"imageIndex":2},{"imageOffset":17115320,"symbol":"v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&))","symbolLocation":14312,"imageIndex":2},{"imageOffset":17112076,"symbol":"v8::internal::Accessors::MakeAccessor(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Name>, void (*)(v8::Local<v8::Name>, v8::PropertyCallbackInfo<v8::Value> const&), void (*)(v8::Local<v8::Name>, v8::Local<v8::Value>, v8::PropertyCallbackInfo<v8::Boolean> const&))","symbolLocation":11068,"imageIndex":2},{"imageOffset":502644382316,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502511618876,"imageIndex":3},{"imageOffset":502511543020,"imageIndex":3},{"imageOffset":502511537812,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502511618876,"imageIndex":3},{"imageOffset":502511543020,"imageIndex":3},{"imageOffset":502511537812,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502511618876,"imageIndex":3},{"imageOffset":502511543020,"imageIndex":3},{"imageOffset":502511537812,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502511543020,"imageIndex":3},{"imageOffset":502511537812,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502511543020,"imageIndex":3},{"imageOffset":502511537812,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502511543020,"imageIndex":3},{"imageOffset":502511537812,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502511492840,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643869976,"imageIndex":3},{"imageOffset":502643862348,"imageIndex":3},{"imageOffset":502643861480,"imageIndex":3},{"imageOffset":17792136,"symbol":"v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*)","symbolLocation":2080,"imageIndex":2},{"imageOffset":17790196,"symbol":"v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*)","symbolLocation":140,"imageIndex":2},{"imageOffset":16753032,"symbol":"v8::Function::Call(v8::Local<v8::Context>, v8::Local<v8::Value>, int, v8::Local<v8::Value>*)","symbolLocation":356,"imageIndex":2},{"imageOffset":97880728,"symbol":"node::EmitAsyncDestroy(node::Environment*, node::async_context)","symbolLocation":250948,"imageIndex":2},{"imageOffset":97884804,"symbol":"node::EmitAsyncDestroy(node::Environment*, node::async_context)","symbolLocation":255024,"imageIndex":2},{"imageOffset":97884500,"symbol":"node::EmitAsyncDestroy(node::Environment*, node::async_context)","symbolLocation":254720,"imageIndex":2},{"imageOffset":97620936,"symbol":"node::LoadEnvironment(node::Environment*, std::__1::function<v8::MaybeLocal<v8::Value> (node::StartExecutionCallbackInfo const&)>)","symbolLocation":120,"imageIndex":2},{"imageOffset":3093584,"symbol":"node::FreeArrayBufferAllocator(node::ArrayBufferAllocator*)","symbolLocation":18168,"imageIndex":2},{"imageOffset":2590912,"symbol":"v8::internal::compiler::RawMachineAssembler::TargetParameter()","symbolLocation":5948,"imageIndex":2},{"imageOffset":31587540,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":3293140,"imageIndex":2},{"imageOffset":31600844,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":3306444,"imageIndex":2},{"imageOffset":31585944,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":3291544,"imageIndex":2},{"imageOffset":4457152,"symbol":"v8::internal::compiler::BasicBlock::set_loop_header(v8::internal::compiler::BasicBlock*)","symbolLocation":13620,"imageIndex":2},{"imageOffset":4461284,"symbol":"v8::internal::compiler::BasicBlock::set_loop_header(v8::internal::compiler::BasicBlock*)","symbolLocation":17752,"imageIndex":2},{"imageOffset":4460156,"symbol":"v8::internal::compiler::BasicBlock::set_loop_header(v8::internal::compiler::BasicBlock*)","symbolLocation":16624,"imageIndex":2},{"imageOffset":4454788,"symbol":"v8::internal::compiler::BasicBlock::set_loop_header(v8::internal::compiler::BasicBlock*)","symbolLocation":11256,"imageIndex":2},{"imageOffset":4456016,"symbol":"v8::internal::compiler::BasicBlock::set_loop_header(v8::internal::compiler::BasicBlock*)","symbolLocation":12484,"imageIndex":2},{"imageOffset":1798524,"symbol":"ElectronMain","symbolLocation":128,"imageIndex":2},{"imageOffset":20620,"symbol":"start","symbolLocation":520,"imageIndex":0}]},{"id":2317842,"frames":[{"imageOffset":8312,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":4}]},{"id":2317843,"frames":[{"imageOffset":8312,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":4}]},{"id":2317849,"frames":[{"imageOffset":8312,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":4}]},{"id":2317865,"name":"ThreadPoolServiceThread","frames":[{"imageOffset":54104,"symbol":"kevent64","symbolLocation":8,"imageIndex":5},{"imageOffset":44586348,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16291948,"imageIndex":2},{"imageOffset":44300024,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16005624,"imageIndex":2},{"imageOffset":44098220,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":15803820,"imageIndex":2},{"imageOffset":44401036,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16106636,"imageIndex":2},{"imageOffset":44318284,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16023884,"imageIndex":2},{"imageOffset":44401408,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16107008,"imageIndex":2},{"imageOffset":44511456,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16217056,"imageIndex":2},{"imageOffset":29292,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":4},{"imageOffset":8332,"symbol":"thread_start","symbolLocation":8,"imageIndex":4}]},{"id":2317866,"name":"ThreadPoolForegroundWorker","frames":[{"imageOffset":6320,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":5},{"imageOffset":7456,"symbol":"mach_msg","symbolLocation":76,"imageIndex":5},{"imageOffset":44559500,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16265100,"imageIndex":2},{"imageOffset":44374892,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16080492,"imageIndex":2},{"imageOffset":44377144,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16082744,"imageIndex":2},{"imageOffset":44376416,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16082016,"imageIndex":2},{"imageOffset":44511456,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16217056,"imageIndex":2},{"imageOffset":29292,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":4},{"imageOffset":8332,"symbol":"thread_start","symbolLocation":8,"imageIndex":4}]},{"id":2317867,"name":"ThreadPoolBackgroundWorker","frames":[{"imageOffset":6320,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":5},{"imageOffset":7456,"symbol":"mach_msg","symbolLocation":76,"imageIndex":5},{"imageOffset":44559500,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16265100,"imageIndex":2},{"imageOffset":44374892,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16080492,"imageIndex":2},{"imageOffset":44376712,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16082312,"imageIndex":2},{"imageOffset":44376284,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16081884,"imageIndex":2},{"imageOffset":44511456,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16217056,"imageIndex":2},{"imageOffset":29292,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":4},{"imageOffset":8332,"symbol":"thread_start","symbolLocation":8,"imageIndex":4}]},{"id":2317868,"name":"ThreadPoolForegroundWorker","frames":[{"imageOffset":6320,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":5},{"imageOffset":7456,"symbol":"mach_msg","symbolLocation":76,"imageIndex":5},{"imageOffset":44559500,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16265100,"imageIndex":2},{"imageOffset":44374892,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16080492,"imageIndex":2},{"imageOffset":44376712,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16082312,"imageIndex":2},{"imageOffset":44376416,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16082016,"imageIndex":2},{"imageOffset":44511456,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16217056,"imageIndex":2},{"imageOffset":29292,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":4},{"imageOffset":8332,"symbol":"thread_start","symbolLocation":8,"imageIndex":4}]},{"id":2317869,"name":"Chrome_IOThread","frames":[{"imageOffset":54104,"symbol":"kevent64","symbolLocation":8,"imageIndex":5},{"imageOffset":44586348,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16291948,"imageIndex":2},{"imageOffset":44300024,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16005624,"imageIndex":2},{"imageOffset":44098220,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":15803820,"imageIndex":2},{"imageOffset":44401036,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16106636,"imageIndex":2},{"imageOffset":31605404,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":3311004,"imageIndex":2},{"imageOffset":44401408,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16107008,"imageIndex":2},{"imageOffset":44511456,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16217056,"imageIndex":2},{"imageOffset":29292,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":4},{"imageOffset":8332,"symbol":"thread_start","symbolLocation":8,"imageIndex":4}]},{"id":2317870,"name":"MemoryInfra","frames":[{"imageOffset":6320,"symbol":"mach_msg_trap","symbolLocation":8,"imageIndex":5},{"imageOffset":7456,"symbol":"mach_msg","symbolLocation":76,"imageIndex":5},{"imageOffset":44559500,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16265100,"imageIndex":2},{"imageOffset":44559204,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16264804,"imageIndex":2},{"imageOffset":43977992,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":15683592,"imageIndex":2},{"imageOffset":44300024,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16005624,"imageIndex":2},{"imageOffset":44098220,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":15803820,"imageIndex":2},{"imageOffset":44401036,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16106636,"imageIndex":2},{"imageOffset":44401408,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16107008,"imageIndex":2},{"imageOffset":44511456,"symbol":"v8::internal::SetupIsolateDelegate::SetupHeap(v8::internal::Heap*)","symbolLocation":16217056,"imageIndex":2},{"imageOffset":29292,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":4},{"imageOffset":8332,"symbol":"thread_start","symbolLocation":8,"imageIndex":4}]},{"id":2317871,"frames":[{"imageOffset":31776,"symbol":"kevent","symbolLocation":8,"imageIndex":5},{"imageOffset":1796084,"symbol":"uv_free_interface_addresses","symbolLocation":1196,"imageIndex":2},{"imageOffset":1728564,"symbol":"uv_run","symbolLocation":356,"imageIndex":2},{"imageOffset":98638888,"symbol":"node::CommonEnvironmentSetup::context() const","symbolLocation":150276,"imageIndex":2},{"imageOffset":29292,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":4},{"imageOffset":8332,"symbol":"thread_start","symbolLocation":8,"imageIndex":4}]},{"id":2317872,"frames":[{"imageOffset":21104,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":5},{"imageOffset":30780,"symbol":"_pthread_cond_wait","symbolLocation":1236,"imageIndex":4},{"imageOffset":1775952,"symbol":"uv_cond_wait","symbolLocation":12,"imageIndex":2},{"imageOffset":98639320,"symbol":"node::CommonEnvironmentSetup::context() const","symbolLocation":150708,"imageIndex":2},{"imageOffset":98630680,"symbol":"node::CommonEnvironmentSetup::context() const","symbolLocation":142068,"imageIndex":2},{"imageOffset":29292,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":4},{"imageOffset":8332,"symbol":"thread_start","symbolLocation":8,"imageIndex":4}]},{"id":2317873,"frames":[{"imageOffset":21104,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":5},{"imageOffset":30780,"symbol":"_pthread_cond_wait","symbolLocation":1236,"imageIndex":4},{"imageOffset":1775952,"symbol":"uv_cond_wait","symbolLocation":12,"imageIndex":2},{"imageOffset":98639320,"symbol":"node::CommonEnvironmentSetup::context() const","symbolLocation":150708,"imageIndex":2},{"imageOffset":98630680,"symbol":"node::CommonEnvironmentSetup::context() const","symbolLocation":142068,"imageIndex":2},{"imageOffset":29292,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":4},{"imageOffset":8332,"symbol":"thread_start","symbolLocation":8,"imageIndex":4}]},{"id":2317874,"frames":[{"imageOffset":21104,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":5},{"imageOffset":30780,"symbol":"_pthread_cond_wait","symbolLocation":1236,"imageIndex":4},{"imageOffset":1775952,"symbol":"uv_cond_wait","symbolLocation":12,"imageIndex":2},{"imageOffset":98639320,"symbol":"node::CommonEnvironmentSetup::context() const","symbolLocation":150708,"imageIndex":2},{"imageOffset":98630680,"symbol":"node::CommonEnvironmentSetup::context() const","symbolLocation":142068,"imageIndex":2},{"imageOffset":29292,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":4},{"imageOffset":8332,"symbol":"thread_start","symbolLocation":8,"imageIndex":4}]},{"id":2317875,"frames":[{"imageOffset":6380,"symbol":"semaphore_wait_trap","symbolLocation":8,"imageIndex":5},{"imageOffset":1777500,"symbol":"uv_sem_wait","symbolLocation":24,"imageIndex":2},{"imageOffset":99079168,"symbol":"node::SetTracingController(v8::TracingController*)","symbolLocation":48092,"imageIndex":2},{"imageOffset":29292,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":4},{"imageOffset":8332,"symbol":"thread_start","symbolLocation":8,"imageIndex":4}]}],
  "usedImages" : [
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 4312170496,
    "size" : 393216,
    "uuid" : "d9c2a46e-8dc4-3950-9d6a-f799e8ccb683",
    "path" : "\/usr\/lib\/dyld",
    "name" : "dyld"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4328030208,
    "size" : 180224,
    "uuid" : "830b89bd-c6a4-3b3a-8155-506fcc69df79",
    "path" : "\/Applications\/ElectronMail.app\/Contents\/Resources\/app.asar.unpacked\/node_modules\/sodium-native\/build\/Release\/sodium.node",
    "name" : "sodium.node"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4440276992,
    "CFBundleIdentifier" : "com.github.Electron.framework",
    "size" : 117374976,
    "uuid" : "4c4c44ce-5555-3144-a1a6-7d10a1f2e49b",
    "path" : "\/Applications\/ElectronMail.app\/Contents\/Frameworks\/Electron Framework.framework\/Versions\/A\/Electron Framework",
    "name" : "Electron Framework",
    "CFBundleVersion" : "19.0.8"
  },
  {
    "size" : 0,
    "source" : "A",
    "base" : 0,
    "uuid" : "00000000-0000-0000-0000-000000000000"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7301681152,
    "size" : 53248,
    "uuid" : "42166a2c-89a9-3c38-a215-f028544cea23",
    "path" : "\/usr\/lib\/system\/libsystem_pthread.dylib",
    "name" : "libsystem_pthread.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7301451776,
    "size" : 229376,
    "uuid" : "03f48dc5-caa7-3678-af61-1a3c7fa8b06e",
    "path" : "\/usr\/lib\/system\/libsystem_kernel.dylib",
    "name" : "libsystem_kernel.dylib"
  }
],
  "sharedCache" : {
  "base" : 7298383872,
  "size" : 3136077824,
  "uuid" : "513553bb-5ca5-3b9e-a613-b0603ffe3038"
},
  "vmSummary" : "ReadOnly portion of Libraries: Total=1.2G resident=0K(0%) swapped_out_or_unallocated=1.2G(100%)\nWritable regions: Total=766.7M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=766.7M(100%)\n\n                                VIRTUAL   REGION \nREGION TYPE                        SIZE    COUNT (non-coalesced) \n===========                     =======  ======= \nActivity Tracing                   256K        1 \nColorSync                           16K        1 \nCoreGraphics                        16K        1 \nCoreServices                       176K        1 \nDispatch continuations            64.0M        1 \nKernel Alloc Once                   32K        1 \nMALLOC                           106.2M       30 \nMALLOC guard page                   96K        6 \nMALLOC_MEDIUM (reserved)         480.0M        4         reserved VM address space (unallocated)\nMemory Tag 253                    32.0G       23 \nMemory Tag 255                     4.1G       16 \nSTACK GUARD                       56.2M       15 \nStack                             89.8M       15 \nVM_ALLOCATE                       8224K        3 \n__AUTH                            2597K      308 \n__AUTH_CONST                      20.3M      501 \n__CTF                               756        1 \n__DATA                            19.1M      498 \n__DATA_CONST                      23.8M      512 \n__DATA_DIRTY                      1793K      214 \n__FONT_DATA                          4K        1 \n__LINKEDIT                       581.0M        9 \n__OBJC_CONST                      3634K      279 \n__OBJC_RO                         83.0M        1 \n__OBJC_RW                         3152K        1 \n__TEXT                           606.6M      529 \n__UNICODE                          592K        1 \ndyld private memory               1024K        1 \nmapped file                       64.3M       12 \nshared memory                      848K       13 \n===========                     =======  ======= \nTOTAL                             38.3G     2999 \nTOTAL, minus reserved VM space    37.8G     2999 \n",
  "legacyInfo" : {
  "threadTriggered" : {
    "queue" : "com.apple.main-thread"
  }
},
  "trialInfo" : {
  "rollouts" : [
    {
      "rolloutId" : "5fc94383418129005b4e9ae0",
      "factorPackIds" : {

      },
      "deploymentId" : 240000401
    },
    {
      "rolloutId" : "60da5e84ab0ca017dace9abf",
      "factorPackIds" : {

      },
      "deploymentId" : 240000008
    }
  ],
  "experiments" : [

  ]
}
}

Model: MacBookAir10,1, BootROM 8419.0.113.0.1, proc 8:4:4 processors, 16 GB, SMC 
Graphics: Apple M1, Apple M1, Built-In
Display: LG HDR 4K, 5120 x 2880 (5K/UHD+ - Ultra High Definition Plus), Main, MirrorOff, Online
Memory Module: LPDDR4
AirPort: Wi-Fi, wl0: Mar 23 2022 19:57:59 version 18.60.27.0.7.8.129 FWID 01-570be953
Bluetooth: Version (null), 0 services, 0 devices, 0 incoming serial ports
Network Service: Wi-Fi, AirPort, en0
USB Device: USB31Bus
USB Device: hub_device
USB Device: USB Receiver
USB Device: USB Controls
USB Device: USB31Bus
Thunderbolt Bus: MacBook Air, Apple Inc.
Thunderbolt Bus: MacBook Air, Apple Inc.
vladimiry commented 2 years ago

Thanks everyone for testing. The libsodium/sodium-native native dependency appears to be crashing in both cases (same issue). The https://github.com/sodium-friends/sodium-native/issues/145 says that it's supposed to work on M1 hardware. Pinging @mafintosh guessing maybe there is a known quick fix for the crash like this on M1 hardware.

Just noticed that you go with macos-12 image, but I use macos-latest which is currently 11.6.7. So if the provided in the previous message build still doesn't work, there is a room for another try (macos-latest => macos-12 switch for arm64 build).

Going to trigger a new build on macos-12 CI system, just in case.

mafintosh commented 2 years ago

sodium should def work on m1. Are you sure electron-rebuild isn’t rebuilding it? That’s normally what goes wrong for users, instead of using the prebuild

vladimiry commented 2 years ago

Going to trigger a new build on macos-12 CI system, just in case.

A new build to test is uploaded here.

Are you sure electron-rebuild isn’t rebuilding it?

All the native deps in this project by design get compiled on the packaging stage (triggered by electron-builder => rebuild --verbose keytar@7.9.0 msgpackr-extract@2.0.2 sodium-native@3.3.0 spellchecker@3.7.0 and so on). It's used to work well on x64 arch systems, but now we are trying to ship arm64 build. I explicitly drop the prebuild-install module and existing prebuilds. I understand that it complicates things for developers, but I'm ok to maintain it this way. The issue is that I don't have M1 hardware to test stuff at my side.

vladimiry commented 2 years ago

Btw, there are other sodium bindings available, including rust-based. So the last resort is replacing "sodium-native" with something else (I'd prefer a native module vs wasm-based solution). But it's successfully used in the project from day one (~5 years), and it's confirmed as working on arm64 arch, so I'd like to keep it here.

ylluminate commented 2 years ago

A new build to test is uploaded here.

Sorry, another crash report: https://p153.p0.n0.cdn.getcloudapp.com/items/o0uGJm6n/19ab666b-1cf1-4276-852b-0e36f31d4633.txt

vladimiry commented 2 years ago

Thanks. It looks the same, Code 4 Symbol missing, related to libsodium.node.

I've just compared sodium.node size of x64/arm64, and it's 999584/318312, which looks suspicious (3x difference). So I think I should get it to the stage when arm64 libsodium.node size looks similar to x64 and only then ask to test the build again.

mafintosh commented 2 years ago

sodium is already prebuilt for all platforms, all in the installed bundle. I’d strongly suggest just not to rebuild it, you’ll probably only run into trouble.

vladimiry commented 2 years ago

@mafintosh yep, I know that it's coming with prebuilds, and thanks for the warning. Still going to keep fighting it for a while (it works well on x64 arch after all without troubles). It generally feels better when I know how and can replicate the compiling at my side. It's about better control on things. For example, there were cases when prebuilds of some native deps were shipped in a sort of doubtful state, so I had to improve things a little (like specifying MACOSX_DEPLOYMENT_TARGET and lowering the Linux version to get as many old systems as possible compatible with "glibc" lib).

mafintosh commented 2 years ago

For sure. We do all of that already 🙂 Are you rebuilding for arm and x64 on the same macbook?

vladimiry commented 2 years ago

For sure. We do all of that already

Yep, I know (briefly looked into it before). I didn't mean your lib.

Are you rebuilding for arm and x64 on the same macbook?

I don't have any apple laptops (none of intel/m1 based). So it's just GH CI system, and then I ask guys to test stuff :sweat: Yes, this sounds like a terrifying dev experience, so I normally avoid handling the macOS-specific tasks :smile:

mafintosh commented 2 years ago

I had tons of trouble building for arm on GH so we actually do those manually with an macbook mini in our office. The sodium build is downloading the sodium static lib from the official sodium site when building. Maybe it's pulling down the wrong static build? How are you building it for arm?

vladimiry commented 2 years ago

How are you building it for arm?

Same way for all builds, via electron-builder. It then triggers npm rebuild --verbose keytar@7.9.0 msgpackr-extract@2.0.2 sodium-native@3.3.0 spellchecker@3.7.0 command (weird, but there is no --arch=arm64 arg, maybe this is the issue), which triggers the install package script, which I guess then with a support of node-gyp does the trick. Currently trying some idea. If it doesn't work out, I guess I will be trying to trigger the build like described in https://www.electronjs.org/docs/latest/tutorial/using-native-node-modules So direct node-gyp rebuild call (used this way before for other modules when was testing things, and it worked well).

The sodium build is downloading the sodium static lib from the official sodium site when building.

Yep, I've noticed that node deps/bin.js trigger is specified in binding.gyp.

mafintosh commented 2 years ago

How does electron-builder signal that it wants to rebuild for arm64 when running on x64?

vladimiry commented 2 years ago

How does electron-builder signal that it wants to rebuild for arm64 when running on x64?

It has an arg for this purpose and the log says that arm64 build takes place. I've noticed in the log, though, that the npm rebuild --verbose command executed without the --arch=arm64 arg. So, maybe I should explicitly set the npm_config_arch + npm_config_target_arch env vars or patch the electron-builder a little (although, I think it has a working arm64 support as it's widely used and "universal" build support is already there for a while).

mafintosh commented 2 years ago

Could you try setting the PREBUILD_ARCH=arm64 env var when building for arm64? That is used here https://github.com/sodium-friends/sodium-native/blob/master/deps/bin.js#L29