pgcentralfoundation / pgrx

Build Postgres Extensions with Rust!
Other
3.7k stars 249 forks source link

fix a deadlock in `cargo pgrx install` during `get_git_hash()` #1935

Closed eeeebbbbrrrr closed 2 weeks ago

eeeebbbbrrrr commented 2 weeks ago

I can't quite explain why, but this function was deadlocking with this backtrace:

* thread #1, name = 'cargo-pgrx', stop reason = signal SIGSTOP
  * frame #0: 0x00007fbe1eeb288d libc.so.6`syscall at syscall.S:38
    frame #1: 0x000055aee526c5d3 cargo-pgrx`std::sys::sync::mutex::futex::Mutex::lock_contended::h6389e2305b0b005c [inlined] std::sys::pal::unix::futex::futex_wait::h30abf43e2d55aa33 at futex.rs:67:21
    frame #2: 0x000055aee526c590 cargo-pgrx`std::sys::sync::mutex::futex::Mutex::lock_contended::h6389e2305b0b005c at futex.rs:57:13
    frame #3: 0x000055aee4157835 cargo-pgrx`std::sync::mutex::Mutex$LT$T$GT$::lock::h4d2bb65800cc6fd3 at futex.rs:29:13
    frame #4: 0x000055aee41577ed cargo-pgrx`std::sync::mutex::Mutex$LT$T$GT$::lock::h4d2bb65800cc6fd3(self=0x000055aee6926c20) at mutex.rs:317:24
    frame #5: 0x000055aee406c779 cargo-pgrx`cargo_pgrx::command::install::get_git_hash::ha84d504db9d1bba8(manifest_path=0x00007ffdc43b83b0) at install.rs:507:9
    frame #6: 0x000055aee406d6e9 cargo-pgrx`cargo_pgrx::command::install::filter_contents::h8c710847129ba6be(manifest_path=0x00007ffdc43b8d10, input=String @ 0x00007ffdc43b8940) at install.rs:541:46
eeeebbbbrrrr commented 2 weeks ago

I'm gonna have to release a v0.12.8 because of this. This stopped me dead in upgrading ZomboDB to pgrx v0.12.7. :(

eeeebbbbrrrr commented 1 week ago

Update: the code was exercising this little rust gotcha that is being addressed in the 2024 edition:

https://github.com/rust-lang/rust/issues/124085