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
Describe the bug
Using cli rusk-wallet, trying to shield a small amount of Dusk, I get reproducible crash with a stack failure.
To Reproduce
All command line with rusk-wallet.
Create a wallet with one profile.
Transfer some Dusk into it.
Don't use the wallet for a couple of weeks.
Start it up.
Make a second profile.
Transfer some Dusk from first to second profile.
Start it up and use the second profile.
Try to shield some of the Dusk in the second profile.
Crash with error and stack trace. Rusk error occurred: 500 Internal Server Error: this transaction is invalid Value spent larger than account holds
Note that the balance is almost double the amount trying to be shielded, so error message is confusing.
Start it up again.
Notice that it always seems to say [Waiting for Sync to complete..] even after waiting 5 hours.
Try to shield some Dusk in the second profile.
Same crash with stack trace.
From the terminal:
...
Public Balance - Total: 2.225
> What would you like to do? Convert Public Dusk to Shielded Dusk
> Introduce dusk amount for convert: 1.125 DUSK
> Introduce the gas limit for this transaction: 2000000000
> Introduce the gas price for this transaction: 1 LUX
Rusk error occurred: 500 Internal Server Error: this transaction is invalid Value spent larger than account holds
Stack backtrace:
0: anyhow::error::<impl anyhow::Error>::msg
1: rusk::node::vm::<impl node::vm::VMExecution for rusk::node::Rusk>::preverify
2: rusk::http::chain::<impl rusk::node::RuskNode>::handle_preverify::{{closure}}
3: rusk::http::chain::<impl rusk::http::HandleRequest for rusk::node::RuskNode>::handle_rues::{{closure}}
4: <rusk::http::DataSources as rusk::http::HandleRequest>::handle_rues::{{closure}}
5: rusk::http::handle_request_rues::{{closure}}
6: <rusk::http::ExecutionService<H> as hyper::service::service::Service<http::request::Request<hyper::body::incoming::Incoming>>>::call::{{closure}}
7: hyper::proto::h1::dispatch::Dispatcher<D,Bs,I,T>::poll_catch
8: <hyper::server::conn::http1::UpgradeableConnection<I,S> as core::future::future::Future>::poll
9: <hyper_util::server::conn::auto::UpgradeableConnection<I,S,E> as core::future::future::Future>::poll
10: rusk::http::listening_loop::{{closure}}::{{closure}}
11: tokio::runtime::task::core::Core<T,S>::poll
12: tokio::runtime::task::harness::Harness<T,S>::poll
13: tokio::runtime::scheduler::multi_thread::worker::Context::run_task
14: tokio::runtime::scheduler::multi_thread::worker::Context::run
15: tokio::runtime::context::runtime::enter_runtime
16: tokio::runtime::scheduler::multi_thread::worker::run
17: <tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll
18: tokio::runtime::task::core::Core<T,S>::poll
19: tokio::runtime::task::harness::Harness<T,S>::poll
20: tokio::runtime::blocking::pool::Inner::run
21: std::sys_common::backtrace::__rust_begin_short_backtrace
22: core::ops::function::FnOnce::call_once{{vtable.shim}}
23: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
at /rustc/0f44eb32f1123ac93ab404d74c295263ce468343/library/alloc/src/boxed.rs:2007:9
24: <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once
at /rustc/0f44eb32f1123ac93ab404d74c295263ce468343/library/alloc/src/boxed.rs:2007:9
25: std::sys::unix::thread::Thread::new::thread_start
at /rustc/0f44eb32f1123ac93ab404d74c295263ce468343/library/std/src/sys/unix/thread.rs:108:17
26: <unknown>
27: <unknown>
Expected behaviour
I would expect to be able to shield Dusk that shows in my public balance.
If the wallet knows it will be unable to complete the transaction, it should say what's wrong and how to fix it instead of crashing.
Platform
Fill as appropriate
Architecture: x64
OS: Linux
$ rusk-wallet --version rusk-wallet 0.1.0-rc.0
Additional context
The note from rusk-wallet about syncing is confusing. It let me do things, create a profile, and transfer Dusk between profiles... Not sure if that's a factor in the failure.
Update 1: See below that the failure occurs even after syncing is complete.
Update 2: See below: Now that I have been able to execute a shield transaction (after adding a further small amount to the public balance of profile 2), I'm guessing that there's a mismatch between various bits of logic that do checks prior to the transaction, and they somehow get tripped up on small balances...
The text was updated successfully, but these errors were encountered:
The rusk-wallet finally finished syncing (after about 6 hours). I restarted it and tried to shield some Dusk in profile 2. I get the same crash and stack trace.
By adding more Dusk to profile 2 I was able to shield as desired. The transaction used a fraction of a Dusk for gas, 0.025613175 DUSK. Not nearly enough to have drained the balance on the attempts that failed.
Describe the bug
Using cli rusk-wallet, trying to shield a small amount of Dusk, I get reproducible crash with a stack failure.
To Reproduce
All command line with
rusk-wallet
.Rusk error occurred: 500 Internal Server Error: this transaction is invalid Value spent larger than account holds
[Waiting for Sync to complete..]
even after waiting 5 hours.From the terminal:
Expected behaviour
I would expect to be able to shield Dusk that shows in my public balance.
If the wallet knows it will be unable to complete the transaction, it should say what's wrong and how to fix it instead of crashing.
Platform
Fill as appropriate
rusk-wallet --version rusk-wallet 0.1.0-rc.0
Additional context
The note from
rusk-wallet
about syncing is confusing. It let me do things, create a profile, and transfer Dusk between profiles... Not sure if that's a factor in the failure.Update 1: See below that the failure occurs even after syncing is complete.
Update 2: See below: Now that I have been able to execute a shield transaction (after adding a further small amount to the public balance of profile 2), I'm guessing that there's a mismatch between various bits of logic that do checks prior to the transaction, and they somehow get tripped up on small balances...
The text was updated successfully, but these errors were encountered: