daisy / daisy/ace

electron concurrency issue and zombie processes

Open
#449 10 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
98
Forks
29
PR merge metrics
No merged PRs in 30d

Description

Hi

I am trying to troubleshoot an issue: I am running ace-electron in docker and when multiple ace processes are running parallel, it seems they are blocking each other and ACE is failing with various error messages, like:
```
error: Ace processing error: Error: Failed to check Content Document '949.html': did-fail-load: -3 - - acehttps://0.0.0.0/Ops/949.html?AXE_RUNNER=948 - true - 7 - 1
```

I was able to reproduce the issue even without docker. In the process tree I can see this:
```
| | \-+= 99767 kiskele node /Users/kiskele/temp/ace/node_modules/.bin/electron ./packages/ace-axe-runner-electron/lib/cli.js --verbose --out out2 /Users/kiskele/Downloads/test.epub
| | |--- 99771 kiskele /Users/kiskele/temp/ace/node_modules/electron/dist/Electron.app/Contents/Frameworks/Electron Helper (GPU).app/Contents/MacOS/Electron Helper (GPU) --type=gpu-process --user-data-dir=/Users/kiskele/Library/Application Support/Electron --gpu-preferences=UAAAAAAAAAAgAAAEAAAAAAAAAAAAAAAAAABgAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAA --shared-files --field-trial-handle=1718379636,r,6378836638113066318,16088629395246184720,262144 --enable-features=ScreenCaptureKitPickerScreen,ScreenCaptureKitStreamPickerSonoma --disable-features=MacWebContentsOcclusion,SpareRendererForSitePerProcess,TimeoutHangingVideoCaptureStarts --variations-seed-version --seatbelt-client=35
| | \--- 99772 kiskele /Users/kiskele/temp/ace/node_modules/electron/dist/Electron.app/Contents/Frameworks/Electron Helper.app/Contents/MacOS/Electron Helper --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-GB --service-sandbox-type=network --user-data-dir=/Users/kiskele/Library/Application Support/Electron --standard-schemes=acehttps --secure-schemes=acehttps --cors-schemes=acehttps --fetch-schemes=acehttps --streaming-schemes=acehttps --shared-files --field-trial-handle=1718379636,r,6378836638113066318,16088629395246184720,262144 --enable-features=ScreenCaptureKitPickerScreen,ScreenCaptureKitStreamPickerSonoma --disable-features=MacWebContentsOcclusion,SpareRendererForSitePerProcess,TimeoutHangingVideoCaptureStarts --variations-seed-version --seatbelt-client=35
```
and this:
```
| \-+= 99677 kiskele node /Users/kiskele/temp/ace/node_modules/.bin/electron ./packages/ace-axe-runner-electron/lib/cli.js --verbose --out out /Users/kiskele/Downloads/test.epub
| |--- 99681 kiskele /Users/kiskele/temp/ace/node_modules/electron/dist/Electron.app/Contents/Frameworks/Electron Helper (GPU).app/Contents/MacOS/Electron Helper (GPU) --type=gpu-process --user-data-dir=/Users/kiskele/Library/Application Support/Electron --gpu-preferences=UAAAAAAAAAAgAAAEAAAAAAAAAAAAAAAAAABgAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAA --shared-files --field-trial-handle=1718379636,r,9488308668255699911,12629781689342009476,262144 --enable-features=ScreenCaptureKitPickerScreen,ScreenCaptureKitStreamPickerSonoma --disable-features=MacWebContentsOcclusion,SpareRendererForSitePerProcess,TimeoutHangingVideoCaptureStarts --variations-seed-version --seatbelt-client=37
| \--- 99682 kiskele /Users/kiskele/temp/ace/node_modules/electron/dist/Electron.app/Contents/Frameworks/Electron Helper.app/Contents/MacOS/Electron Helper --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-GB --service-sandbox-type=network --user-data-dir=/Users/kiskele/Library/Application Support/Electron --standard-schemes=acehttps --secure-schemes=acehttps --cors-schemes=acehttps --fetch-schemes=acehttps --streaming-schemes=acehttps --shared-files --field-trial-handle=1718379636,r,9488308668255699911,12629781689342009476,262144 --enable-features=ScreenCaptureKitPickerScreen,ScreenCaptureKitStreamPickerSonoma --disable-features=MacWebContentsOcclusion,SpareRendererForSitePerProcess,TimeoutHangingVideoCaptureStarts --variations-seed-version --seatbelt-client=37
```

What I can see as a possible issue, that both electron instances are using the same user-data-dir. Is there any way to enter a diferent user-data-dir from the cli?

Contributor guide

Open the contributing guide

Research direction

Start by reading packages/ace-axe-runner-electron/lib/cli.js and reproduce two parallel ace-electron invocations, with and without Docker. Investigate the shared Electron user-data-dir and the reported process tree, including whether child processes remain after completion. Done means concurrent runs complete independently without load failures or zombie processes.

Written by the indexing model from the issue text.

Assessment

Tech stack
electron, javascript
Domain
cli, desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.