daisy / ace

Ace by DAISY, an Accessibility Checker for EPUB
MIT License
74 stars 22 forks source link

CLI outputs "GPU process exited unexpectedly" #407

Open nverwer opened 4 months ago

nverwer commented 4 months ago

Ace version: 1.3.2 Node version: 20.11.1 OS: Windows 10

On some PCs with this configuration, the output only shows:

[4408:0325/100924.638:ERROR:gpu_process_host.ec(954)] GPU process exited unexpectedly: exit_code=34
[4408:0325/100942.775:ERROR:gpu_process_host.ee(954)] GPU process exited unexpectedly: exit_code=34
[4408:0325/100945.986:ERROR:gpu_process_host.cc(954)] GPU process exited unexpectedly: exit_code=34

The HTML report and the log-file are okay. The log-file shows no errors:

info:    Parsing EPUB
info:    Analyzing accessibility metadata
info:    Checking package...
info:    - EPUB\book.opf: 1 issues found
info:    Checking documents...
info:    - cover.xhtml: No issues found
info:    - book-meta.xhtml: 2 issues found
info:    - int.xhtml: No issues found
info:    - p1.xhtml: No issues found
...
info:    Consolidating results...
info:    Copying data
info:    Saving JSON report
info:    Saving HTML report

This suggests that the problem occurs when ACE copies a summary to the standard output. The problem occurs for every epub file, but only on some PCs. On another PC (with a different GPU) everything works fine, and the ouput summarizes the issues.

A Google search suggests that the "GPU process exited unexpectedly: exit_code=34" error is generated by Electron. Since I am using the CLI, I would expect Electron not to be used, but apparently it is used when copying the summary to stdout.

Some Electron applications have a (config) option to disable GPU acceleration, but I don't see this in ACE. Such an option might help, but would not solve the underlying issue.

danielweck commented 4 months ago

Hello, thank you for your detailed report. Just like Ace GUI (the desktop Ace App), Ace CLI does use Electron as its default HTML renderer to execute Deque Axe checks "in the background" (i.e. inside hidden Chromium web browser windows). Puppeteer (also Chromium-based) used to be the default option for Ace CLI but this caused inconsistencies with Ace GUI, so we harmonised with Electron.

Regarding the GPU process exited unexpectedly: exit_code=34 error: I occasionally see these kinds of warning/non-fatal messages in the console when running other Electron-based applications, on my Mac computers. We could try --disable-gpu or app.disableHardwareAcceleration(), and see if this eliminates the annoying console message. See https://www.electronjs.org/docs/latest/tutorial/offscreen-rendering

Side note: I am wondering if this has anything to do with --no-sandbox in headless Docker Linux runtimes (chown root:root ./node_modules/electron/dist/chrome-sandbox && chmod 4755 ./node_modules/electron/dist/chrome-sandbox). https://www.electronjs.org/docs/latest/tutorial/sandbox

Also see --disable-gpu-sandbox

nverwer commented 4 months ago

Thank you for your quick reply!

It would be great to have the options that you mention. At the moment, I do not have access to a PC that causes the error, so I cannot verify if disableHardwareAcceleration() would work.

EDIT: I tried to use disableHardwareAcceleration(), but could not find the right place to do this.