FyroxEngine / Fyrox

3D and 2D game engine written in Rust
https://fyrox.rs
MIT License
7.65k stars 345 forks source link

Fyroxed crashes when opening a directory with symlinks in the resource browser #319

Open 64kramsystem opened 2 years ago

64kramsystem commented 2 years ago

I have a project, where a directory includes subdirectories which are symlinks.

If I click on the directory in the resource browser, Fyroxed crashes, with this stack trace:

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: StripPrefixError(())', /home/saverio/.cargo/registry/src/github.com-1ecc6299db9ec823/fyrox-core-0.20.0/src/lib.rs:339:10
stack backtrace:
   0:     0x5649a4bdd76d - std::backtrace_rs::backtrace::libunwind::trace::h2a0687f70fa2932f
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x5649a4bdd76d - std::backtrace_rs::backtrace::trace_unsynchronized::hd9fe6fafb6949f1d
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x5649a4bdd76d - std::sys_common::backtrace::_print_fmt::h1cb3661b4f93f527
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/sys_common/backtrace.rs:66:5
   3:     0x5649a4bdd76d - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h15d5b6f252669e68
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/sys_common/backtrace.rs:45:22
   4:     0x5649a4c01bbc - core::fmt::write::hfcda85493823842c
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/core/src/fmt/mod.rs:1196:17
   5:     0x5649a4bda2a1 - std::io::Write::write_fmt::h818d19a3163a9cb4
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/io/mod.rs:1654:15
   6:     0x5649a4bdef45 - std::sys_common::backtrace::_print::h5d648ffba569db29
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/sys_common/backtrace.rs:48:5
   7:     0x5649a4bdef45 - std::sys_common::backtrace::print::h074e8185938ef288
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/sys_common/backtrace.rs:35:9
   8:     0x5649a4bdef45 - std::panicking::default_hook::{{closure}}::hc6c114b96e5a6a24
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/panicking.rs:295:22
   9:     0x5649a4bdec66 - std::panicking::default_hook::h8e3922ce7d759043
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/panicking.rs:314:9
  10:     0x5649a4bdf4d6 - std::panicking::rust_panic_with_hook::h049e875c51e8c8d6
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/panicking.rs:698:17
  11:     0x5649a4bdf3c7 - std::panicking::begin_panic_handler::{{closure}}::h41581800f94edb3f
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/panicking.rs:588:13
  12:     0x5649a4bddc24 - std::sys_common::backtrace::__rust_end_short_backtrace::h3a787e02af7cad6d
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/sys_common/backtrace.rs:138:18
  13:     0x5649a4bdf0f9 - rust_begin_unwind
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/panicking.rs:584:5
  14:     0x5649a4169be3 - core::panicking::panic_fmt::h17cbed6fcc59adb0
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/core/src/panicking.rs:142:14
  15:     0x5649a4169cd3 - core::result::unwrap_failed::hbed6c685deb4a495
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/core/src/result.rs:1785:5
  16:     0x5649a4175616 - fyrox_core::make_relative_path::h8558d2f36f44d910
  17:     0x5649a42c4f84 - fyroxed_base::asset::AssetBrowser::handle_ui_message::h99ec82c4456f42fb
  18:     0x5649a41a363b - fyroxed_base::Editor::handle_ui_message::h47ae8903b9a1ca31
  19:     0x5649a41aa6e3 - fyroxed_base::update::hf8bd8c418b12854a
  20:     0x5649a4375add - fyroxed_base::Editor::run::{{closure}}::haf58fc6fc1061623
  21:     0x5649a43ab0a1 - winit::platform_impl::platform::x11::EventLoop<T>::run::h415e484cdcd5eebe
  22:     0x5649a4363e03 - winit::platform_impl::platform::EventLoop<T>::run::ha09310adc33639b7
  23:     0x5649a418b2a0 - winit::event_loop::EventLoop<T>::run::hd4d5dd145a99c156
  24:     0x5649a41a811d - fyroxed_base::Editor::run::he9129b7d03deb910
  25:     0x5649a41718d7 - fyroxed::main::he670255ff561fd9e
  26:     0x5649a416f933 - std::sys_common::backtrace::__rust_begin_short_backtrace::h7a87057189921865
  27:     0x5649a416fcf9 - std::rt::lang_start::{{closure}}::h48cf321427efa244
  28:     0x5649a4bd4d76 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h34d002777f682618
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/core/src/ops/function.rs:280:13
  29:     0x5649a4bd4d76 - std::panicking::try::do_call::haf916b42928e4ca3
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/panicking.rs:492:40
  30:     0x5649a4bd4d76 - std::panicking::try::hbe8e037c14a32ce2
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/panicking.rs:456:19
  31:     0x5649a4bd4d76 - std::panic::catch_unwind::h1d97edf18f5c66f8
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/panic.rs:137:14
  32:     0x5649a4bd4d76 - std::rt::lang_start_internal::{{closure}}::hba8cc6c7410699ad
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/rt.rs:128:48
  33:     0x5649a4bd4d76 - std::panicking::try::do_call::hacdfd236029174a3
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/panicking.rs:492:40
  34:     0x5649a4bd4d76 - std::panicking::try::h445fd3fe7faccf2a
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/panicking.rs:456:19
  35:     0x5649a4bd4d76 - std::panic::catch_unwind::h1db6954637d0b1ab
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/panic.rs:137:14
  36:     0x5649a4bd4d76 - std::rt::lang_start_internal::h1b6ff6c42d2b35e5
                               at /rustc/4cbaac699c14b7ac7cc80e54823b2ef6afeb64af/library/std/src/rt.rs:128:20
  37:     0x5649a4171922 - main
  38:     0x7fda09c95083 - __libc_start_main
                               at /build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:308:16
  39:     0x5649a4169e8e - _start
  40:                0x0 - <unknown>

You can actually find this directory here in the project repository.

I'm not 100% sure that the symlinks cause the crashes, but other directories don't have this problem.