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

Investigate panic while dropping OsIpcReceiverSet #32912

Open
sagudev opened this issue Aug 2, 2024 · 5 comments
Open

Investigate panic while dropping OsIpcReceiverSet #32912

sagudev opened this issue Aug 2, 2024 · 5 comments

Comments

@sagudev
Copy link
Member

sagudev commented Aug 2, 2024

I think this happens because we panic in drop of OsIpcReceiverSet, (it's actually panic while panic), but this is in separate thread. While before this was visible rarely (we have retry 3 on unit-tests), but now rust-lang/rust#119224 causes main test thread to wait for panic_hook to not be used (so it can be freed), so this panic is visible way more often (as it actually finishes in time).

Originally posted by @sagudev in #32896 (comment)

@sagudev
Copy link
Member Author

sagudev commented Aug 2, 2024

Back traces of all threads:

bt all
  thread #1
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c304eee9 main-095d2ec2aee793a9.exe`void std::sys::sync::rwlock::futex::RwLock::write_contended() at futex.rs:218
    frame #6: 0x00007ff6c2c9df12 main-095d2ec2aee793a9.exe`void std::panicking::take_hook() at panicking.rs:181
    frame #7: 0x00007ff6c2b63329 main-095d2ec2aee793a9.exe`void test::test_main() at lib.rs:145
    frame #8: 0x00007ff6c2b646b3 main-095d2ec2aee793a9.exe`void test::test_main_static() at lib.rs:165
    frame #9: 0x00007ff6c2b0a876 main-095d2ec2aee793a9.exe
    frame #10: 0x00007ff6c2b0a88c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2c922b5 main-095d2ec2aee793a9.exe`void std::rt::lang_start_internal() at rt.rs:141
    frame #12: 0x00007ff6c2b18b0c main-095d2ec2aee793a9.exe`main + 44
    frame #13: 0x00007ff6c3049390 main-095d2ec2aee793a9.exe`static int __scrt_common_main_seh() at exe_common.inl:288
    frame #14: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #15: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #4
    frame #0: 0x00007ff873a13bf4 ntdll.dll`NtWaitForWorkViaWorkerFactory + 20
    frame #1: 0x00007ff8739a585e ntdll.dll`RtlClearThreadWorkOnBehalfTicket + 862
    frame #2: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #3: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #3
    frame #0: 0x00007ff873a13bf4 ntdll.dll`NtWaitForWorkViaWorkerFactory + 20
    frame #1: 0x00007ff8739a585e ntdll.dll`RtlClearThreadWorkOnBehalfTicket + 862
    frame #2: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #3: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #2
    frame #0: 0x00007ff873a13bf4 ntdll.dll`NtWaitForWorkViaWorkerFactory + 20
    frame #1: 0x00007ff8739a585e ntdll.dll`RtlClearThreadWorkOnBehalfTicket + 862
    frame #2: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #3: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #371
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c2cacd42 main-095d2ec2aee793a9.exe`void std::sys::sync::condvar::futex::Condvar::wait() at futex.rs:33
    frame #6: 0x00007ff6c305dd76 main-095d2ec2aee793a9.exe`rayon_core::sleep::Sleep::sleep + 774
    frame #7: 0x00007ff6c305a57d main-095d2ec2aee793a9.exe`rayon_core::registry::WorkerThread::wait_until_cold + 349
    frame #8: 0x00007ff6c2e1ffa5 main-095d2ec2aee793a9.exe`rayon_core::registry::ThreadBuilder::run + 437
    frame #9: 0x00007ff6c2e65182 main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 82
    frame #10: 0x00007ff6c2f4630c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #12: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #13: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #367
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c2cacd42 main-095d2ec2aee793a9.exe`void std::sys::sync::condvar::futex::Condvar::wait() at futex.rs:33
    frame #6: 0x00007ff6c305dd76 main-095d2ec2aee793a9.exe`rayon_core::sleep::Sleep::sleep + 774
    frame #7: 0x00007ff6c305a57d main-095d2ec2aee793a9.exe`rayon_core::registry::WorkerThread::wait_until_cold + 349
    frame #8: 0x00007ff6c2e1ffa5 main-095d2ec2aee793a9.exe`rayon_core::registry::ThreadBuilder::run + 437
    frame #9: 0x00007ff6c2e65182 main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 82
    frame #10: 0x00007ff6c2f4630c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #12: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #13: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #375
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c2cacd42 main-095d2ec2aee793a9.exe`void std::sys::sync::condvar::futex::Condvar::wait() at futex.rs:33
    frame #6: 0x00007ff6c305dd76 main-095d2ec2aee793a9.exe`rayon_core::sleep::Sleep::sleep + 774
    frame #7: 0x00007ff6c305a57d main-095d2ec2aee793a9.exe`rayon_core::registry::WorkerThread::wait_until_cold + 349
    frame #8: 0x00007ff6c2e1ffa5 main-095d2ec2aee793a9.exe`rayon_core::registry::ThreadBuilder::run + 437
    frame #9: 0x00007ff6c2e65182 main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 82
    frame #10: 0x00007ff6c2f4630c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #12: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #13: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #364
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c2cacd42 main-095d2ec2aee793a9.exe`void std::sys::sync::condvar::futex::Condvar::wait() at futex.rs:33
    frame #6: 0x00007ff6c305dd76 main-095d2ec2aee793a9.exe`rayon_core::sleep::Sleep::sleep + 774
    frame #7: 0x00007ff6c305a57d main-095d2ec2aee793a9.exe`rayon_core::registry::WorkerThread::wait_until_cold + 349
    frame #8: 0x00007ff6c2e1ffa5 main-095d2ec2aee793a9.exe`rayon_core::registry::ThreadBuilder::run + 437
    frame #9: 0x00007ff6c2e65182 main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 82
    frame #10: 0x00007ff6c2f4630c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #12: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #13: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #378
    frame #0: 0x00007ff873a100c4 ntdll.dll`NtRemoveIoCompletion + 20
    frame #1: 0x00007ff870df8f43 KernelBase.dll`GetQueuedCompletionStatus + 83
    frame #2: 0x00007ff6c2c40e4f main-095d2ec2aee793a9.exe`ipc_channel::platform::windows::OsIpcReceiverSet::fetch_iocp_result + 111
    frame #3: 0x00007ff6c2c41401 main-095d2ec2aee793a9.exe`ipc_channel::platform::windows::OsIpcReceiverSet::select + 465
    frame #4: 0x00007ff6c2c39913 main-095d2ec2aee793a9.exe`ipc_channel::ipc::IpcReceiverSet::select + 19
    frame #5: 0x00007ff6c2c42e7c main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 636
    frame #6: 0x00007ff6c2e226fc main-095d2ec2aee793a9.exe
    frame #7: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #8: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #9: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #368
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c2cacd42 main-095d2ec2aee793a9.exe`void std::sys::sync::condvar::futex::Condvar::wait() at futex.rs:33
    frame #6: 0x00007ff6c305dd76 main-095d2ec2aee793a9.exe`rayon_core::sleep::Sleep::sleep + 774
    frame #7: 0x00007ff6c305a57d main-095d2ec2aee793a9.exe`rayon_core::registry::WorkerThread::wait_until_cold + 349
    frame #8: 0x00007ff6c2e1ffa5 main-095d2ec2aee793a9.exe`rayon_core::registry::ThreadBuilder::run + 437
    frame #9: 0x00007ff6c2e65182 main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 82
    frame #10: 0x00007ff6c2f4630c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #12: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #13: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #369
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c2cacd42 main-095d2ec2aee793a9.exe`void std::sys::sync::condvar::futex::Condvar::wait() at futex.rs:33
    frame #6: 0x00007ff6c305dd76 main-095d2ec2aee793a9.exe`rayon_core::sleep::Sleep::sleep + 774
    frame #7: 0x00007ff6c305a57d main-095d2ec2aee793a9.exe`rayon_core::registry::WorkerThread::wait_until_cold + 349
    frame #8: 0x00007ff6c2e1ffa5 main-095d2ec2aee793a9.exe`rayon_core::registry::ThreadBuilder::run + 437
    frame #9: 0x00007ff6c2e65182 main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 82
    frame #10: 0x00007ff6c2f4630c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #12: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #13: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #361
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c2cacd42 main-095d2ec2aee793a9.exe`void std::sys::sync::condvar::futex::Condvar::wait() at futex.rs:33
    frame #6: 0x00007ff6c305dd76 main-095d2ec2aee793a9.exe`rayon_core::sleep::Sleep::sleep + 774
    frame #7: 0x00007ff6c305a57d main-095d2ec2aee793a9.exe`rayon_core::registry::WorkerThread::wait_until_cold + 349
    frame #8: 0x00007ff6c2e1ffa5 main-095d2ec2aee793a9.exe`rayon_core::registry::ThreadBuilder::run + 437
    frame #9: 0x00007ff6c2e65182 main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 82
    frame #10: 0x00007ff6c2f4630c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #12: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #13: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #374
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c2cacd42 main-095d2ec2aee793a9.exe`void std::sys::sync::condvar::futex::Condvar::wait() at futex.rs:33
    frame #6: 0x00007ff6c305dd76 main-095d2ec2aee793a9.exe`rayon_core::sleep::Sleep::sleep + 774
    frame #7: 0x00007ff6c305a57d main-095d2ec2aee793a9.exe`rayon_core::registry::WorkerThread::wait_until_cold + 349
    frame #8: 0x00007ff6c2e1ffa5 main-095d2ec2aee793a9.exe`rayon_core::registry::ThreadBuilder::run + 437
    frame #9: 0x00007ff6c2e65182 main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 82
    frame #10: 0x00007ff6c2f4630c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #12: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #13: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #373
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c2cacd42 main-095d2ec2aee793a9.exe`void std::sys::sync::condvar::futex::Condvar::wait() at futex.rs:33
    frame #6: 0x00007ff6c305dd76 main-095d2ec2aee793a9.exe`rayon_core::sleep::Sleep::sleep + 774
    frame #7: 0x00007ff6c305a57d main-095d2ec2aee793a9.exe`rayon_core::registry::WorkerThread::wait_until_cold + 349
    frame #8: 0x00007ff6c2e1ffa5 main-095d2ec2aee793a9.exe`rayon_core::registry::ThreadBuilder::run + 437
    frame #9: 0x00007ff6c2e65182 main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 82
    frame #10: 0x00007ff6c2f4630c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #12: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #13: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #366
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c2cacd42 main-095d2ec2aee793a9.exe`void std::sys::sync::condvar::futex::Condvar::wait() at futex.rs:33
    frame #6: 0x00007ff6c305dd76 main-095d2ec2aee793a9.exe`rayon_core::sleep::Sleep::sleep + 774
    frame #7: 0x00007ff6c305a57d main-095d2ec2aee793a9.exe`rayon_core::registry::WorkerThread::wait_until_cold + 349
    frame #8: 0x00007ff6c2e1ffa5 main-095d2ec2aee793a9.exe`rayon_core::registry::ThreadBuilder::run + 437
    frame #9: 0x00007ff6c2e65182 main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 82
    frame #10: 0x00007ff6c2f4630c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #12: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #13: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #376
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c2cacd42 main-095d2ec2aee793a9.exe`void std::sys::sync::condvar::futex::Condvar::wait() at futex.rs:33
    frame #6: 0x00007ff6c305dd76 main-095d2ec2aee793a9.exe`rayon_core::sleep::Sleep::sleep + 774
    frame #7: 0x00007ff6c305a57d main-095d2ec2aee793a9.exe`rayon_core::registry::WorkerThread::wait_until_cold + 349
    frame #8: 0x00007ff6c2e1ffa5 main-095d2ec2aee793a9.exe`rayon_core::registry::ThreadBuilder::run + 437
    frame #9: 0x00007ff6c2e65182 main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 82
    frame #10: 0x00007ff6c2f4630c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #12: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #13: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
* thread #356, stop reason = Exception 0xc0000409 encountered at address 0x7ff8711ff6fe
  * frame #0: 0x00007ff8711ff6fe ucrtbase.dll`abort + 78
    frame #1: 0x00007ff8711fee19 ucrtbase.dll`terminate + 41
    frame #2: 0x00007ff85b422a94 vcruntime140.dll`__FrameUnwindFilter + 68
    frame #3: 0x00007ff85b431d1c vcruntime140.dll`memset + 1468
    frame #4: 0x00007ff85b42f73f vcruntime140.dll`__C_specific_handler + 159
    frame #5: 0x00007ff873a1504f ntdll.dll`__chkstk + 303
    frame #6: 0x00007ff87398e866 ntdll.dll`RtlFindCharInUnicodeString + 2710
    frame #7: 0x00007ff873a1403e ntdll.dll`KiUserExceptionDispatcher + 46
    frame #8: 0x00007ff870e2fabc KernelBase.dll`RaiseException + 108
    frame #9: 0x00007ff85b426ba7 vcruntime140.dll`_CxxThrowException + 151
    frame #10: 0x00007ff6c2eb91f0 main-095d2ec2aee793a9.exe`void panic_unwind::__rust_start_panic() at lib.rs:106
    frame #11: 0x00007ff6c2c9f035 main-095d2ec2aee793a9.exe`void std::panicking::rust_panic() at panicking.rs:840
    frame #12: 0x00007ff6c2c9ec46 main-095d2ec2aee793a9.exe`void std::panicking::rust_panic_with_hook() at panicking.rs:810
    frame #13: 0x00007ff6c2c9ea3b main-095d2ec2aee793a9.exe`static void std::panicking::begin_panic_handler::closure$0() at panicking.rs:649
    frame #14: 0x00007ff6c2c9ca5f main-095d2ec2aee793a9.exe`static void std::sys_common::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure_env$0,never$>() at backtrace.rs:171
    frame #15: 0x00007ff6c2c9e728 main-095d2ec2aee793a9.exe`void std::panicking::begin_panic_handler() at panicking.rs:645
    frame #16: 0x00007ff6c304f417 main-095d2ec2aee793a9.exe`void core::panicking::panic_fmt() at panicking.rs:72
    frame #17: 0x00007ff6c304f4f0 main-095d2ec2aee793a9.exe`void core::panicking::panic() at panicking.rs:141
    frame #18: 0x00007ff6c2c3c82a main-095d2ec2aee793a9.exe`<ipc_channel::platform::windows::MessageReader as core::ops::drop::Drop>::drop + 122
    frame #19: 0x00007ff6c2c16b4d main-095d2ec2aee793a9.exe`core::ptr::drop_in_place<ipc_channel::platform::windows::MessageReader> + 29
    frame #20: 0x00007ff6c2bfe7ba main-095d2ec2aee793a9.exe
    frame #21: 0x00007ff6c2bfd6c8 main-095d2ec2aee793a9.exe
    frame #22: 0x00007ff85b421060 vcruntime140.dll
    frame #23: 0x00007ff85b4253ea vcruntime140.dll`_is_exception_typeof + 10330
    frame #24: 0x00007ff85b42fb80 vcruntime140.dll`__C_specific_handler + 1248
    frame #25: 0x00007ff85b4245f0 vcruntime140.dll`_is_exception_typeof + 6752
    frame #26: 0x00007ff85b4304b1 vcruntime140.dll`__CxxFrameHandler3 + 113
    frame #27: 0x00007ff873a150cf ntdll.dll`__chkstk + 431
    frame #28: 0x00007ff873990154 ntdll.dll`RtlUnwindEx + 628
    frame #29: 0x00007ff85b430046 vcruntime140.dll`__C_specific_handler + 2470
    frame #30: 0x00007ff85b423245 vcruntime140.dll`_is_exception_typeof + 1717
    frame #31: 0x00007ff85b423666 vcruntime140.dll`_is_exception_typeof + 2774
    frame #32: 0x00007ff85b4246ec vcruntime140.dll`_is_exception_typeof + 7004
    frame #33: 0x00007ff85b4304b1 vcruntime140.dll`__CxxFrameHandler3 + 113
    frame #34: 0x00007ff873a1504f ntdll.dll`__chkstk + 303
    frame #35: 0x00007ff87398e866 ntdll.dll`RtlFindCharInUnicodeString + 2710
    frame #36: 0x00007ff873a1403e ntdll.dll`KiUserExceptionDispatcher + 46
    frame #37: 0x00007ff870e2fabc KernelBase.dll`RaiseException + 108
    frame #38: 0x00007ff85b426ba7 vcruntime140.dll`_CxxThrowException + 151
    frame #39: 0x00007ff6c2eb91f0 main-095d2ec2aee793a9.exe`void panic_unwind::__rust_start_panic() at lib.rs:106
    frame #40: 0x00007ff6c2c9f035 main-095d2ec2aee793a9.exe`void std::panicking::rust_panic() at panicking.rs:840
    frame #41: 0x00007ff6c2c9ec46 main-095d2ec2aee793a9.exe`void std::panicking::rust_panic_with_hook() at panicking.rs:810
    frame #42: 0x00007ff6c2c9ea79 main-095d2ec2aee793a9.exe`static void std::panicking::begin_panic_handler::closure$0() at panicking.rs:657
    frame #43: 0x00007ff6c2c9ca5f main-095d2ec2aee793a9.exe`static void std::sys_common::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure_env$0,never$>() at backtrace.rs:171
    frame #44: 0x00007ff6c2c9e728 main-095d2ec2aee793a9.exe`void std::panicking::begin_panic_handler() at panicking.rs:645
    frame #45: 0x00007ff6c304f417 main-095d2ec2aee793a9.exe`void core::panicking::panic_fmt() at panicking.rs:72
    frame #46: 0x00007ff6c2cb660d main-095d2ec2aee793a9.exe`static void core::panicking::panic_display<ref$<str$> >() at panicking.rs:256
    frame #47: 0x00007ff6c304f3de main-095d2ec2aee793a9.exe`void core::option::expect_failed() at option.rs:1994
    frame #48: 0x00007ff6c2c410f5 main-095d2ec2aee793a9.exe`ipc_channel::platform::windows::OsIpcReceiverSet::fetch_iocp_result + 789
    frame #49: 0x00007ff6c2c40952 main-095d2ec2aee793a9.exe`<ipc_channel::platform::windows::OsIpcReceiverSet as core::ops::drop::Drop>::drop + 146
    frame #50: 0x00007ff6c2bfd51c main-095d2ec2aee793a9.exe
    frame #51: 0x00007ff6c2c0b13f main-095d2ec2aee793a9.exe`net::resource_thread::ResourceChannelManager::start + 20319
    frame #52: 0x00007ff6c2d7986e main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 1630
    frame #53: 0x00007ff6c2cf46a4 main-095d2ec2aee793a9.exe
    frame #54: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #55: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #56: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #359
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c2cacd42 main-095d2ec2aee793a9.exe`void std::sys::sync::condvar::futex::Condvar::wait() at futex.rs:33
    frame #6: 0x00007ff6c305dd76 main-095d2ec2aee793a9.exe`rayon_core::sleep::Sleep::sleep + 774
    frame #7: 0x00007ff6c305a57d main-095d2ec2aee793a9.exe`rayon_core::registry::WorkerThread::wait_until_cold + 349
    frame #8: 0x00007ff6c2e1ffa5 main-095d2ec2aee793a9.exe`rayon_core::registry::ThreadBuilder::run + 437
    frame #9: 0x00007ff6c2e65182 main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 82
    frame #10: 0x00007ff6c2f4630c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #12: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #13: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #362
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c2cacd42 main-095d2ec2aee793a9.exe`void std::sys::sync::condvar::futex::Condvar::wait() at futex.rs:33
    frame #6: 0x00007ff6c305dd76 main-095d2ec2aee793a9.exe`rayon_core::sleep::Sleep::sleep + 774
    frame #7: 0x00007ff6c305a57d main-095d2ec2aee793a9.exe`rayon_core::registry::WorkerThread::wait_until_cold + 349
    frame #8: 0x00007ff6c2e1ffa5 main-095d2ec2aee793a9.exe`rayon_core::registry::ThreadBuilder::run + 437
    frame #9: 0x00007ff6c2e65182 main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 82
    frame #10: 0x00007ff6c2f4630c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #12: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #13: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #363
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c2cacd42 main-095d2ec2aee793a9.exe`void std::sys::sync::condvar::futex::Condvar::wait() at futex.rs:33
    frame #6: 0x00007ff6c305dd76 main-095d2ec2aee793a9.exe`rayon_core::sleep::Sleep::sleep + 774
    frame #7: 0x00007ff6c305a57d main-095d2ec2aee793a9.exe`rayon_core::registry::WorkerThread::wait_until_cold + 349
    frame #8: 0x00007ff6c2e1ffa5 main-095d2ec2aee793a9.exe`rayon_core::registry::ThreadBuilder::run + 437
    frame #9: 0x00007ff6c2e65182 main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 82
    frame #10: 0x00007ff6c2f4630c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #12: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #13: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #370
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c2cacd42 main-095d2ec2aee793a9.exe`void std::sys::sync::condvar::futex::Condvar::wait() at futex.rs:33
    frame #6: 0x00007ff6c305dd76 main-095d2ec2aee793a9.exe`rayon_core::sleep::Sleep::sleep + 774
    frame #7: 0x00007ff6c305a57d main-095d2ec2aee793a9.exe`rayon_core::registry::WorkerThread::wait_until_cold + 349
    frame #8: 0x00007ff6c2e1ffa5 main-095d2ec2aee793a9.exe`rayon_core::registry::ThreadBuilder::run + 437
    frame #9: 0x00007ff6c2e65182 main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 82
    frame #10: 0x00007ff6c2f4630c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #12: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #13: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40
  thread #358
    frame #0: 0x00007ff873a13b94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ff8739a3eb5 ntdll.dll`TpWorkOnBehalfClearTicket + 149
    frame #2: 0x00007ff8739bfeac ntdll.dll`RtlDllShutdownInProgress + 652
    frame #3: 0x00007ff8739bbf73 ntdll.dll`RtlWaitOnAddress + 19
    frame #4: 0x00007ff870e3f203 KernelBase.dll`WaitOnAddress + 51
    frame #5: 0x00007ff6c2cacd42 main-095d2ec2aee793a9.exe`void std::sys::sync::condvar::futex::Condvar::wait() at futex.rs:33
    frame #6: 0x00007ff6c305dd76 main-095d2ec2aee793a9.exe`rayon_core::sleep::Sleep::sleep + 774
    frame #7: 0x00007ff6c305a57d main-095d2ec2aee793a9.exe`rayon_core::registry::WorkerThread::wait_until_cold + 349
    frame #8: 0x00007ff6c2e1ffa5 main-095d2ec2aee793a9.exe`rayon_core::registry::ThreadBuilder::run + 437
    frame #9: 0x00007ff6c2e65182 main-095d2ec2aee793a9.exe`std::sys_common::backtrace::__rust_begin_short_backtrace + 82
    frame #10: 0x00007ff6c2f4630c main-095d2ec2aee793a9.exe
    frame #11: 0x00007ff6c2caa6ad main-095d2ec2aee793a9.exe`static void std::sys::pal::windows::thread::impl$0::new::thread_start() at thread.rs:53
    frame #12: 0x00007ff872aa257d kernel32.dll`BaseThreadInitThunk + 29
    frame #13: 0x00007ff8739caf28 ntdll.dll`RtlUserThreadStart + 40

@sagudev
Copy link
Member Author

sagudev commented Aug 2, 2024

if we delay dropping of ipc stuff the panic does not happen:

diff --git a/components/net/tests/resource_thread.rs b/components/net/tests/resource_thread.rs
index 9a32143d71..c52884b243 100644
--- a/components/net/tests/resource_thread.rs
+++ b/components/net/tests/resource_thread.rs
@@ -35,6 +35,7 @@ fn test_exit() {
     );
     resource_thread.send(CoreResourceMsg::Exit(sender)).unwrap();
     receiver.recv().unwrap();
+    std::thread::sleep(std::time::Duration::from_millis(1000));
 }

 #[test]

but this doesn't help:

 #[test]
 fn test_exit() {
+    {
     let (tx, _rx) = ipc::channel().unwrap();
     let (mtx, _mrx) = ipc::channel().unwrap();
     let (sender, receiver) = ipc::channel().unwrap();
@@ -35,6 +36,8 @@ fn test_exit() {
     );
     resource_thread.send(CoreResourceMsg::Exit(sender)).unwrap();
     receiver.recv().unwrap();
+    }
+    std::thread::sleep(std::time::Duration::from_millis(1000));
 }

@jdm
Copy link
Member

jdm commented Aug 2, 2024

What's the code that's panicking?

@mrobinson mrobinson changed the title Investigate panic while droping OsIpcReceiverSet Investigate panic while dropping OsIpcReceiverSet Aug 2, 2024
@sagudev sagudev mentioned this issue Aug 5, 2024
3 tasks
github-merge-queue bot pushed a commit that referenced this issue Aug 7, 2024
* Update for nix

Signed-off-by: Hayashi Mikihiro <[email protected]>

* Update to Rust 1.80.0

Signed-off-by: Hayashi Mikihiro <[email protected]>

* Rename to BindingMode from BindingAnnotation

rust-lang/rust#124047
Signed-off-by: Hayashi Mikihiro <[email protected]>

* Remove TypeVariableOriginKind

rust-lang/rust#123016
Signed-off-by: Hayashi Mikihiro <[email protected]>

* Remove TypeVariableOrigin

rust-lang/rust#124955
Signed-off-by: Hayashi Mikihiro <[email protected]>

* Remove LintDiagnostic::msg

rust-lang/rust#125410

Signed-off-by: Hayashi Mikihiro <[email protected]>

* common.rs fmt mistake indents

Signed-off-by: Hayashi Mikihiro <[email protected]>

* trace_in_no_trace.rs remove mistake space

Signed-off-by: Hayashi Mikihiro <[email protected]>

* trace_in_no_trace.rs remove mistake head space

Signed-off-by: Hayashi Mikihiro <[email protected]>

* Workaround for #32912

It's dirty but it worked on 2000 runs

Signed-off-by: sagudev <[email protected]>

---------

Signed-off-by: Hayashi Mikihiro <[email protected]>
Signed-off-by: sagudev <[email protected]>
Co-authored-by: Samson <[email protected]>
Gae24 pushed a commit to Gae24/servo that referenced this issue Aug 7, 2024
* Update for nix

Signed-off-by: Hayashi Mikihiro <[email protected]>

* Update to Rust 1.80.0

Signed-off-by: Hayashi Mikihiro <[email protected]>

* Rename to BindingMode from BindingAnnotation

rust-lang/rust#124047
Signed-off-by: Hayashi Mikihiro <[email protected]>

* Remove TypeVariableOriginKind

rust-lang/rust#123016
Signed-off-by: Hayashi Mikihiro <[email protected]>

* Remove TypeVariableOrigin

rust-lang/rust#124955
Signed-off-by: Hayashi Mikihiro <[email protected]>

* Remove LintDiagnostic::msg

rust-lang/rust#125410

Signed-off-by: Hayashi Mikihiro <[email protected]>

* common.rs fmt mistake indents

Signed-off-by: Hayashi Mikihiro <[email protected]>

* trace_in_no_trace.rs remove mistake space

Signed-off-by: Hayashi Mikihiro <[email protected]>

* trace_in_no_trace.rs remove mistake head space

Signed-off-by: Hayashi Mikihiro <[email protected]>

* Workaround for servo#32912

It's dirty but it worked on 2000 runs

Signed-off-by: sagudev <[email protected]>

---------

Signed-off-by: Hayashi Mikihiro <[email protected]>
Signed-off-by: sagudev <[email protected]>
Co-authored-by: Samson <[email protected]>
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