ChromeDriver does not have one single “CentOS 7” failure. A session can time out because ChromeDriver and Chrome are incompatible, Chrome crashes before creating a session, the job runs as root, the service uses a different binary or environment, or the operating system and browser package no longer fit together. Capture the exact exception, ChromeDriver log, ChromeDriver version, and the version of the Chrome binary actually launched before changing anything.
CentOS Linux 7 reached end of life on June 30, 2024. That makes migration to a maintained operating system the durable platform decision, but it does not identify the immediate fault on your host.
Start with evidence, not a driver update
Do not install the newest driver blindly. First save the complete Selenium exception and enable ChromeDriver logging. Then collect versions from the same account and environment that runs the failing job.
- Record the full error, including whether it says
session not created,timeout,DevToolsActivePort file doesn’t exist, or that Chrome exited unexpectedly. - Run
chromedriver --versionusing the executable configured for the job. - Run the exact Chrome binary with
--version. A shell’sPATHmay differ from a systemd service, cron job, container, or CI runner. - Read the ChromeDriver log. Its startup lines identify the browser binary it attempted to launch and often show the first fatal error.
- Note the Selenium language binding and version, account name, working directory, display or headless settings, and any custom flags.
A mismatch message and a browser startup crash require different fixes. Version numbers and logs prevent unrelated changes from hiding the original cause.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →#1 Best Overall
Pair ChromeDriver with the Chrome release you actually run
Chrome 115 and newer
For Chrome 115 and newer, ChromeDriver releases are integrated with the Chrome for Testing release process. Select a correspondingly versioned Chrome for Testing browser and driver, or use the documented JSON endpoints to obtain the matching build. Follow the version-selection guidance at ChromeDriver version selection.
Chrome 114 and older
For older Chrome, use the legacy selection procedure. The documented basis is matching the Chrome major, minor, and build numbers, then choosing the compatible driver patch release. The download guidance is at ChromeDriver Downloads.
Do not trust an obsolete driver manager
Some older Selenium driver-management tools still query pre-115 endpoints. Verify that the tool understands the Chrome 115 release-process change and that it selected the same browser family installed on the host. If it downloaded a driver automatically, print the resolved path and version in the job log.
| Evidence | Likely direction | Next action |
|---|---|---|
session not created and incompatible-version text |
Browser/driver mismatch | Apply the release-generation-specific matching procedure. |
| Chrome launches and exits immediately | Startup, privilege, profile, or dependency problem | Launch the same binary outside WebDriver under the job account. |
| Works interactively but fails as a service | Different user, PATH, permissions, display, or environment | Compare service and shell environments and log the resolved binary. |
| Installer reports a missing GLIBC symbol | Package/runtime dependency issue | Preserve the exact package error; use a supported package/runtime or migrate the OS. |
Test Chrome without Selenium
ChromeDriver’s troubleshooting procedure is to isolate the browser first. Log in as the same noninteractive account used by the job and run the exact executable directly. Include the same profile location, headless mode, and other switches where applicable. Then invoke that launch from the test process without creating a WebDriver session.
- If Chrome fails directly, repair or reinstall the browser package and inspect its stderr, shared-library errors, profile permissions, and sandbox messages.
- If Chrome works directly but fails only through Selenium, inspect the driver path, service account, environment variables, temporary-directory permissions, arguments, and timeout values.
- Use a fresh writable user-data directory for parallel jobs; sharing a locked profile can make a healthy browser appear unresponsive.
Do not conclude that headless mode, a particular flag, or CentOS itself is the cause without the corresponding log line.
Stop running Chrome as root
The ChromeDriver documentation identifies root execution as a common reason Chrome crashes during startup on Linux: “A common cause for Chrome to crash during startup is running Chrome as root user (administrator) on Linux.” Run the service, container entrypoint, or CI step as a regular user with a writable home and temporary directory.
The same documentation says that passing --no-sandbox to work around root execution is unsupported and highly discouraged. Treat it as a last-resort diagnostic clue, not a production fix. Removing root privilege is safer and addresses the underlying security and startup conditions.
Check service and operating-system differences
Service accounts and paths
Systemd and cron commonly have a reduced PATH, a different HOME, no graphical display, and stricter filesystem permissions. Configure absolute paths for Chrome and ChromeDriver, create a writable temporary directory, and log the effective user, environment, and current directory. Confirm that the service account can execute the browser and write its profile and crash logs.
Recommended Free Tools
Rank #3
CentOS 7 is past end of life
The CentOS Project announced “CentOS Linux 7 End of Life: June 30, 2024.” After that date, CentOS Linux 7 no longer receives normal updates and packages are archived; see the CentOS end-date announcement. Continuing to run browser automation there increases security and dependency risk. Plan migration to a maintained distribution or supported enterprise equivalent, then repeat the same browser and driver checks on the new host. Migration is a durable platform recommendation, not proof that it will fix a particular timeout.
Do not replace glibc casually
A 2021 CentOS mailing-list thread reported a Chrome 95 package dependency on GLIBC_2.18 that blocked installation on one CentOS 7 setup. Later posts said subsequent Google-repository beta and stable builds no longer showed that exact dependency error. This is historical, community-reported evidence, not a current compatibility guarantee. If your installer names a missing symbol, preserve the exact package build and dependency output. Prefer a supported browser/runtime combination or OS migration; do not replace the system glibc in place as a casual repair.
For background, see the dated discussion at the CentOS mailing list and the CentOS comparison of Linux and Stream at CentOS Linux versus CentOS Stream.
A repeatable repair procedure
- Freeze the evidence. Save the exception, driver log, browser stderr, exact executable paths, and both version outputs.
- Confirm the account. Reproduce as the service user, not as an administrator. Verify writable
HOME, temporary, profile, and log directories. - Launch Chrome directly. Repair the browser if it cannot start without WebDriver.
- Correct the pair. Use the Chrome 115+ Chrome for Testing workflow or the legacy 114-and-older matching rules.
- Remove environmental variables. Test with a clean profile, explicit binary path, and minimal arguments. Add application-specific options one at a time.
- Reproduce through the service. Compare PATH, HOME, display/headless settings, permissions, proxy, certificates, and network access with the successful interactive run.
- Plan migration. Move the workload off CentOS Linux 7 and retain the captured diagnostics for validation.
Common symptoms and targeted fixes
“Session not created: This version of ChromeDriver only supports…”
Read the browser version named in the error, verify the actual binary path, and install the driver generation that matches it. Do not solve this by repeatedly downloading “latest.”
Rank #4
“Chrome failed to start” or an immediate exit
Run the binary directly as the job user, inspect stderr and the driver log, and check profile and temporary-directory permissions. Root execution is a frequent Linux cause; remove the privilege rather than relying on --no-sandbox.
Timeout while waiting for a session
Check whether Chrome ever launched. If no process appears, investigate executable permissions, dependencies, service PATH, and account restrictions. If Chrome launches, inspect profile locks, proxy or certificate delays, page-load strategy, and network access.
Works in a terminal but not in cron or systemd
Log the service’s effective user, PATH, HOME, binary paths, and display variables. Give the account a writable profile and temporary directory and use absolute executable paths.
Installation fails with GLIBC_2.18 or another symbol
Treat the package output as a dependency problem, not a generic ChromeDriver timeout. Record the exact build, select a browser package compatible with the host, or migrate. Avoid replacing core system libraries in place.
Best Value
Performance, reliability, and maintenance
- Pin a tested browser/driver pair instead of allowing an unattended browser update to change it mid-run.
- Use isolated profiles and temporary directories for concurrent workers.
- Keep ChromeDriver logs for failed sessions and rotate them; the first startup error is usually more valuable than the final Selenium timeout.
- Test the same service account in a staging job after browser, driver, or OS changes.
- Set explicit Selenium timeouts appropriate to your network and page, but do not use a larger timeout to mask a process that never starts.
- Include OS migration in the maintenance plan because CentOS Linux 7 is no longer updated.
Or skip the browser setup
If your goal is simply to obtain a reliable webpage image or PDF rather than maintain Selenium on an old host, ScreenshotNeo provides a website screenshot API and MCP server. One request returns PNG, JPEG, WebP, or PDF. Before capture it accepts cookie/consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers report the page verdict and billing status.
It also supports full-page captures with lazy images, CSS-selector elements, dark mode, 12 device presets or custom viewports, retina scale, PDF paper and margin controls, custom CSS and JavaScript, clicks, selector or network-idle waits, request/resource blocking, headers, cookies, user agents, Authorization, timezone, geolocation, transparent backgrounds, resizing, chosen-TTL caching, signed image links, asynchronous webhooks, bulk capture of 100 URLs, a usage API, OpenAPI, and familiar parameter names used by other screenshot APIs. An MCP server exposes take_screenshot, get_page_info, and capture_pdf to Claude, Cursor, and other MCP clients.
See the ScreenshotNeo documentation for parameters and authentication. The following calls are complete starting points.
cURL
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
Python
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
Node.js
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const fs = await import('node:fs/promises');
await fs.writeFile('shot.webp', Buffer.from(await res.arrayBuffer()));
The Free plan includes 1,000 screenshots each month with no card. Paid plans start at $5 for 3,000 shots; yearly billing provides two months free, and every feature is included on every plan. Sign up for ScreenshotNeo to start with the free allowance.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteWhat information is needed for a definitive diagnosis?
Provide the exact Selenium exception, ChromeDriver log, ChromeDriver version, Chrome executable path and version, Selenium version, effective account, launch arguments, and whether direct Chrome startup succeeds. Without those details, “ChromeDriver stopped responding” is a symptom description, not a confirmed cause.
Frequently Asked Questions
Does CentOS 7 automatically make ChromeDriver incompatible?
No. CentOS 7 is obsolete and unsupported as a maintained platform, but the immediate failure still must be separated into version mismatch, browser startup, permissions, environment, or dependency causes.
Should I add –no-sandbox to make Selenium work?
Not as a general fix. ChromeDriver documents root execution as a common startup cause and says using –no-sandbox to work around it is unsupported and highly discouraged; run the job as a regular user instead.
Is GLIBC_2.18 always the reason Chrome stops responding?
No. A 2021 mailing-list report concerned a particular Chrome 95 package, and later posts reported different packages without that error. Use the exact current installer output to diagnose dependencies.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

