Skip to content
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

Windows: Starting headless mode fails to create WR surfman (DeviceOpenFailed) #26431

Open
PeterZhizhin opened this issue May 5, 2020 · 3 comments

Comments

@PeterZhizhin
Copy link
Contributor

@PeterZhizhin PeterZhizhin commented May 5, 2020

Servo fails to create a headless window with the following error:

PS C:\Users\peter\Documents\Projects\servo> ./mach run --dev --headless https://google.com
Failed to create WR surfman: DeviceOpenFailed (thread main, at ports\glutin\headless_window.rs:42)
   0: backtrace::backtrace::trace_unsynchronized<closure-1>
             at C:\Users\peter\.cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.46\src\backtrace\mod.rs:66
   1: servo::backtrace::{{impl}}::fmt
             at C:\Users\peter\Documents\Projects\servo\ports\glutin\backtrace.rs:49
   2: core::fmt::write
             at /rustc/42abbd8878d3b67238f3611b0587c704ba94f39c\/src\libcore\fmt\mod.rs:1069
   3: std::io::Write::write_fmt<std::io::stdio::StdoutLock>
             at /rustc/42abbd8878d3b67238f3611b0587c704ba94f39c\src\libstd\io\mod.rs:1504
   4: servo::backtrace::print
             at C:\Users\peter\Documents\Projects\servo\ports\glutin\backtrace.rs:17
   5: servo::main::{{closure}}
             at C:\Users\peter\Documents\Projects\servo\ports\glutin\main2.rs:150
   6: std::panicking::rust_panic_with_hook
             at /rustc/42abbd8878d3b67238f3611b0587c704ba94f39c\/src\libstd\panicking.rs:515
   7: std::panicking::begin_panic_handler
             at /rustc/42abbd8878d3b67238f3611b0587c704ba94f39c\/src\libstd\panicking.rs:419
   8: core::panicking::panic_fmt
             at /rustc/42abbd8878d3b67238f3611b0587c704ba94f39c\/src\libcore\panicking.rs:111
   9: core::option::expect_none_failed
             at /rustc/42abbd8878d3b67238f3611b0587c704ba94f39c\/src\libcore\option.rs:1268
  10: core::result::Result<webrender_surfman::WebrenderSurfman, surfman::error::Error>::expect<webrender_surfman::WebrenderSurfman,surfman::error::Error>
             at /rustc/42abbd8878d3b67238f3611b0587c704ba94f39c\src\libcore\result.rs:963
  11: servo::headless_window::Window::new
             at C:\Users\peter\Documents\Projects\servo\ports\glutin\headless_window.rs:42
  12: servo::app::App::run
             at C:\Users\peter\Documents\Projects\servo\ports\glutin\app.rs:47
  13: servo::main
             at C:\Users\peter\Documents\Projects\servo\ports\glutin\main2.rs:178
  14: std::rt::lang_start::{{closure}}<()>
             at /rustc/42abbd8878d3b67238f3611b0587c704ba94f39c\src\libstd\rt.rs:67
  15: std::rt::lang_start_internal::{{closure}}
             at /rustc/42abbd8878d3b67238f3611b0587c704ba94f39c\/src\libstd\rt.rs:52
  16: std::panicking::try::do_call
             at /rustc/42abbd8878d3b67238f3611b0587c704ba94f39c\/src\libstd\panicking.rs:331
  17: std::panicking::try
             at /rustc/42abbd8878d3b67238f3611b0587c704ba94f39c\/src\libstd\panicking.rs:274
  18: std::panic::catch_unwind
             at /rustc/42abbd8878d3b67238f3611b0587c704ba94f39c\/src\libstd\panic.rs:394
  19: std::rt::lang_start_internal
             at /rustc/42abbd8878d3b67238f3611b0587c704ba94f39c\/src\libstd\rt.rs:51
  20: std::rt::lang_start<()>
             at /rustc/42abbd8878d3b67238f3611b0587c704ba94f39c\src\libstd\rt.rs:67
  21: main
  22: invoke_main
             at d:\agent\_work\4\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78
  23: __scrt_common_main_seh
             at d:\agent\_work\4\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
  24: BaseThreadInitThunk
  25: RtlUserThreadStart
Servo exited with return value 101

The error leads to this line (as found by @jdm): https://github.com/servo/surfman/blob/ae14cc9afd140bc73e89f3fe8c080f729f09ccd2/surfman/src/platform/windows/angle/device.rs#L162

Unfortunately, actual error code is not returned from the function to the caller, so we don't know more for now.

@PeterZhizhin PeterZhizhin changed the title Windows: Starting Servo in headless mode causes panic Windows: Starting headless mode fails to create WR surfman (DeviceOpenFailed) May 5, 2020
@jdm jdm added the A-gfx/rendering label May 5, 2020
@jdm
Copy link
Member

@jdm jdm commented May 5, 2020

Oh, I know - this is the first time we've tried to actually run surfman headlessly on Windows. We're breaking new ground!

@jdm
Copy link
Member

@jdm jdm commented May 5, 2020

It might be worth adding sm-angle-default to

surfman = { version = "0.2", features = ["sm-winit", "sm-x11"] }
and seeing if that improves the situation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants
You can’t perform that action at this time.