You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Rustdoc does not wait for DocFS writes to complete before exiting on Windows #109060
As discovered by @ehuss in rust-lang/cargo#10120, a Cargo test is intermittently failing on Windows because a source file generated by Rustdoc is not being written before the process exits. The suspected issue is that Rustdoc spawns asynchronous writes here:
panic!("failed to send error on \"{}\"", path.display())
})
});
});
However, Rustdoc never checks that the writes are completed. We should add a mechanism that prevents the process from exiting before these write tasks are completed.
One possible solution:
Add a field outstanding_writes: Arc<AtomicUsize> to DocFS.
Increment outstanding_writes at the start of DocFS::write, and decrement at the end of the spawned Rayon task.
Add a method DocFS::wait_for_outstanding_writes(&self) that spin-loops until outstanding_writes is zero. (Alternatively: use a condition variable, and have write notify the condvar when outstanding_writes is decremented.)
Either call wait_for_outstanding_writes explicitly in the end of the Rustdoc process, or add it as a Drop implementation to DocFS.
Activity
Rollup merge of rust-lang#109139 - GuillaumeGomez:rustdoc-windows-wai…
Rollup merge of rust-lang#109139 - GuillaumeGomez:rustdoc-windows-wai…
Rollup merge of rust-lang#109139 - GuillaumeGomez:rustdoc-windows-wai…