-
-
Notifications
You must be signed in to change notification settings - Fork 156
Description
Summary
Chromium 146.0.7680.80 (released in Alpine Linux v3.23 on 2026-03-17) causes Ferrum::ProcessTimeoutError — the browser fails to produce a WebSocket URL within the configured process_timeout. Even the simplest render fails. Downgrading to Chromium 142.0.7444.59 (Alpine v3.22) resolves the issue.
Environment
- Ferrum: 0.17.1
- Ruby: 3.3.10
- OS: Alpine Linux 3.23 (Docker, x86_64)
- Chromium (broken): 146.0.7680.80-r0
- Chromium (working): 142.0.7444.59-r0 (Alpine v3.22) and 144.0.7559.132-r2 (Alpine v3.23, before today's update)
Steps to reproduce
- Use a Docker image based on
ruby:3.3.10-alpine3.23 - Install Chromium via
apk add chromium(this now installs 146.0.7680.80) - Run any Ferrum operation:
FerrumPdf.render_pdf(html: "<html><body>hi</body></html>", pdf_options: {})Or directly with Ferrum:
browser = Ferrum::Browser.new(
headless: true,
process_timeout: 60,
browser_options: { "no-sandbox" => true, "disable-dev-shm-usage" => true }
)Expected behavior
Browser starts and renders the PDF / page.
Actual behavior
Ferrum::ProcessTimeoutError: Browser did not produce websocket url within 60 seconds,
try to increase `:process_timeout`.
Even with process_timeout set to 60 seconds, the browser never starts.
Key observations
- Works on aarch64 (Apple Silicon / ARM) — only fails on x86_64
- Works fine with Chromium 142 (Alpine v3.22) and Chromium 144 (Alpine v3.23 before today's update)
- Fails on the simplest possible HTML (
<html><body>hi</body></html>) - The timeout happens at
create_target(before any page content is loaded), indicating the Chrome process itself fails to start or establish a CDP connection
Workaround
Pin Alpine base image to v3.22 to get Chromium 142:
FROM ruby:3.3.10-alpine3.22Or install Chromium from the v3.22 repository:
RUN apk add --no-cache \
--repository=https://dl-cdn.alpinelinux.org/alpine/v3.22/community \
chromium \
chromium-swiftshaderNotes
Alpine v3.23 published Chromium 146.0.7680.80 on 2026-03-17, replacing 144.0.7559.132. Since Alpine only keeps the latest version per branch, Chromium 144 is no longer available via apk. This will affect anyone whose Docker image rebuilds pull the new version.