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

Panic when running elfshaker extract --force snapshot-name #116

Open
LilithHafner opened this issue Aug 10, 2023 · 2 comments
Open

Panic when running elfshaker extract --force snapshot-name #116

LilithHafner opened this issue Aug 10, 2023 · 2 comments

Comments

@LilithHafner
Copy link
Contributor

I ran into a panic when running elfshaker extract --force snapshot-name. I could circumvent this error by running elfshaker store hack; elfshaker extract snapshot-name. Unfortunately, I do not have instructions for reproducing this issue at this time.

x@x julia % ../elfshaker/target/release/elfshaker extract --force 5544a0fab7648cfa61fe79cd557a7504a92ec1b5
thread 'main' panicked at 'Failed to remove some directories! Use process() to handle the error.: Os { code: 2, kind: NotFound, message: "No such file or directory" }', src/repo/fs.rs:212:14
stack backtrace:
   0:        0x100926936 - std::backtrace_rs::backtrace::libunwind::trace::h310cbd77a7d2ae59
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:        0x100926936 - std::backtrace_rs::backtrace::trace_unsynchronized::h5768bae568840507
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:        0x100926936 - std::sys_common::backtrace::_print_fmt::hd104a205649a2ffb
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/sys_common/backtrace.rs:65:5
   3:        0x100926936 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h521420ec33f3769d
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/sys_common/backtrace.rs:44:22
   4:        0x100943b1a - core::fmt::write::h694a0d7c23f57ada
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/core/src/fmt/mod.rs:1208:17
   5:        0x1009206dc - std::io::Write::write_fmt::h1920a3973ad439e5
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/io/mod.rs:1682:15
   6:        0x10092671a - std::sys_common::backtrace::_print::h75582c4ed1a04abb
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/sys_common/backtrace.rs:47:5
   7:        0x10092671a - std::sys_common::backtrace::print::hef1aa4dbdc07ee06
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/sys_common/backtrace.rs:34:9
   8:        0x1009287c3 - std::panicking::default_hook::{{closure}}::h529701a1070b4ce0
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/panicking.rs:267:22
   9:        0x100928518 - std::panicking::default_hook::hfeeab2c667b2d7c2
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/panicking.rs:286:9
  10:        0x100928f17 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h23ed9dbfdf16f482
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/alloc/src/boxed.rs:2032:9
  11:        0x100928f17 - std::panicking::rust_panic_with_hook::h1b5245192f90251d
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/panicking.rs:692:13
  12:        0x100928cc4 - std::panicking::begin_panic_handler::{{closure}}::h3658f3a9566379d4
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/panicking.rs:579:13
  13:        0x100926dd8 - std::sys_common::backtrace::__rust_end_short_backtrace::h9e01645d962f8882
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/sys_common/backtrace.rs:137:18
  14:        0x10092898d - rust_begin_unwind
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/panicking.rs:575:5
  15:        0x10097dc63 - core::panicking::panic_fmt::h0097ad8ec0b07517
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/core/src/panicking.rs:64:14
  16:        0x10097e0e5 - core::result::unwrap_failed::h2a0ffdcdbffb9262
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/core/src/result.rs:1791:5
  17:        0x1006f9223 - elfshaker::repo::repository::Repository::extract_snapshot::hf3f8b0af1f88ade9
  18:        0x10066b068 - elfshaker::extract::run::h8d555f7d98ecc02e
  19:        0x10067ec21 - elfshaker::main::h567678f25322a6c7
  20:        0x1006660c6 - std::sys_common::backtrace::__rust_begin_short_backtrace::h17f902a1a01f04aa
  21:        0x10065c9dc - std::rt::lang_start::{{closure}}::h3a79b769ee526fdf
  22:        0x1009199b4 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h2302f1d25ef2ca9b
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/core/src/ops/function.rs:606:13
  23:        0x1009199b4 - std::panicking::try::do_call::h6695e32a593de2cc
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/panicking.rs:483:40
  24:        0x1009199b4 - std::panicking::try::hd4a93095627721a9
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/panicking.rs:447:19
  25:        0x1009199b4 - std::panic::catch_unwind::he41b3dba63feca94
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/panic.rs:137:14
  26:        0x1009199b4 - std::rt::lang_start_internal::{{closure}}::hbf45583011495a61
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/rt.rs:148:48
  27:        0x1009199b4 - std::panicking::try::do_call::ha3e6b3edab7da449
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/panicking.rs:483:40
  28:        0x1009199b4 - std::panicking::try::hd4e0f354bf7022b9
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/panicking.rs:447:19
  29:        0x1009199b4 - std::panic::catch_unwind::h1035b163871a4269
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/panic.rs:137:14
  30:        0x1009199b4 - std::rt::lang_start_internal::hd56d2fa7efb2dd60
                               at /rustc/fc594f15669680fa70d255faec3ca3fb507c3405/library/std/src/rt.rs:148:20
  31:        0x1006800fc - _main
x@x julia % ../elfshaker/target/release/elfshaker store hack                                                
x@x julia % ../elfshaker/target/release/elfshaker extract 5544a0fab7648cfa61fe79cd557a7504a92ec1b5        
A       55797 files
D       26 files
M       4 files
Extracted 'loose/5544a0fab7648cfa61fe79cd557a7504a92ec1b5:5544a0fab7648cfa61fe79cd557a7504a92ec1b5'
@peterwaller-arm
Copy link
Contributor

Thanks for the report. A quick look at the source code suggests the only unwrap() in that function which could have happened with --force in effect would be:

dir_queue.enqueue(path_buf.parent().unwrap(), self.path.clone())?;

Could this have to do with a file appearing or disappearing in the root of the repository? I'm out of time for now, further investigation needed.

@LilithHafner
Copy link
Contributor Author

This crash happened on a mac, so a .DS_Store file could have been inserted at any time

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

No branches or pull requests

2 participants