openethereum / parity-ethereum

The fast, light, and robust client for Ethereum-like networks.
Other
6.82k stars 1.69k forks source link

Database error results in opaque UTF-8 encoding panic #1434

Closed gavofyork closed 8 years ago

gavofyork commented 8 years ago

Should provide a clear error message to user and exit gracefully.

C:\Users\schim\OneDrive\Documentos\GitHub\parity\target\release>parity.exe --geth
2016-06-25 09:45:17 Using a conversion rate of Ξ1 = US$14.27 (16685019000 wei/gas)
2016-06-25 09:45:17 Starting Parity/v1.3.0-unstable-a72d8ee-20160625/x86_64-windows-msvc/rustc1.9.0
2016-06-25 09:45:17 Configured for Frontier/Homestead using "Ethash" engine
2016-06-25 09:45:18 Public node URL: enode://c602f69626e00e9398bb4704d659a9ee7b1a5d1a0a513da0392bcb8c218476ceabc50ebf7548aaab75c504ae87f1577c23aa921091fa2c406a7b7e91e454b9b7@0.0.0.0:30303
#1768857 931a…0488      0 blk/s    0 tx/s   0 Mgas/s    0/ 2 peers   #1768857     0+    0 Qed     42 MiB db  379 KiB chain    2 KiB queue   10 KiB sync
#1768857 931a…0488      0 blk/s    0 tx/s   0 Mgas/s    0/ 1 peers   #1768857     0+    0 Qed     42 MiB db   11 KiB chain    2 KiB queue   10 KiB sync
#1768857 931a…0488      0 blk/s    0 tx/s   0 Mgas/s    0/ 2 peers   #1768857     0+    0 Qed     42 MiB db   11 KiB chain    2 KiB queue   10 KiB sync
#1768857 931a…0488      0 blk/s    0 tx/s   0 Mgas/s    0/ 2 peers   #1768857     0+    0 Qed     42 MiB db   11 KiB chain    2 KiB queue   10 KiB sync
#1768857 931a…0488      0 blk/s    0 tx/s   0 Mgas/s    0/ 2 peers   #1768857     0+    0 Qed     42 MiB db   11 KiB chain    2 KiB queue   10 KiB sync
#1768857 931a…0488      0 blk/s    0 tx/s   0 Mgas/s    0/ 2 peers   #1768857     0+    0 Qed     42 MiB db   11 KiB chain    2 KiB queue   10 KiB sync
thread 'IO Worker #3' panicked at 'called `Result::unwrap()` on an `Err` value: Utf8Error { valid_up_to: 117 }', ../src/libcore\result.rs:746
stack backtrace:
   0:     0x7ff71b540dcb - std::rt::lang_start::h5b0863080165c75e
   1:     0x7ff71b5401cb - std::rt::lang_start::h5b0863080165c75e
   2:     0x7ff71b524fdf - std::sys_common::unwind::begin_unwind_inner::h39d40f52add53ef7
   3:     0x7ff71b5260ed - std::sys_common::unwind::begin_unwind_fmt::h64c0ff793199cc1b
   4:     0x7ff71b53976b - rust_begin_unwind
   5:     0x7ff71b546fe5 - core::panicking::panic_fmt::h73bf9d7e8e891a73
   6:     0x7ff71b3ce651 - unwrap_failed<core::str::Utf8Error>
                        at C:\Users\schim\OneDrive\Documentos\GitHub\src\libcore\macros.rs:29
   7:     0x7ff71b3ce577 - error_message
                        at C:\Users\schim\OneDrive\Documentos\GitHub\src\libcore\result.rs:687
   8:     0x7ff71b3cdd06 - put
                        at C:\Users\schim\.cargo\git\checkouts\rust-rocksdb-6f16ff70b0a42fd9\master\src\rocksdb.rs:590
   9:     0x7ff71b322287 - put
                        at C:\Users\schim\OneDrive\Documentos\GitHub\parity\util\src\kvdb.rs:159
  10:     0x7ff71b161fbb - insert_block
                        at C:\Users\schim\OneDrive\Documentos\GitHub\parity\ethcore\src\blockchain\blockchain.rs:445
  11:     0x7ff71b157f3f - import_verified_blocks
                        at C:\Users\schim\OneDrive\Documentos\GitHub\parity\ethcore\src\client\client.rs:322
  12:     0x7ff71b1520a9 - message
                        at C:\Users\schim\OneDrive\Documentos\GitHub\parity\ethcore\src\service.rs:139
  13:     0x7ff71b123541 - try_fn<closure>
                        at C:\Users\schim\OneDrive\Documentos\GitHub\parity\util\src\io\worker.rs:115
  14:     0x7ff71b5396d8 - std::sys_common::unwind::inner_try::h9eebd8dc83f388a6
  15:     0x7ff71b539682 - std::sys_common::unwind::inner_try::h9eebd8dc83f388a6
  16:     0x7ff71b124b2c - call_box
                        at C:\Users\schim\OneDrive\Documentos\GitHub\src\libstd\sys\common\unwind\mod.rs:123
  17:     0x7ff71b53e94b - std::sys::thread::Thread::new::h0ce8c68d6db7e3f8
  18:     0x7fffee6c8101 - BaseThreadInitThunk
edwardw commented 8 years ago

A upstream bug? More specifically, rust-rocksdb/error_message should guard against a possible Utf8Error returned from from_utf8 call.

arkpar commented 8 years ago

Looks like. We use our own fork of rust-rocksdb though

arkpar commented 8 years ago

Fixed in #1461, https://github.com/ethcore/rust-rocksdb/commit/5c61d5084117a0c45bc198b7ab9771f5f61f3135