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

Fix add with overflow panic #408

Closed
wants to merge 1 commit into from

Conversation

rgreinho
Copy link

@rgreinho rgreinho commented Mar 20, 2022

While working on adding a new example to showcase the use of indicatif
with async multi-progress bars, I faced a random panic bug:

thread 'main' panicked at 'attempt to add with overflow', src/state.rs:424:40

As a result this patch provides a new example and a fix for a bug it
exposed.

@rgreinho
Copy link
Author

rgreinho commented Mar 20, 2022

To reproduce the issue without the patch, run the example several times in a row:

export RUST_BACKTRACE=1
for i in {0..9};do echo "---Run #${i---}"; cargo run -q --example async-multi-main; done

Which would output something like that at some point:

---Run #7
██████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░       3/12
██████████████████████████████████░░░░░░     813/942
████████████████████████████████████░░░░     884/980
████████████████████████████░░░░░░░░░░░░     193/274
█████████████████░░░░░░░░░░░░░░░░░░░░░░░     124/283                                                                 thread 'main' panicked at 'attempt to add with overflow', src/state.rs:424:40
stack backtrace:
   0: rust_begin_unwind
             at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/panicking.rs:498:5
   1: core::panicking::panic_fmt
             at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/core/src/panicking.rs:116:14
   2: core::panicking::panic
             at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/core/src/panicking.rs:48:5
   3: indicatif::state::AtomicPosition::allow
             at ./src/state.rs:424:40
   4: indicatif::progress_bar::ProgressBar::inc
             at ./src/progress_bar.rs:156:12
   5: morebars_multi::add_bar::{{closure}}
             at ./examples/morebars-multi.rs:59:5
   6: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/core/src/future/mod.rs:84:19
   7: <futures_util::stream::futures_unordered::FuturesUnordered<Fut> as futures_core::stream::Stream>::poll_next
             at /Users/rgreinhofer/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.21/src/stream/futures_unordered/mod.rs:514:17
   8: futures_util::stream::stream::StreamExt::poll_next_unpin
             at /Users/rgreinhofer/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.21/src/stream/stream/mod.rs:1626:9
   9: <futures_util::stream::stream::buffer_unordered::BufferUnordered<St> as futures_core::stream::Stream>::poll_next
             at /Users/rgreinhofer/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.21/src/stream/stream/buffer_unordered.rs:79:15
  10: <futures_util::stream::stream::collect::Collect<St,C> as core::future::future::Future>::poll
             at /Users/rgreinhofer/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.21/src/stream/stream/collect.rs:50:26
  11: morebars_multi::main::{{closure}}
             at ./examples/morebars-multi.rs:37:29
  12: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/core/src/future/mod.rs:84:19
  13: tokio::park::thread::CachedParkThread::block_on::{{closure}}
             at /Users/rgreinhofer/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/park/thread.rs:263:54
  14: tokio::coop::with_budget::{{closure}}
             at /Users/rgreinhofer/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/coop.rs:102:9
  15: std::thread::local::LocalKey<T>::try_with
             at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/thread/local.rs:412:16
  16: std::thread::local::LocalKey<T>::with
             at /rustc/9d1b2106e23b1abd32fce1f17267604a5102f57a/library/std/src/thread/local.rs:388:9
  17: tokio::coop::with_budget
             at /Users/rgreinhofer/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/coop.rs:95:5
  18: tokio::coop::budget
             at /Users/rgreinhofer/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/coop.rs:72:5
  19: tokio::park::thread::CachedParkThread::block_on
             at /Users/rgreinhofer/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/park/thread.rs:263:31
  20: tokio::runtime::enter::Enter::block_on
             at /Users/rgreinhofer/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/enter.rs:151:13
  21: tokio::runtime::thread_pool::ThreadPool::block_on
             at /Users/rgreinhofer/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/thread_pool/mod.rs:73:9
  22: tokio::runtime::Runtime::block_on
             at /Users/rgreinhofer/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.17.0/src/runtime/mod.rs:477:43
  23: morebars_multi::main

The same command runs without error one the fix is in.

While working on adding a new example to showcase the use of indicatif
with async multi-progress bars, I faced a random panic bug:

`thread 'main' panicked at 'attempt to add with overflow',
       src/state.rs:424:40`

As a result this patch provides a new example and a fix for a bug it
exposed.
@djc
Copy link
Collaborator

djc commented Mar 20, 2022

I think #406 is a better fix, we'll likely merge that soon.

@djc djc closed this Mar 20, 2022
@rgreinho
Copy link
Author

@djc Would you still accept another PR with my example?

@djc
Copy link
Collaborator

djc commented Mar 20, 2022

I think indicatif already has too many examples -- I'd prefer that you modify one of the existing examples to cover additional functionality if you think some functionality is not covered well enough.

And -- forgot to say this the first time around, sorry -- thanks for contributing feedback and code!

@rgreinho rgreinho mentioned this pull request Mar 20, 2022
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

Successfully merging this pull request may close these issues.

None yet

2 participants