The crash service.
This repo provides:
- Server
- Client
Status: Ready for crashing grpc.
Just run
cd server && cargo run --release -- --config config.toml
and
cd client && cargo run --release
you are going to yield on serverside:
- tremendous RAM use
- an error message and backtrace
[2020-02-05T21:41:32Z ERROR log_panics] thread 'grpc-server-loop' panicked at 'refresh_buffer must not be called on CodedOutputStream create from slice': /home/paul/.cargo/registry/src/github.com-1ecc6299db9ec823/protobuf-2.6.2/src/stream.rs:1039
stack backtrace:
0: log_panics::init::{{closure}}
1: std::panicking::rust_panic_with_hook
at src/libstd/panicking.rs:468
2: std::panicking::begin_panic
3: protobuf::stream::CodedOutputStream::refresh_buffer
4: protobuf::stream::CodedOutputStream::write_raw_bytes
5: protobuf::stream::CodedOutputStream::write_float
6: protobuf::core::Message::write_to_bytes
7: <grpc::protobuf::MarshallerProtobuf as grpc::marshall::Marshaller<M>>::write
8: <futures::stream::and_then::AndThen<S,F,U> as futures::stream::Stream>::poll
9: <alloc::boxed::Box<S> as futures::stream::Stream>::poll
10: <futures::stream::map::Map<S,F> as futures::stream::Stream>::poll
11: <alloc::boxed::Box<S> as futures::stream::Stream>::poll
12: <futures::stream::then::Then<S,F,U> as futures::stream::Stream>::poll
13: <futures::stream::map_err::MapErr<S,F> as futures::stream::Stream>::poll
14: <futures::stream::chain::Chain<S1,S2> as futures::stream::Stream>::poll
15: <futures::stream::map::Map<S,F> as futures::stream::Stream>::poll
16: <futures::stream::chain::Chain<S1,S2> as futures::stream::Stream>::poll
17: <futures::future::flatten_stream::FlattenStream<F> as futures::stream::Stream>::poll
18: <alloc::boxed::Box<S> as futures::stream::Stream>::poll
19: std::panicking::try::do_call
20: __rust_maybe_catch_panic
at src/libpanic_unwind/lib.rs:81
21: <futures::stream::then::Then<S,F,U> as futures::stream::Stream>::poll
22: <httpbis::data_or_headers_with_flag::DataOrHeadersWithFlagStream as futures::stream::Stream>::poll
23: <httpbis::common::pump_stream_to_write_loop::PumpStreamToWrite<T> as futures::future::Future>::poll
24: <futures::future::lazy::Lazy<F,R> as futures::future::Future>::poll
25: <futures::future::map_err::MapErr<A,F> as futures::future::Future>::poll
26: futures::task_impl::std::set
27: tokio_current_thread::CurrentRunner::set_spawn
28: tokio_current_thread::scheduler::Scheduler<U>::tick
29: tokio_current_thread::Entered<P>::turn
30: scoped_tls::ScopedKey<T>::set
31: std::thread::local::LocalKey<T>::with
32: std::thread::local::LocalKey<T>::with
33: std::thread::local::LocalKey<T>::with
34: tokio_core::reactor::Core::poll
35: tokio_core::reactor::Core::run
36: std::sys_common::backtrace::__rust_begin_short_backtrace
37: std::panicking::try::do_call
38: __rust_maybe_catch_panic
at src/libpanic_unwind/lib.rs:81
39: core::ops::function::FnOnce::call_once{{vtable.shim}}
40: <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once
at /rustc/1bd30ce2aac40c7698aa4a1b9520aa649ff2d1c5/src/liballoc/boxed.rs:942
41: <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once
at /rustc/1bd30ce2aac40c7698aa4a1b9520aa649ff2d1c5/src/liballoc/boxed.rs:942
std::sys_common::thread::start_thread
at src/libstd/sys_common/thread.rs:13
std::sys::unix::thread::Thread::new::thread_start
at src/libstd/sys/unix/thread.rs:79
42: start_thread
43: __clone
On the client side you will only see the following:
Err(Error { kind: Internal, message: "http error: Encountered HTTP named error" })
Example config.toml
:
[server]
# ip address the server listens on.
# optional (default = "::")
# value range: valid ip4 or ip6 address
ip = "::"
# port the server listens on.
# optional (default = 50066)
# value range: 0-65536
port = 50066