kahing / catfs

Cache AnyThing filesystem written in Rust
Apache License 2.0
842 stars 54 forks source link

`grep -r foo .` causes crash #64

Open ole-tange opened 2 years ago

ole-tange commented 2 years ago

phone is an sshfs.

I did a grep -r foo . and got:

$ catfs phone phone.cache phone.cached
thread '<unnamed>' panicked at 'index out of bounds: the len is 0 but the index is 0', /home/tange/.cargo/registry/src/github.com-1ecc6299db9ec823/catfs-0.8.0/src/catfs/error.rs:56:30
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at 'index out of bounds: the len is 0 but the index is 0', /home/tange/.cargo/registry/src/github.com-1ecc6299db9ec823/catfs-0.8.0/src/catfs/error.rs:56:30
stack backtrace:
   0:     0x564b76983fe0 - std::backtrace_rs::backtrace::libunwind::trace::h577ea05e9ca4629a
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/../../backtrace/src/backtrace/libunwind.rs:96
   1:     0x564b76983fe0 - std::backtrace_rs::backtrace::trace_unsynchronized::h50b9b72b84c7dd56
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/../../backtrace/src/backtrace/mod.rs:66
   2:     0x564b76983fe0 - std::sys_common::backtrace::_print_fmt::h6541cf9823837fac
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys_common/backtrace.rs:79
   3:     0x564b76983fe0 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hf64fbff071026df5
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys_common/backtrace.rs:58
   4:     0x564b769a052c - core::fmt::write::h9ddafa4860d8adff
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/core/src/fmt/mod.rs:1082
   5:     0x564b76981057 - std::io::Write::write_fmt::h1d2ee292d2b65481
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/io/mod.rs:1514
   6:     0x564b76986440 - std::sys_common::backtrace::_print::ha25f9ff5080d886d
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys_common/backtrace.rs:61
   7:     0x564b76986440 - std::sys_common::backtrace::print::h213e8aa8dc5405c0
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys_common/backtrace.rs:48
   8:     0x564b76986440 - std::panicking::default_hook::{{closure}}::h6482fae49ef9d963
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/panicking.rs:200
   9:     0x564b7698618c - std::panicking::default_hook::he30ad7589e0970f9
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/panicking.rs:219
  10:     0x564b76986aa3 - std::panicking::rust_panic_with_hook::haa1ed36ada4ffb03
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/panicking.rs:569
  11:     0x564b76986679 - std::panicking::begin_panic_handler::{{closure}}::h7001af1bb21aeaeb
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/panicking.rs:476
  12:     0x564b7698446c - std::sys_common::backtrace::__rust_end_short_backtrace::h39910f557f5f2367
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys_common/backtrace.rs:153
  13:     0x564b76986639 - rust_begin_unwind
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/panicking.rs:475
  14:     0x564b7699f851 - core::panicking::panic_fmt::h4e2659771ebc78eb
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/core/src/panicking.rs:85
  15:     0x564b7699f812 - core::panicking::panic_bounds_check::h2e8c50d2fb4877c0
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/core/src/panicking.rs:62
  16:     0x564b768678cb - catfs::catfs::error::RError<E>::from::h1d8d9839a102ee7f
  17:     0x564b76861330 - <catfs::catfs::file::Handle as core::ops::drop::Drop>::drop::h7da3221858c64a46
  18:     0x564b7685ad6c - core::ptr::drop_in_place::h3e2659181536cf18
  19:     0x564b7685af2c - core::ptr::drop_in_place::hb43e9bcb923eae34
  20:     0x564b7685ac7d - <F as threadpool::FnBox>::call_box::h0ea576581ced0b63
  21:     0x564b768a36db - std::sys_common::backtrace::__rust_begin_short_backtrace::h0b88fcd08d2363c9
  22:     0x564b768a3bda - core::ops::function::FnOnce::call_once{{vtable.shim}}::hebe05edcb5c35f61
  23:     0x564b7698942a - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h670c50864ac2cb92
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/alloc/src/boxed.rs:1042
  24:     0x564b7698942a - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h2511952749086d81
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/alloc/src/boxed.rs:1042
  25:     0x564b7698942a - std::sys::unix::thread::Thread::new::thread_start::h5ad4ddffe24373a8
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys/unix/thread.rs:87
  26:     0x7f2c74d8b609 - start_thread
  27:     0x7f2c74c97293 - clone
  28:                0x0 - <unknown>
thread panicked while panicking. aborting.
Illegal instruction (core dumped)
ole-tange commented 2 years ago

Retrying I get:

$ catfs phone phone.cache phone.cached
2022-01-26 16:43:51 ERROR - "storage/0F74-0C3F/Android/data/com.generalmagic.magicearth/files/Download/MAGICEARTH/Data/Maps/DenmarkOSM_2021Q3_218103814.cmap" is not a valid cache file, deleting
thread '<unnamed>' panicked at 'index out of bounds: the len is 0 but the index is 0', /home/tange/.cargo/registry/src/github.com-1ecc6299db9ec823/catfs-0.8.0/src/catfs/error.rs:56:30
stack backtrace:
   0: rust_begin_unwind
             at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/panicking.rs:475
   1: core::panicking::panic_fmt
             at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/core/src/panicking.rs:85
   2: core::panicking::panic_bounds_check
             at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/core/src/panicking.rs:62
   3: catfs::catfs::error::RError<E>::from
   4: catfs::catfs::file::Handle::copy
   5: <F as threadpool::FnBox>::call_box
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread '<unnamed>' panicked at 'index out of bounds: the len is 0 but the index is 0', /home/tange/.cargo/registry/src/github.com-1ecc6299db9ec823/catfs-0.8.0/src/catfs/error.rs:56:30
stack backtrace:
   0:     0x55682d3b6fe0 - std::backtrace_rs::backtrace::libunwind::trace::h577ea05e9ca4629a
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/../../backtrace/src/backtrace/libunwind.rs:96
   1:     0x55682d3b6fe0 - std::backtrace_rs::backtrace::trace_unsynchronized::h50b9b72b84c7dd56
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/../../backtrace/src/backtrace/mod.rs:66
   2:     0x55682d3b6fe0 - std::sys_common::backtrace::_print_fmt::h6541cf9823837fac
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys_common/backtrace.rs:79
   3:     0x55682d3b6fe0 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hf64fbff071026df5
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys_common/backtrace.rs:58
   4:     0x55682d3d352c - core::fmt::write::h9ddafa4860d8adff
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/core/src/fmt/mod.rs:1082
   5:     0x55682d3b4057 - std::io::Write::write_fmt::h1d2ee292d2b65481
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/io/mod.rs:1514
   6:     0x55682d3b9440 - std::sys_common::backtrace::_print::ha25f9ff5080d886d
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys_common/backtrace.rs:61
   7:     0x55682d3b9440 - std::sys_common::backtrace::print::h213e8aa8dc5405c0
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys_common/backtrace.rs:48
   8:     0x55682d3b9440 - std::panicking::default_hook::{{closure}}::h6482fae49ef9d963
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/panicking.rs:200
   9:     0x55682d3b918c - std::panicking::default_hook::he30ad7589e0970f9
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/panicking.rs:219
  10:     0x55682d3b9aa3 - std::panicking::rust_panic_with_hook::haa1ed36ada4ffb03
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/panicking.rs:569
  11:     0x55682d3b9679 - std::panicking::begin_panic_handler::{{closure}}::h7001af1bb21aeaeb
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/panicking.rs:476
  12:     0x55682d3b746c - std::sys_common::backtrace::__rust_end_short_backtrace::h39910f557f5f2367
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys_common/backtrace.rs:153
  13:     0x55682d3b9639 - rust_begin_unwind
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/panicking.rs:475
  14:     0x55682d3d2851 - core::panicking::panic_fmt::h4e2659771ebc78eb
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/core/src/panicking.rs:85
  15:     0x55682d3d2812 - core::panicking::panic_bounds_check::h2e8c50d2fb4877c0
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/core/src/panicking.rs:62
  16:     0x55682d29a8cb - catfs::catfs::error::RError<E>::from::h1d8d9839a102ee7f
  17:     0x55682d294330 - <catfs::catfs::file::Handle as core::ops::drop::Drop>::drop::h7da3221858c64a46
  18:     0x55682d28dd6c - core::ptr::drop_in_place::h3e2659181536cf18
  19:     0x55682d28df2c - core::ptr::drop_in_place::hb43e9bcb923eae34
  20:     0x55682d28dc7d - <F as threadpool::FnBox>::call_box::h0ea576581ced0b63
  21:     0x55682d2d66db - std::sys_common::backtrace::__rust_begin_short_backtrace::h0b88fcd08d2363c9
  22:     0x55682d2d6bda - core::ops::function::FnOnce::call_once{{vtable.shim}}::hebe05edcb5c35f61
  23:     0x55682d3bc42a - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h670c50864ac2cb92
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/alloc/src/boxed.rs:1042
  24:     0x55682d3bc42a - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h2511952749086d81
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/alloc/src/boxed.rs:1042
  25:     0x55682d3bc42a - std::sys::unix::thread::Thread::new::thread_start::h5ad4ddffe24373a8
                               at /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys/unix/thread.rs:87
  26:     0x7f055a867609 - start_thread
  27:     0x7f055a773293 - clone
  28:                0x0 - <unknown>
thread panicked while panicking. aborting.
Illegal instruction (core dumped)
ole-tange commented 2 years ago

If I emptied phone.cache it worked.

This might simply be caused by an incomplete transfer. If you see those, you should probably just remove the cache file and transfer again.