mimblewimble / grin

Minimal implementation of the Mimblewimble protocol.
https://grin.mw/
Apache License 2.0
5.04k stars 991 forks source link

Panic when using 'grin wallet send' command #1275

Closed garyyu closed 6 years ago

garyyu commented 6 years ago

In case of Spendable balance is 0, using wallet send command will Panic. Problem is on wallet/src/libwallet/error.rs:164 , but sorry I don't know how to fix this.


$ RUST_BACKTRACE=1 ./target/debug/grin wallet send 5 -d http://192.168.1.128:13415
Jul 17 18:18:10.239 ERRO Tx not created: Error { inner: stack backtrace:
   0:        0x10489aed4 - backtrace::backtrace::trace::h494fcd58784656bc
                        at /Users/garyyu/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.9/src/backtrace/mod.rs:42
   1:        0x104895fbc - backtrace::capture::Backtrace::new_unresolved::h6c77e38011d2c811
                        at /Users/garyyu/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.9/src/capture.rs:88
   2:        0x104893128 - failure::backtrace::internal::InternalBacktrace::new::h902651edd2dd6704
                        at /Users/garyyu/.cargo/registry/src/github.com-1ecc6299db9ec823/failure-0.1.1/src/backtrace/internal.rs:44
   3:        0x10489414e - failure::backtrace::Backtrace::new::hd2d12f9079ece515
                        at /Users/garyyu/.cargo/registry/src/github.com-1ecc6299db9ec823/failure-0.1.1/src/backtrace/mod.rs:98
   4:        0x103f575c1 - <failure::context::Context<D>>::new::hf03281644574ad2f
                        at /Users/garyyu/.cargo/registry/src/github.com-1ecc6299db9ec823/failure-0.1.1/src/context.rs:68
   5:        0x103f6d51e - <grin_wallet::libwallet::error::Error as core::convert::From<grin_wallet::libwallet::error::ErrorKind>>::from::h5764ed80d36d8896
                        at wallet/src/libwallet/error.rs:164
   6:        0x103c7ec73 - grin_wallet::libwallet::internal::selection::select_send_tx::hd7e12ff2ad45c9ba
                        at /Users/garyyu/develop/projects/grin-t3/wallet/src/libwallet/internal/selection.rs:235
   7:        0x103c80059 - grin_wallet::libwallet::internal::selection::build_send_tx_slate::hfdc11d591b061819
                        at /Users/garyyu/develop/projects/grin-t3/wallet/src/libwallet/internal/selection.rs:52
   8:        0x103b104d3 - grin_wallet::libwallet::internal::tx::create_send_tx::hd16515e81103f3cf
                        at /Users/garyyu/develop/projects/grin-t3/wallet/src/libwallet/internal/tx.rs:90
   9:        0x103b89b86 - <grin_wallet::libwallet::api::APIOwner<W, C, K>>::issue_send_tx::h9a9e163a44c851c8
                        at /Users/garyyu/develop/projects/grin-t3/wallet/src/libwallet/api.rs:124
  10:        0x103af79e0 - grin::wallet_command::{{closure}}::h1399b1e12dcffa18
                        at src/bin/grin.rs:691
  11:        0x103b2ae8e - grin_wallet::libwallet::controller::owner_single_use::h0a3980251921eff9
                        at /Users/garyyu/develop/projects/grin-t3/wallet/src/libwallet/controller.rs:50
  12:        0x103ae9d7e - grin::wallet_command::hc9f80d9672426869
                        at src/bin/grin.rs:667
  13:        0x103ae6098 - grin::main::h03ee67e393d99244
                        at src/bin/grin.rs:369
  14:        0x103b85d11 - std::rt::lang_start::{{closure}}::h3463e90b8ac21d70
                        at /Users/travis/build/rust-lang/rust/src/libstd/rt.rs:74
  15:        0x104c0e537 - std::panicking::try::do_call::h189213549cc5f769
                        at libstd/panicking.rs:310
  16:        0x104c1a28e - ___rust_maybe_catch_panic
                        at libpanic_unwind/lib.rs:105
  17:        0x104bfd771 - std::rt::lang_start_internal::ha7b18db3fc20d103
                        at libstd/panicking.rs:289
  18:        0x103b85cf1 - std::rt::lang_start::h5dab25fd47d09cde
                        at /Users/travis/build/rust-lang/rust/src/libstd/rt.rs:74
  19:        0x103aea154 - _main

Not enough funds. Required: 5005000000, Available: 0 }
Jul 17 18:18:10.252 ERRO 
thread 'main' panicked at 'explicit panic': src/bin/grin.rs:721stack backtrace:
   0:        0x10489aed4 - backtrace::backtrace::trace::h494fcd58784656bc
                        at /Users/garyyu/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.9/src/backtrace/mod.rs:42
   1:        0x104895fbc - backtrace::capture::Backtrace::new_unresolved::h6c77e38011d2c811
                        at /Users/garyyu/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.9/src/capture.rs:88
   2:        0x104895f0e - backtrace::capture::Backtrace::new::h6075e6af7d68033a
                        at /Users/garyyu/.cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.9/src/capture.rs:63
   3:        0x10473f94c - grin_util::logger::send_panic_to_log::{{closure}}::h7b77d15bca82b7d4
                        at util/src/logger.rs:118
   4:        0x104c0eb24 - std::panicking::rust_panic_with_hook::hd069cce60c0084f5
                        at libstd/panicking.rs:467
   5:        0x10429f6e7 - std::panicking::begin_panic::h4fd1921d8a517773
                        at /Users/travis/build/rust-lang/rust/src/libstd/panicking.rs:397
   6:        0x103af810e - grin::wallet_command::{{closure}}::h1399b1e12dcffa18
                        at src/bin/grin.rs:721
   7:        0x103b2ae8e - grin_wallet::libwallet::controller::owner_single_use::h0a3980251921eff9
                        at /Users/garyyu/develop/projects/grin-t3/wallet/src/libwallet/controller.rs:50
   8:        0x103ae9d7e - grin::wallet_command::hc9f80d9672426869
                        at src/bin/grin.rs:667
   9:        0x103ae6098 - grin::main::h03ee67e393d99244
                        at src/bin/grin.rs:369
  10:        0x103b85d11 - std::rt::lang_start::{{closure}}::h3463e90b8ac21d70
                        at /Users/travis/build/rust-lang/rust/src/libstd/rt.rs:74
  11:        0x104c0e537 - std::panicking::try::do_call::h189213549cc5f769
                        at libstd/panicking.rs:310
  12:        0x104c1a28e - ___rust_maybe_catch_panic
                        at libpanic_unwind/lib.rs:105
  13:        0x104bfd771 - std::rt::lang_start_internal::ha7b18db3fc20d103
                        at libstd/panicking.rs:289
  14:        0x103b85cf1 - std::rt::lang_start::h5dab25fd47d09cde
                        at /Users/travis/build/rust-lang/rust/src/libstd/rt.rs:74
  15:        0x103aea154 - _main
quentinlesceller commented 6 years ago

This is deliberate any error during the send will result in a panic. https://github.com/mimblewimble/grin/blob/master/src/bin/grin.rs#L709

ignopeverell commented 6 years ago

Might be less scary and a clearer error message without RUST_BACKTRACE=1. I think we could generally do better with command line errors but that should be a separate issue.