Files

73 lines
2.7 KiB
Python

#!/usr/bin/env python3
"""Binary search for which Playwright default arg causes Chrome SIGTRAP on Ubuntu 26.04."""
from playwright.sync_api import sync_playwright
default_args = [
'--disable-field-trial-config',
'--disable-background-networking',
'--disable-background-timer-throttling',
'--disable-backgrounding-occluded-windows',
'--disable-back-forward-cache',
'--disable-breakpad',
'--disable-client-side-phishing-detection',
'--disable-component-extensions-with-background-pages',
'--disable-component-update',
'--no-default-browser-check',
'--disable-default-apps',
'--disable-dev-shm-usage',
'--disable-extensions',
'--disable-features=AvoidUnnecessaryBeforeUnloadCheckSync,BoundaryEventDispatchTracksNodeRemoval,DestroyProfileOnBrowserClose,DialMediaRouteProvider,GlobalMediaControls,HttpsUpgrades,LensOverlay,MediaRouter,PaintHolding,ThirdPartyStoragePartitioning,Translate,AutoDeElevate,RenderDocument,OptimizationHints',
'--enable-features=CDPScreenshotNewSurface',
'--allow-pre-commit-input',
'--disable-hang-monitor',
'--disable-ipc-flooding-protection',
'--disable-popup-blocking',
'--disable-prompt-on-repost',
'--disable-renderer-backgrounding',
'--force-color-profile=srgb',
'--metrics-recording-only',
'--no-first-run',
'--password-store=basic',
'--use-mock-keychain',
'--no-service-autorun',
'--export-tagged-pdf',
'--disable-search-engine-choice-screen',
'--unsafely-disable-devtools-self-xss-warnings',
'--edge-skip-compat-layer-relaunch',
'--enable-automation',
'--disable-infobars',
'--disable-sync',
'--enable-unsafe-swiftshader',
'--hide-scrollbars',
'--mute-audio',
'--blink-settings=primaryHoverType=2,availableHoverTypes=2,primaryPointerType=4,availablePointerTypes=4',
]
def test(ignored_flags):
try:
p = sync_playwright().start()
b = p.chromium.launch(
executable_path='/usr/bin/google-chrome-stable',
headless=True,
args=['--no-sandbox', '--disable-gpu'],
ignore_default_args=ignored_flags,
timeout=10000,
)
b.close()
p.stop()
return True
except Exception:
return False
# Test groups
suspects = [
([a for a in default_args if 'disable-features' in a], 'disable-features'),
([a for a in default_args if 'enable-features' in a], 'enable-features'),
([a for a in default_args if 'blink-settings' in a or 'swiftshader' in a], 'blink/GPU'),
([a for a in default_args if 'color-profile' in a or 'force-color' in a], 'color-profile'),
]
for group, name in suspects:
ok = test(group)
print(f'{name}: {"OK" if ok else "CRASH (PROBLEM HERE)"}')