Electron osx systemPreferences.askForMediaAccess crashes app

Viewed 2196

Electron application crashes after systemPreferences.askForMediaAccess('microphone') execution

Here is the main project dependencies:

package.json

 "electron": "6.0.11",
 "electron-builder": "21.2.0",
 "electron-reload": "1.5.0",

Local environment

to run electron locally I use:

electron .

in the main script file I have:

...
win.loadURL(format({
      pathname: join(__dirname, 'dist/index.html'),
      protocol: 'file:',
      slashes: true,
      hash: '/setup/test-code'
    }));
...

// when script below is executed, application is crashed.

ipcMain.on('request-mic', async (event, serviceName) => {
    const isAllowed: boolean = await systemPreferences.askForMediaAccess('microphone');
    event.returnValue = isAllowed;
  });

Build for production (that works)

script for building:

electron-builder build --mac

electron-builder.json

"mac": {
    "icon": "dist",
    "extendInfo": {
      "NSMicrophoneUsageDescription": "text for mic access"
    },
    "target": [
      "dmg"
    ]
  },

Question: How to fix script that I run for local development? Crash report:

Process:               Electron [30035]
Path:                  /Users/USER/*/Electron.app/Contents/MacOS/Electron
Identifier:            com.github.Electron
Version:               6.0.11 (6.0.11)
Code Type:             X86-64 (Native)
Parent Process:        ??? [30034]
Responsible:           Electron [30035]
User ID:               501

Date/Time:             2019-10-08 19:15:09.237 +0300
OS Version:            Mac OS X 10.14.6 (18G95)
Report Version:        12
Bridge OS Version:     3.6 (16P6571)
Anonymous UUID:        B07CBEBB-07F2-C6D0-1B58-F1A8AD362A4F

Sleep/Wake UUID:       F5422300-C6F0-4EC3-BE17-5E7C8539988F

Time Awake Since Boot: 210000 seconds
Time Since Wake:       17000 seconds

System Integrity Protection: enabled

Crashed Thread:        3  Dispatch queue: com.apple.root.default-qos

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

Termination Reason:    Namespace TCC, Code 0x0

Thread 0:: CrBrowserMain  Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib          0x00007fff629bb22a mach_msg_trap + 10
1   libsystem_kernel.dylib          0x00007fff629bb76c mach_msg + 60
2   com.apple.CoreFoundation        0x00007fff369311ee __CFRunLoopServiceMachPort + 328
3   com.apple.CoreFoundation        0x00007fff3693075c __CFRunLoopRun + 1612
4   com.apple.CoreFoundation        0x00007fff3692febe CFRunLoopRunSpecific + 455
5   com.apple.HIToolbox             0x00007fff35b8f1ab RunCurrentEventLoopInMode + 292
6   com.apple.HIToolbox             0x00007fff35b8eee5 ReceiveNextEventCommon + 603
7   com.apple.HIToolbox             0x00007fff35b8ec76 _BlockUntilNextEventMatchingListInModeWithFilter + 64
8   com.apple.AppKit                0x00007fff33f2779d _DPSNextEvent + 1135
9   com.apple.AppKit                0x00007fff33f2648b -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1361
10  com.apple.AppKit                0x00007fff33f205a8 -[NSApplication run] + 699
11  com.github.Electron.framework   0x000000010f150afc 0x10ccf4000 + 38128380
12  com.github.Electron.framework   0x000000010f14f638 0x10ccf4000 + 38123064
13  com.github.Electron.framework   0x000000010f0f2068 0x10ccf4000 + 37740648
14  com.github.Electron.framework   0x000000010f0c3dc7 0x10ccf4000 + 37551559
15  com.github.Electron.framework   0x000000010e55a9db 0x10ccf4000 + 25586139
16  com.github.Electron.framework   0x000000010e55a83d 0x10ccf4000 + 25585725
17  com.github.Electron.framework   0x000000010e55c1c2 0x10ccf4000 + 25592258
18  com.github.Electron.framework   0x000000010e557836 0x10ccf4000 + 25573430
19  com.github.Electron.framework   0x000000010e42c515 0x10ccf4000 + 24347925
20  com.github.Electron.framework   0x000000010e42c101 0x10ccf4000 + 24346881
21  com.github.Electron.framework   0x00000001107bfb90 0x10ccf4000 + 61651856
22  com.github.Electron.framework   0x000000010d6b9594 0x10ccf4000 + 10245524
23  com.github.Electron.framework   0x000000010ccf6994 AtomMain + 84
24  com.github.Electron             0x000000010ccbfa10 0x10ccbe000 + 6672
25  libdyld.dylib                   0x00007fff628863d5 start + 1

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

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

Thread 3 Crashed:: Dispatch queue: com.apple.root.default-qos
0   libsystem_kernel.dylib          0x00007fff629d9016 __abort_with_payload + 10
1   libsystem_kernel.dylib          0x00007fff629d45db abort_with_payload_wrapper_internal + 82
2   libsystem_kernel.dylib          0x00007fff629d460d abort_with_payload + 9
3   com.apple.TCC                   0x00007fff5d1b7091 __CRASHING_DUE_TO_PRIVACY_VIOLATION__ + 163
4   com.apple.TCC                   0x00007fff5d1b6fee __TCCAccessRequest_block_invoke.85 + 629
5   com.apple.TCC                   0x00007fff5d1b505d __tccd_send_message_block_invoke + 231
6   libxpc.dylib                    0x00007fff62abde2f _xpc_connection_reply_callout + 36
7   libxpc.dylib                    0x00007fff62abddb6 _xpc_connection_call_reply_async + 86
8   libdispatch.dylib               0x00007fff628396a7 _dispatch_client_callout3 + 8
9   libdispatch.dylib               0x00007fff6284f977 _dispatch_mach_msg_async_reply_invoke + 311
10  libdispatch.dylib               0x00007fff628480eb _dispatch_kevent_worker_thread + 1366
11  libsystem_pthread.dylib         0x00007fff62a7961b _pthread_wqthread + 431
12  libsystem_pthread.dylib         0x00007fff62a793fd start_wqthread + 13


2 Answers

Ok so I found root cause. I was running application from webstorm terminal. It works just as expected if I run it from regular terminal.

Looks like in first case permissions were granted to webstorm instead of electron helper app

you can run start your app in terminal. Permissions give terminal, app run in terminal, so app can use

Related