Nous effectuons un test dans un chrome sans tête. Comme tout le reste, nous exécutons tout à l'intérieur de Docker. Maintenant, pendant quelques jours, le chrome se bloque soudainement sur ma machine (Ubuntu 19.04):
Voici un Dockerfile minimal à démontrer:
FROM debian
RUN apt-get update && apt-get install -y --no-install-recommends chromium
CMD chromium --headless --verbose --no-sandbox --screenshot https://www.chromestatus.com
Courir Sudo docker build . -t headless-chrome-crash; Sudo docker run headless-chrome-crash
Comme cela passe sur le Mac de mon collègue et Circle CI, les seuls choix étaient Docker, le système d'exploitation et les performances de la machine. Et avec AWS, j'ai pu le réduire à Ubuntu 19.04, car il passe le 18.04! Il passe également lorsque je l'exécute directement sur ma machine sans docker, et ça passait longtemps sur ma machine avec Docker.
L'erreur complète est assez longue, ( voir ici ), mais voici la première partie:
[0918/134957.717636:ERROR:viz_main_impl.cc(170)] Exiting GPU process due to errors during initialization
[0918/134957.723472:WARNING:gpu_process_Host.cc(1188)] The GPU process has crashed 1 time(s)
[0918/134957.824829:FATAL:sandbox_linux.cc(382)] Check failed: !HasOpenDirectories(). InitializeSandbox() called after unexpected directories have been opened. This breaks the security of the setuid sandbox.
#0 0x55d058895449 <unknown>
#1 0x55d0587e3d36 <unknown>
#2 0x55d0587fbd14 <unknown>
#3 0x55d059a053d4 <unknown>
....
Sur d'autres machines, il crée le screenshot.png
et cela ressemble à ceci:
[0918/120635.809655:WARNING:ipc_message_attachment_set.cc(49)] MessageAttachmentSet destroyed with unconsumed attachments: 0/1
[0918/120635.809580:WARNING:ipc_message_attachment_set.cc(49)] MessageAttachmentSet destroyed with unconsumed attachments: 0/1
[0918/120635.809768:ERROR:command_buffer_proxy_impl.cc(126)] ContextResult::kTransientFailure: Failed to send GpuChannelMsg_CreateCommandBuffer.
[0918/120636.611712:INFO:headless_Shell.cc(572)] Written to file screenshot.png.
[0918/120636.621106:ERROR:browser_process_sub_thread.cc(203)] Waited 5 ms for network service
La version Docker:
Docker version 19.03.2, build 6a30dfc
La mise à niveau du noyau vers 4.18.0-25-generic résout le problème. Semble être une incompatibilité entre Docker et Kernel 5.0.0.