Skip to content

Ferrum::ProcessTimeoutError with Chromium 146 on Alpine Linux (headless, x86_64) #571

@CesarOliveira

Description

@CesarOliveira

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

  1. Use a Docker image based on ruby:3.3.10-alpine3.23
  2. Install Chromium via apk add chromium (this now installs 146.0.7680.80)
  3. 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.22

Or install Chromium from the v3.22 repository:

RUN apk add --no-cache \
  --repository=https://dl-cdn.alpinelinux.org/alpine/v3.22/community \
  chromium \
  chromium-swiftshader

Notes

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions