-
Notifications
You must be signed in to change notification settings - Fork 3.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: re-write Chromium startup error with clear instructions #3070
Merged
aslushnikov
merged 2 commits into
microsoft:master
from
aslushnikov:rewrite-sandboxing-error
Jul 22, 2020
Merged
fix: re-write Chromium startup error with clear instructions #3070
aslushnikov
merged 2 commits into
microsoft:master
from
aslushnikov:rewrite-sandboxing-error
Jul 22, 2020
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
dgozman
reviewed
Jul 21, 2020
src/server/chromium.ts
Outdated
@@ -63,6 +64,20 @@ export class Chromium extends BrowserTypeBase { | |||
return CRBrowser.connect(transport, options, devtools); | |||
} | |||
|
|||
_rewriteStartupError(error: Error): Error { | |||
if (!error.message.includes('--no-sandbox')) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm... If I pass '--no-sandbox' in my args, will this work?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice catch! Updated with a white-list from chromium source
This patch detects Chromium crash with a sandboxing error and re-writes the error to surface information nicely. ```sh pwuser@396166c88ec2:/root/playwright$ node a.js (node:9916) UnhandledPromiseRejectionWarning: browserType.launch: Protocol error (Target.setAutoAttach): Target closed. =========================== logs =========================== [browser] <launching> /home/pwuser/.cache/ms-playwright/chromium-786218/chrome-linux/chrome --disable-background-networking --enable-features=NetworkService,NetworkServiceInProcess --disable-background-timer-throttling --disable-backgrounding-occluded-windows --disable-breakpad --disab le-client-side-phishing-detection --disable-component-extensions-with-background-pages --disable-default-apps --disable-dev-shm-usage --disable-extensions --disable-features=TranslateUI,BlinkGenPropertyTrees,ImprovedCookieControls,SameSiteByDefaultCookies --disable-hang-monitor --disab le-ipc-flooding-protection --disable-popup-blocking --disable-prompt-on-repost --disable-renderer-backgrounding --disable-sync --force-color-profile=srgb --metrics-recording-only --no-first-run --enable-automation --password-store=basic --use-mock-keychain --user-data-dir=/tmp/playwrig ht_chromiumdev_profile-S7DvGF --remote-debugging-pipe --headless --hide-scrollbars --mute-audio --no-startup-window [browser] <launched> pid=9993 [browser] [0721/210028.684682:FATAL:zygote_host_impl_linux.cc(117)] No usable sandbox! Update your kernel or see https://chromium.googlesource.com/chromium/src/+/master/docs/linux/suid_sandbox_development.md for more information on developing with the SUID sandbox. If you want to live dangerously and need an immediate workaround, you can try using --no-sandbox. [browser] #0 0x55604e10fca9 base::debug::CollectStackTrace() [browser] #1 0x55604e08abb3 base::debug::StackTrace::StackTrace() [browser] microsoft#2 0x55604e09c810 logging::LogMessage::~LogMessage() [browser] microsoft#3 0x55604c7e68de content::ZygoteHostImpl::Init() [browser] microsoft#4 0x55604dc56067 content::ContentMainRunnerImpl::Initialize() [browser] microsoft#5 0x55604dca493a service_manager::Main() [browser] microsoft#6 0x55604dc54681 content::ContentMain() [browser] microsoft#7 0x55604dca365d headless::(anonymous namespace)::RunContentMain() [browser] microsoft#8 0x55604dca335c headless::HeadlessShellMain() [browser] microsoft#9 0x55604b5a0527 ChromeMain [browser] microsoft#10 0x7fcbfda52b97 __libc_start_main [browser] microsoft#11 0x55604b5a036a _start [browser] [browser] Received signal 6 [browser] #0 0x55604e10fca9 base::debug::CollectStackTrace() [browser] #1 0x55604e08abb3 base::debug::StackTrace::StackTrace() [browser] microsoft#2 0x55604e10f845 base::debug::(anonymous namespace)::StackDumpSignalHandler() [browser] microsoft#3 0x7fcc03ee3890 (/lib/x86_64-linux-gnu/libpthread-2.27.so+0x1288f) [browser] microsoft#4 0x7fcbfda6fe97 gsignal [browser] microsoft#5 0x7fcbfda71801 abort [browser] microsoft#6 0x55604e10e7a5 base::debug::BreakDebugger() [browser] microsoft#7 0x55604e09cc7b logging::LogMessage::~LogMessage() [browser] microsoft#8 0x55604c7e68de content::ZygoteHostImpl::Init() [browser] microsoft#9 0x55604dc56067 content::ContentMainRunnerImpl::Initialize() [browser] microsoft#10 0x55604dca493a service_manager::Main() [browser] microsoft#11 0x55604dc54681 content::ContentMain() [browser] microsoft#12 0x55604dca365d headless::(anonymous namespace)::RunContentMain() [browser] microsoft#13 0x55604dca335c headless::HeadlessShellMain() [browser] microsoft#14 0x55604b5a0527 ChromeMain [browser] microsoft#15 0x7fcbfda52b97 __libc_start_main [browser] microsoft#16 0x55604b5a036a _start [browser] r8: 0000000000000000 r9: 00007fff94da5d90 r10: 0000000000000008 r11: 0000000000000246 [browser] r12: 00007fff94da7060 r13: 00007fff94da5ff0 r14: 00007fff94da7070 r15: aaaaaaaaaaaaaaaa [browser] di: 0000000000000002 si: 00007fff94da5d90 bp: 00007fff94da5fe0 bx: 00007fff94da6824 [browser] dx: 0000000000000000 ax: 0000000000000000 cx: 00007fcbfda6fe97 sp: 00007fff94da5d90 [browser] ip: 00007fcbfda6fe97 efl: 0000000000000246 cgf: 002b000000000033 erf: 0000000000000000 [browser] trp: 0000000000000000 msk: 0000000000000000 cr2: 0000000000000000 [browser] [end of stack trace] [browser] Calling _exit(1). Core file will not be generated. ============================================================ Note: use DEBUG=pw:api environment variable and rerun to capture Playwright logs.Error at /root/playwright/lib/chromium/crConnection.js:131:63 at new Promise (<anonymous>) at CRSession.send (/root/playwright/lib/chromium/crConnection.js:130:16) at CRSession.send (/root/playwright/lib/helper.js:78:31) at Function.connect (/root/playwright/lib/chromium/crBrowser.js:54:27) at Chromium._connectToTransport (/root/playwright/lib/server/chromium.js:53:38) at Chromium._innerLaunch (/root/playwright/lib/server/browserType.js:87:36) at async ProgressController.run (/root/playwright/lib/progress.js:75:28) at async Chromium.launch (/root/playwright/lib/server/browserType.js:60:25) at async /root/playwright/a.js:4:19 (node:9916) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejec tion, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2) (node:9916) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. ``` ```sh pwuser@396166c88ec2:/root/playwright$ node a.js (node:10074) UnhandledPromiseRejectionWarning: Chromium sandboxing failed! ================================ To workaround sandboxing issues, do either of the following: - (preferred): Configure environment to support sandboxing: https://github.com/microsoft/playwright/blob/master/docs/troubleshooting.md - (alternative): Launch Chromium without sandbox using 'chromiumSandbox: false' option ================================ Error at /root/playwright/lib/chromium/crConnection.js:131:63 at new Promise (<anonymous>) at CRSession.send (/root/playwright/lib/chromium/crConnection.js:130:16) at CRSession.send (/root/playwright/lib/helper.js:78:31) at Function.connect (/root/playwright/lib/chromium/crBrowser.js:54:27) at Chromium._connectToTransport (/root/playwright/lib/server/chromium.js:53:38) at Chromium._innerLaunch (/root/playwright/lib/server/browserType.js:87:36) at async ProgressController.run (/root/playwright/lib/progress.js:75:28) at async Chromium.launch (/root/playwright/lib/server/browserType.js:60:25) at async /root/playwright/a.js:4:19 (node:10074) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2) (node:10074) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. ```
18bde71
to
14ded10
Compare
yury-s
approved these changes
Jul 22, 2020
dgozman
approved these changes
Jul 22, 2020
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This patch detects Chromium crash with a sandboxing error and re-writes
the error to surface information nicely.
Error Before:
Error After:
References #2745