aatxe / irc

the irc crate – usable, async IRC for Rust
Mozilla Public License 2.0
536 stars 100 forks source link

for_each_incoming panic: 'assertion failed: self.remaining_mut() >= src.remaining()' #94

Closed sector-f closed 7 years ago

sector-f commented 7 years ago

Unfortunately, I have no idea of what caused this. I just left my client running for a while (several hours), came back, and looked at the terminal. The problem apparently happened somewhere in for_each_incoming(), but that's as much as I can tell you.

Here's the backtrace:

thread '<unnamed>' panicked at 'assertion failed: self.remaining_mut() >= src.remaining()', /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/bytes-0.4.4/src/buf/buf_mut.rs:229
stack backtrace:
   0: std::sys::imp::backtrace::tracing::imp::unwind_backtrace
             at /checkout/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:49
   1: std::sys_common::backtrace::_print
             at /checkout/src/libstd/sys_common/backtrace.rs:71
   2: std::panicking::default_hook::{{closure}}
             at /checkout/src/libstd/sys_common/backtrace.rs:60
             at /checkout/src/libstd/panicking.rs:355
   3: std::panicking::default_hook
             at /checkout/src/libstd/panicking.rs:371
   4: std::panicking::rust_panic_with_hook
             at /checkout/src/libstd/panicking.rs:549
   5: std::panicking::begin_panic
             at /checkout/src/libstd/panicking.rs:511
   6: bytes::buf::buf_mut::BufMut::put
             at ./<panic macros>:3
   7: <irc::proto::line::LineCodec as tokio_io::framed_write::Encoder>::encode
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/irc-0.12.2/src/proto/line.rs:72
   8: <irc::proto::irc::IrcCodec as tokio_io::framed_write::Encoder>::encode
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/irc-0.12.2/src/proto/irc.rs:39
   9: <tokio_io::framed::Fuse<T, U> as tokio_io::framed_write::Encoder>::encode
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-io-0.1.2/src/framed.rs:196
  10: <tokio_io::framed_write::FramedWrite2<T> as futures::sink::Sink>::start_send
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-io-0.1.2/src/framed_write.rs:205
  11: <tokio_io::framed::Framed<T, U> as futures::sink::Sink>::start_send
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-io-0.1.2/src/framed.rs:124
  12: <irc::client::transport::IrcTransport<T> as futures::sink::Sink>::start_send
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/irc-0.12.2/src/client/transport.rs:81
  13: <irc::client::transport::IrcTransport<T> as futures::stream::Stream>::poll
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/irc-0.12.2/src/client/transport.rs:58
  14: <irc::client::conn::Connection as futures::stream::Stream>::poll
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/irc-0.12.2/src/client/conn.rs:159
  15: <futures::stream::split::SplitStream<S> as futures::stream::Stream>::poll
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.14/src/stream/split.rs:14
  16: <irc::client::server::ServerStream as futures::stream::Stream>::poll
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/irc-0.12.2/src/client/server/mod.rs:89
  17: <futures::stream::for_each::ForEach<S, F, U> as futures::future::Future>::poll
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.14/src/stream/for_each.rs:45
  18: <futures::task_impl::Spawn<F>>::poll_future_notify::{{closure}}
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.14/src/task_impl/mod.rs:291
  19: <futures::task_impl::Spawn<T>>::enter::{{closure}}
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.14/src/task_impl/mod.rs:352
  20: futures::task_impl::std::set
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.14/src/task_impl/std/mod.rs:90
  21: <futures::task_impl::Spawn<T>>::enter
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.14/src/task_impl/mod.rs:352
  22: <futures::task_impl::Spawn<F>>::poll_future_notify
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.14/src/task_impl/mod.rs:291
  23: futures::task_impl::std::<impl futures::task_impl::Spawn<F>>::wait_future
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.14/src/task_impl/std/mod.rs:255
  24: futures::future::Future::wait
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/futures-0.1.14/src/future/mod.rs:285
  25: irc::client::server::EachIncomingExt::for_each_incoming
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/irc-0.12.2/src/client/server/mod.rs:36
  26: irc::client::server::Server::for_each_incoming
             at /home/adam/.cargo/registry/src/github.com-1ecc6299db9ec823/irc-0.12.2/src/client/server/mod.rs:64
  27: ircfs::ircfs::IrcFs::new::{{closure}}
             at ./src/ircfs.rs:70
  28: <std::panic::AssertUnwindSafe<F> as core::ops::FnOnce<()>>::call_once
             at /checkout/src/libstd/panic.rs:296
  29: std::panicking::try::do_call
             at /checkout/src/libstd/panicking.rs:454
  30: __rust_maybe_catch_panic
             at /checkout/src/libpanic_unwind/lib.rs:98
  31: std::panicking::try
             at /checkout/src/libstd/panicking.rs:433
  32: std::panic::catch_unwind
             at /checkout/src/libstd/panic.rs:361
  33: std::thread::Builder::spawn::{{closure}}
             at /checkout/src/libstd/thread/mod.rs:360
  34: <F as alloc::boxed::FnBox<A>>::call_box
             at /checkout/src/liballoc/boxed.rs:640
  35: std::sys::imp::thread::Thread::new::thread_start
             at /checkout/src/liballoc/boxed.rs:650
             at /checkout/src/libstd/sys_common/thread.rs:21
             at /checkout/src/libstd/sys/unix/thread.rs:84
  36: start_thread
  37: clone
aatxe commented 7 years ago

This is a duplicate of #92 which I've already patched, but haven't published a new crate version with.