sunjay / turtle

Create Animated Drawings in Rust
http://turtle.rs
Mozilla Public License 2.0
559 stars 54 forks source link

program crashes on Windows #220

Closed tigregalis closed 3 years ago

tigregalis commented 3 years ago

My (very simple) program crashes. I'm using Windows 10 version 1909.

Appears to start here: https://docs.piston.rs/piston_window/src/piston_window/lib.rs.html#286

// main.rs
use turtle::Turtle;

fn main() {
    let mut turtle = Turtle::new();

    for _ in 0..360 {
        turtle.forward(3.0);
        turtle.left(1.0);
    }
}
# cargo.toml
[dependencies]
turtle = "1.0.0-rc.3"

Full backtrace below:

    Finished dev [unoptimized + debuginfo] target(s) in 0.15s
     Running `target\debug\turtle-test.exe`
thread 'main' panicked at 'attempted to zero-initialize type `glutin::ContextWrapper<glutin::PossiblyCurrent, glutin::Window>`, which is invalid', C:\Users\Harimau\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib/rustlib/src/rust\library\core\src\mem\mod.rs:623:9
stack backtrace:
   0:     0x7ff743e126d5 - std::backtrace_rs::backtrace::dbghelp::trace
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\..\..\backtrace\src\backtrace\dbghelp.rs:98
   1:     0x7ff743e126d5 - std::backtrace_rs::backtrace::trace_unsynchronized
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\..\..\backtrace\src\backtrace\mod.rs:66
   2:     0x7ff743e126d5 - std::sys_common::backtrace::_print_fmt
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\sys_common\backtrace.rs:67
   3:     0x7ff743e126d5 - std::sys_common::backtrace::_print::{{impl}}::fmt
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\sys_common\backtrace.rs:46
   4:     0x7ff743e2d0db - core::fmt::write
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\core\src\fmt\mod.rs:1078
   5:     0x7ff743e0e7cd - std::io::Write::write_fmt<std::sys::windows::stdio::Stderr>
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\io\mod.rs:1519
   6:     0x7ff743e1597d - std::sys_common::backtrace::_print
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\sys_common\backtrace.rs:49
   7:     0x7ff743e1597d - std::sys_common::backtrace::print
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\sys_common\backtrace.rs:36
   8:     0x7ff743e1597d - std::panicking::default_hook::{{closure}}
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panicking.rs:208
   9:     0x7ff743e1548a - std::panicking::default_hook
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panicking.rs:225
  10:     0x7ff743e162be - std::panicking::rust_panic_with_hook
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panicking.rs:591
  11:     0x7ff743e15db3 - std::panicking::begin_panic_handler::{{closure}}
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panicking.rs:495
  12:     0x7ff743e1307f - std::sys_common::backtrace::__rust_end_short_backtrace<closure-0,!>
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\sys_common\backtrace.rs:141
  13:     0x7ff743e15d39 - std::panicking::begin_panic_handler
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panicking.rs:493
  14:     0x7ff743e2ac00 - core::panicking::panic_fmt
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\core\src\panicking.rs:92
  15:     0x7ff743e2ab4c - core::panicking::panic
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\core\src\panicking.rs:50
  16:     0x7ff743c23467 - core::mem::zeroed
                               at C:\Users\Harimau\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\mem\mod.rs:623
  17:     0x7ff743c23467 - glutin_window::{{impl}}::make_current
                               at C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\pistoncore-glutin_window-0.63.0\src\lib.rs:511
  18:     0x7ff743b0ed46 - piston_window::PistonWindow<glutin_window::GlutinWindow>::draw_2d<glutin_window::GlutinWindow,input::Event,closure-1,tuple<>>
                               at C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\piston_window-0.105.0\src\lib.rs:272
  19:     0x7ff743b82790 - turtle::renderer::Renderer::run
                               at C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\turtle-1.0.0-rc.3\src\renderer.rs:126
  20:     0x7ff743b98356 - turtle::server::main
                               at C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\turtle-1.0.0-rc.3\src\server.rs:90
  21:     0x7ff743b97fec - turtle::server::start
                               at C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\turtle-1.0.0-rc.3\src\server.rs:66
  22:     0x7ff743b2a579 - turtle::turtle_window::TurtleWindow::new
                               at C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\turtle-1.0.0-rc.3\src\turtle_window.rs:23
  23:     0x7ff743b0d2bd - turtle::turtle::Turtle::new
                               at C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\turtle-1.0.0-rc.3\src\turtle.rs:86
  24:     0x7ff743af127b - turtle_test::main
                               at D:\Dev\rust\turtle-test\src\main.rs:4
  25:     0x7ff743af11ab - core::ops::function::FnOnce::call_once<fn(),tuple<>>
                               at C:\Users\Harimau\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\ops\function.rs:227
  26:     0x7ff743af101b - std::sys_common::backtrace::__rust_begin_short_backtrace<fn(),tuple<>>
                               at C:\Users\Harimau\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\sys_common\backtrace.rs:125
  27:     0x7ff743af1101 - std::rt::lang_start::{{closure}}<tuple<>>
                               at C:\Users\Harimau\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\rt.rs:66
  28:     0x7ff743e165b4 - core::ops::function::impls::{{impl}}::call_once
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\library\core\src\ops\function.rs:280
  29:     0x7ff743e165b4 - std::panicking::try::do_call
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panicking.rs:379
  30:     0x7ff743e165b4 - std::panicking::try
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panicking.rs:343
  31:     0x7ff743e165b4 - std::panic::catch_unwind
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panic.rs:396
  32:     0x7ff743e165b4 - std::rt::lang_start_internal
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\rt.rs:51
  33:     0x7ff743af10d3 - std::rt::lang_start<tuple<>>
                               at C:\Users\Harimau\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\rt.rs:65
  34:     0x7ff743af1360 - main
  35:     0x7ff743e32ea4 - invoke_main
                               at D:\agent\_work\9\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78
  36:     0x7ff743e32ea4 - __scrt_common_main_seh
                               at D:\agent\_work\9\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
  37:     0x7ff9c2147c24 - BaseThreadInitThunk
  38:     0x7ff9c40ed4d1 - RtlUserThreadStart
error: process didn't exit successfully: `target\debug\turtle-test.exe` (exit code: 1)
sunjay commented 3 years ago

Hi @tigregalis, thanks for taking the time to report this issue. Could you try the steps in this comment and see if they help solve the issue? https://github.com/sunjay/turtle/issues/202#issuecomment-695811144

tigregalis commented 3 years ago
turtle = {git = "https://github.com/sunjay/turtle", rev = "bf64b8333a2be1914378d8a22a4788947711182b"}

that didn't fix it, but latest revision does:

turtle = {git = "https://github.com/sunjay/turtle"}

however, now I have a crash on exit

    Finished dev [unoptimized + debuginfo] target(s) in 0.61s
     Running `target\debug\turtle-test.exe`
thread 'main' panicked at 'IPC response not received: Cannot continue to run turtle commands after window is closed. This panic stops the thread, but is not necessarily an error.', C:\Users\Harimau\.cargo\git\checkouts\turtle-7d4ec58877c500b9\c3a79e6\src\renderer_client.rs:145:35
stack backtrace:
thread 'tokio-runtime-worker' panicked at 'GL error: 0x502 (INVALID_OPERATION)', C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\pathfinder_gl-0.5.0\src\lib.rs:1215:13
   0:     0x7ff74e1b2d05 - std::backtrace_rs::backtrace::dbghelp::trace
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\..\..\backtrace\src\backtrace\dbghelp.rs:98
   1:     0x7ff74e1b2d05 - std::backtrace_rs::backtrace::trace_unsynchronized
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\..\..\backtrace\src\backtrace\mod.rs:66
   2:     0x7ff74e1b2d05 - std::sys_common::backtrace::_print_fmt
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\sys_common\backtrace.rs:67
   3:     0x7ff74e1b2d05 - std::sys_common::backtrace::_print::{{impl}}::fmt
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\sys_common\backtrace.rs:46
   4:     0x7ff74e1c831b - core::fmt::write
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\core\src\fmt\mod.rs:1078
   5:     0x7ff74e1b000d - std::io::Write::write_fmt<std::sys::windows::stdio::Stderr>
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\io\mod.rs:1519
   6:     0x7ff74e1b58cd - std::sys_common::backtrace::_print
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\sys_common\backtrace.rs:49
   7:     0x7ff74e1b58cd - std::sys_common::backtrace::print
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\sys_common\backtrace.rs:36
   8:     0x7ff74e1b58cd - std::panicking::default_hook::{{closure}}
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panicking.rs:208
   9:     0x7ff74e1b53da - std::panicking::default_hook
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panicking.rs:225
  10:     0x7ff74e1b620e - std::panicking::rust_panic_with_hook
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panicking.rs:591
  11:     0x7ff74e1b5d31 - std::panicking::begin_panic_handler::{{closure}}
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panicking.rs:497
  12:     0x7ff74e1b36af - std::sys_common::backtrace::__rust_end_short_backtrace<closure-0,!>
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\sys_common\backtrace.rs:141
  13:     0x7ff74e1b5c89 - std::panicking::begin_panic_handler
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panicking.rs:493
  14:     0x7ff74e1b5c3c - std::panicking::begin_panic_fmt
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panicking.rs:435
  15:     0x7ff74de2e934 - turtle::renderer_client::{{impl}}::recv::{{closure}}::{{closure}}
                               at C:\Users\Harimau\.cargo\git\checkouts\turtle-7d4ec58877c500b9\c3a79e6\src\renderer_client.rs:145
  16:     0x7ff74dd94a11 - core::result::Result<turtle::ipc_protocol::messages::ServerResponse, turtle::renderer_client::Disconnected>::unwrap_or_else<turtle::ipc_protocol::messages::ServerResponse,turtle::renderer_client::Disconnected,closure-0>
                               at C:\Users\Harimau\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\result.rs:825
  17:     0x7ff74de2ebf9 - turtle::renderer_client::{{impl}}::recv::{{closure}}
                               at C:\Users\Harimau\.cargo\git\checkouts\turtle-7d4ec58877c500b9\c3a79e6\src\renderer_client.rs:139
  18:     0x7ff74de05820 - core::future::from_generator::{{impl}}::poll<generator-0>
                               at C:\Users\Harimau\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\future\mod.rs:80
  19:     0x7ff74ddf0a22 - turtle::ipc_protocol::protocol::{{impl}}::move_forward::{{closure}}
                               at C:\Users\Harimau\.cargo\git\checkouts\turtle-7d4ec58877c500b9\c3a79e6\src\ipc_protocol\protocol.rs:329
  20:     0x7ff74de06279 - core::future::from_generator::{{impl}}::poll<generator-0>
                               at C:\Users\Harimau\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\future\mod.rs:80
  21:     0x7ff74dc967c2 - turtle::async_turtle::{{impl}}::forward::{{closure}}
                               at C:\Users\Harimau\.cargo\git\checkouts\turtle-7d4ec58877c500b9\c3a79e6\src\async_turtle.rs:75
  22:     0x7ff74de05c09 - core::future::from_generator::{{impl}}::poll<generator-0>
                               at C:\Users\Harimau\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\future\mod.rs:80
  23:     0x7ff74dd18c23 - tokio::runtime::enter::{{impl}}::block_on::{{closure}}<core::future::from_generator::GenFuture<generator-0>>
                               at C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.2.24\src\runtime\enter.rs:160
  24:     0x7ff74de08b06 - tokio::coop::with_budget::{{closure}}<core::task::poll::Poll<tuple<>>,closure-0>
                               at C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.2.24\src\coop.rs:127
  25:     0x7ff74dd64a84 - std::thread::local::LocalKey<core::cell::Cell<tokio::coop::Budget>>::try_with<core::cell::Cell<tokio::coop::Budget>,closure-0,core::task::poll::Poll<tuple<>>>
                               at C:\Users\Harimau\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\thread\local.rs:272
  26:     0x7ff74dd6362d - std::thread::local::LocalKey<core::cell::Cell<tokio::coop::Budget>>::with<core::cell::Cell<tokio::coop::Budget>,closure-0,core::task::poll::Poll<tuple<>>>
                               at C:\Users\Harimau\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\thread\local.rs:248
  27:     0x7ff74dd17309 - tokio::coop::with_budget
                               at C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.2.24\src\coop.rs:120
  28:     0x7ff74dd17309 - tokio::coop::budget
                               at C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.2.24\src\coop.rs:96
  29:     0x7ff74dd17309 - tokio::runtime::enter::Enter::block_on<core::future::from_generator::GenFuture<generator-0>>
                               at C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.2.24\src\runtime\enter.rs:160
  30:     0x7ff74dda2aba - tokio::runtime::handle::{{impl}}::block_on::{{closure}}<core::future::from_generator::GenFuture<generator-0>>
                               at C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.2.24\src\runtime\handle.rs:277
  31:     0x7ff74dd377bb - tokio::runtime::context::enter<closure-0,tuple<>>
                               at C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.2.24\src\runtime\context.rs:72
  32:     0x7ff74dda241f - tokio::runtime::handle::Handle::enter<closure-0,tuple<>>
                               at C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.2.24\src\runtime\handle.rs:76
  33:     0x7ff74dda27de - tokio::runtime::handle::Handle::block_on<core::future::from_generator::GenFuture<generator-0>>
                               at C:\Users\Harimau\.cargo\registry\src\github.com-1ecc6299db9ec823\tokio-0.2.24\src\runtime\handle.rs:275
  34:     0x7ff74dd8559d - turtle::sync_runtime::block_on<core::future::from_generator::GenFuture<generator-0>>
                               at C:\Users\Harimau\.cargo\git\checkouts\turtle-7d4ec58877c500b9\c3a79e6\src\sync_runtime.rs:17
  35:     0x7ff74dcc3fbc - turtle::turtle::Turtle::forward
                               at C:\Users\Harimau\.cargo\git\checkouts\turtle-7d4ec58877c500b9\c3a79e6\src\turtle.rs:94
  36:     0x7ff74dc71299 - turtle_test::main
                               at D:\Dev\rust\turtle-test\src\main.rs:7
  37:     0x7ff74dc711ab - core::ops::function::FnOnce::call_once<fn(),tuple<>>
                               at C:\Users\Harimau\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\core\src\ops\function.rs:227
  38:     0x7ff74dc7101b - std::sys_common::backtrace::__rust_begin_short_backtrace<fn(),tuple<>>
                               at C:\Users\Harimau\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\sys_common\backtrace.rs:125
  39:     0x7ff74dc71101 - std::rt::lang_start::{{closure}}<tuple<>>
                               at C:\Users\Harimau\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\rt.rs:66
  40:     0x7ff74e1b6504 - core::ops::function::impls::{{impl}}::call_once
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\library\core\src\ops\function.rs:280
  41:     0x7ff74e1b6504 - std::panicking::try::do_call
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panicking.rs:379
  42:     0x7ff74e1b6504 - std::panicking::try
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panicking.rs:343
  43:     0x7ff74e1b6504 - std::panic::catch_unwind
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\panic.rs:396
  44:     0x7ff74e1b6504 - std::rt::lang_start_internal
                               at /rustc/fa416394275d2468d104b8f72ac31b1ddf7ee52e\/library\std\src\rt.rs:51
  45:     0x7ff74dc710d3 - std::rt::lang_start<tuple<>>
                               at C:\Users\Harimau\.rustup\toolchains\nightly-x86_64-pc-windows-msvc\lib\rustlib\src\rust\library\std\src\rt.rs:65
  46:     0x7ff74dc71300 - main
  47:     0x7ff74e1cf0e0 - invoke_main
                               at D:\agent\_work\9\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78
  48:     0x7ff74e1cf0e0 - __scrt_common_main_seh
                               at D:\agent\_work\9\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
  49:     0x7ff9c2147c24 - BaseThreadInitThunk
  50:     0x7ff9c40ed4d1 - RtlUserThreadStart
stack backtrace:
error: process didn't exit successfully: `target\debug\turtle-test.exe` (exit code: 101)
sunjay commented 3 years ago

Glad the latest revision solves that for you. We're running into a bunch of platform specific issues with the libraries we use and that's stopped us from cutting a new release (#183).

It looks like the crash you're getting is related to one of those platform specific issues. It's been reported to the pathfinder dependency here: https://github.com/servo/pathfinder/issues/344

It's definitely inconvenient, but it shouldn't actually cause any issues on your computer or with your program.

Let me know if you run into anything else! I'm happy to help you get things running. Thanks again for taking the time to report the issue. :)