tummychow / git-absorb

git commit --fixup, but automatic
https://crates.io/crates/git-absorb
BSD 3-Clause "New" or "Revised" License
3.38k stars 58 forks source link

panicked at 'attempted to zero-initialize type `libgit2_sys::git_diff_options`, which is invalid' #34

Closed imp closed 3 years ago

imp commented 3 years ago

Hit this today when using git absorb

thread 'main' panicked at 'attempted to zero-initialize type `libgit2_sys::git_diff_options`, which is invalid', /export/home/imp/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:623:9
stack backtrace:
   0:     0x5620217d21e0 - std::backtrace_rs::backtrace::libunwind::trace::h622bab51c72c4e69
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/../../backtrace/src/backtrace/libunwind.rs:100:5
   1:     0x5620217d21e0 - std::backtrace_rs::backtrace::trace_unsynchronized::h7e820b882ebd41ee
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x5620217d21e0 - std::sys_common::backtrace::_print_fmt::h64d46258114db92f
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/sys_common/backtrace.rs:79:5
   3:     0x5620217d21e0 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h47111d0c1b5f0da5
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/sys_common/backtrace.rs:58:22
   4:     0x5620217f638c - core::fmt::write::h1857a60b204f1b6a
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/core/src/fmt/mod.rs:1076:17
   5:     0x5620217cf412 - std::io::Write::write_fmt::h4604516fed3e5731
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/io/mod.rs:1516:15
   6:     0x5620217d460d - std::sys_common::backtrace::_print::h785e7a78d5ef272c
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/sys_common/backtrace.rs:61:5
   7:     0x5620217d460d - std::sys_common::backtrace::print::h108047ac5c4555d5
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/sys_common/backtrace.rs:48:9
   8:     0x5620217d460d - std::panicking::default_hook::{{closure}}::h1d0c271f0d087ebf
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/panicking.rs:208:50
   9:     0x5620217d42b8 - std::panicking::default_hook::h692753e26f11b7b7
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/panicking.rs:227:9
  10:     0x5620217d4cf1 - std::panicking::rust_panic_with_hook::h74ddc20305301cd9
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/panicking.rs:577:17
  11:     0x5620217d4899 - std::panicking::begin_panic_handler::{{closure}}::h1a9ca6427ceee1d0
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/panicking.rs:484:9
  12:     0x5620217d269c - std::sys_common::backtrace::__rust_end_short_backtrace::h97e27b7ab754adde
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/sys_common/backtrace.rs:153:18
  13:     0x5620217d4859 - rust_begin_unwind
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/panicking.rs:483:5
  14:     0x5620217f3a81 - core::panicking::panic_fmt::hb15d6f55e8472f62
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/core/src/panicking.rs:85:14
  15:     0x5620217f39cd - core::panicking::panic::h5d1c61fed2502a5f
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/core/src/panicking.rs:50:5
  16:     0x5620216f1c2c - git2::diff::DiffOptions::new::ha319e7a3849a1f4f
  17:     0x5620216dce67 - git_absorb::run::h50a372252ec0d033
  18:     0x5620216a9ce5 - git_absorb::main::h7beeecfb29e61dd3
  19:     0x5620216a71f3 - std::sys_common::backtrace::__rust_begin_short_backtrace::h9f7afc2555467067
  20:     0x5620216aade9 - std::rt::lang_start::{{closure}}::h1d2d197bbdab08fc
  21:     0x5620217d5117 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h5867dc20a6af6cac
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/core/src/ops/function.rs:259:13
  22:     0x5620217d5117 - std::panicking::try::do_call::h32e8dcce59f53a45
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/panicking.rs:381:40
  23:     0x5620217d5117 - std::panicking::try::h7d7b073280e6de2f
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/panicking.rs:345:19
  24:     0x5620217d5117 - std::panic::catch_unwind::h801333b3e4e7d79f
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/panic.rs:382:14
  25:     0x5620217d5117 - std::rt::lang_start_internal::h2c157bf657c6892a
                               at /rustc/b1af43bc63bc7417938df056f7f25d456cc11b0e/library/std/src/rt.rs:51:25
  26:     0x5620216aa202 - main
  27:     0x7ffa63daf840 - __libc_start_main
  28:     0x5620216a4ec9 - _start
  29:                0x0 - <unknown>
tummychow commented 3 years ago

i'll take a closer look at this tomorrow, but is that compiled with nightly? that looks like a bad interaction between nightly and git2 - there's really not much going on in the panicked call from git-absorb's perspective

imp commented 3 years ago

Correct - it was compiled with nightly. I will retest with stable shortly

tummychow commented 3 years ago

yeah i can't repro this with master and stable (1.47.0). let me know if you can repro and i'll dig deeper

mati865 commented 3 years ago

It's because git2-rs 0.9 has UB. Actually this issue has been fixed by https://github.com/tummychow/git-absorb/pull/32 but it's not released yet.

tummychow commented 3 years ago

but it's not released yet.

ah, now that's a problem i can solve. i released 0.6.5 which contains the git2 ub bugfix (https://github.com/rust-lang/git2-rs/commit/dfae2e6882f819735cf683a702d9e5a3b04d963e) in case anyone is building on nightly