dermesser / leveldb-rs

A reimplementation of LevelDB in Rust (no bindings).
Other
515 stars 60 forks source link

"attempt to subtract with overflow" panic in `DB::open` #24

Open Sword-Smith opened 1 year ago

Sword-Smith commented 1 year ago
thread 'main' panicked at 'attempt to subtract with overflow', /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/rusty-leveldb-1.0.6/src/log.rs:151:16
stack backtrace:
   0: rust_begin_unwind
             at /rustc/84c898d65adf2f39a5a98507f1fe0ce10a2b8dbc/library/std/src/panicking.rs:579:5
   1: core::panicking::panic_fmt
             at /rustc/84c898d65adf2f39a5a98507f1fe0ce10a2b8dbc/library/core/src/panicking.rs:64:14
   2: core::panicking::panic
             at /rustc/84c898d65adf2f39a5a98507f1fe0ce10a2b8dbc/library/core/src/panicking.rs:114:5
   3: rusty_leveldb::log::LogReader<R>::read
             at /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/rusty-leveldb-1.0.6/src/log.rs:151:16
   4: rusty_leveldb::version_set::VersionSet::recover
             at /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/rusty-leveldb-1.0.6/src/version_set.rs:585:34
   5: rusty_leveldb::db_impl::DB::recover
             at /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/rusty-leveldb-1.0.6/src/db_impl.rs:180:33
   6: rusty_leveldb::db_impl::DB::open
             at /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/rusty-leveldb-1.0.6/src/db_impl.rs:115:29
Sword-Smith commented 1 year ago

Added some debugging output to log::LogReader::read

/// EOF is signalled by Ok(0)
    pub fn read(&mut self, dst: &mut Vec<u8>) -> Result<usize> {
        let mut checksum: u32;
        let mut length: u16;
        let mut typ: u8;
        let mut dst_offset: usize = 0;

        dst.clear();

        loop {
            println!("self.blocksize = {}", self.blocksize);
            println!("self.blk_off = {}", self.blk_off);
            if self.blocksize - self.blk_off < HEADER_SIZE {
                // skip to next block
                self.src
                    .read_exact(&mut self.head_scratch[0..self.blocksize - self.blk_off])?;
                self.blk_off = 0;
            }

            let mut bytes_read = self.src.read(&mut self.head_scratch)?;

            // EOF
            if bytes_read == 0 {
                return Ok(0);
            }
            ...

Output

self.blocksize = 32768
self.blk_off = 0
self.blocksize = 32768
self.blk_off = 41
self.blocksize = 32768
self.blk_off = 94
self.blocksize = 32768
self.blk_off = 147
self.blocksize = 32768
self.blk_off = 200
self.blocksize = 32768
self.blk_off = 253
self.blocksize = 32768
self.blk_off = 306
self.blocksize = 32768
self.blk_off = 359
self.blocksize = 32768
self.blk_off = 412
self.blocksize = 32768
self.blk_off = 465
self.blocksize = 32768
self.blk_off = 518
self.blocksize = 32768
self.blk_off = 572
self.blocksize = 32768
self.blk_off = 626
self.blocksize = 32768
self.blk_off = 680
self.blocksize = 32768
self.blk_off = 734
self.blocksize = 32768
self.blk_off = 788
self.blocksize = 32768
self.blk_off = 842
self.blocksize = 32768
self.blk_off = 896
self.blocksize = 32768
self.blk_off = 950
self.blocksize = 32768
self.blk_off = 1004
self.blocksize = 32768
self.blk_off = 1058
self.blocksize = 32768
self.blk_off = 1112
self.blocksize = 32768
self.blk_off = 1166
self.blocksize = 32768
self.blk_off = 1220
self.blocksize = 32768
self.blk_off = 1274
self.blocksize = 32768
self.blk_off = 1328
self.blocksize = 32768
self.blk_off = 1382
self.blocksize = 32768
self.blk_off = 1436
self.blocksize = 32768
self.blk_off = 1490
self.blocksize = 32768
self.blk_off = 1544
self.blocksize = 32768
self.blk_off = 1598
self.blocksize = 32768
self.blk_off = 1652
self.blocksize = 32768
self.blk_off = 1706
self.blocksize = 32768
self.blk_off = 1760
self.blocksize = 32768
self.blk_off = 1814
self.blocksize = 32768
self.blk_off = 1868
self.blocksize = 32768
self.blk_off = 1922
self.blocksize = 32768
self.blk_off = 1976
self.blocksize = 32768
self.blk_off = 2030
self.blocksize = 32768
self.blk_off = 2084
self.blocksize = 32768
self.blk_off = 2138
self.blocksize = 32768
self.blk_off = 2192
self.blocksize = 32768
self.blk_off = 2246
self.blocksize = 32768
self.blk_off = 2300
self.blocksize = 32768
self.blk_off = 2354
self.blocksize = 32768
self.blk_off = 2408
self.blocksize = 32768
self.blk_off = 2462
self.blocksize = 32768
self.blk_off = 2516
self.blocksize = 32768
self.blk_off = 2570
self.blocksize = 32768
self.blk_off = 2624
self.blocksize = 32768
self.blk_off = 2678
self.blocksize = 32768
self.blk_off = 2732
self.blocksize = 32768
self.blk_off = 2786
self.blocksize = 32768
self.blk_off = 2840
self.blocksize = 32768
self.blk_off = 2894
self.blocksize = 32768
self.blk_off = 2948
self.blocksize = 32768
self.blk_off = 3002
self.blocksize = 32768
self.blk_off = 3056
self.blocksize = 32768
self.blk_off = 3110
self.blocksize = 32768
self.blk_off = 3164
self.blocksize = 32768
self.blk_off = 3218
self.blocksize = 32768
self.blk_off = 3272
self.blocksize = 32768
self.blk_off = 3328
self.blocksize = 32768
self.blk_off = 3385
self.blocksize = 32768
self.blk_off = 3442
self.blocksize = 32768
self.blk_off = 3499
self.blocksize = 32768
self.blk_off = 3556
self.blocksize = 32768
self.blk_off = 3613
self.blocksize = 32768
self.blk_off = 3670
self.blocksize = 32768
self.blk_off = 3727
self.blocksize = 32768
self.blk_off = 3784
self.blocksize = 32768
self.blk_off = 3841
self.blocksize = 32768
self.blk_off = 3898
self.blocksize = 32768
self.blk_off = 3955
self.blocksize = 32768
self.blk_off = 4012
self.blocksize = 32768
self.blk_off = 4069
self.blocksize = 32768
self.blk_off = 4126
self.blocksize = 32768
self.blk_off = 4183
self.blocksize = 32768
self.blk_off = 4240
self.blocksize = 32768
self.blk_off = 4297
self.blocksize = 32768
self.blk_off = 4354
self.blocksize = 32768
self.blk_off = 4411
self.blocksize = 32768
self.blk_off = 4468
self.blocksize = 32768
self.blk_off = 4525
self.blocksize = 32768
self.blk_off = 4582
self.blocksize = 32768
self.blk_off = 4639
self.blocksize = 32768
self.blk_off = 4696
self.blocksize = 32768
self.blk_off = 4753
self.blocksize = 32768
self.blk_off = 4810
self.blocksize = 32768
self.blk_off = 4867
self.blocksize = 32768
self.blk_off = 4924
self.blocksize = 32768
self.blk_off = 4981
self.blocksize = 32768
self.blk_off = 5038
self.blocksize = 32768
self.blk_off = 5095
self.blocksize = 32768
self.blk_off = 5152
self.blocksize = 32768
self.blk_off = 5209
self.blocksize = 32768
self.blk_off = 5266
self.blocksize = 32768
self.blk_off = 5323
self.blocksize = 32768
self.blk_off = 5380
self.blocksize = 32768
self.blk_off = 5437
self.blocksize = 32768
self.blk_off = 5494
self.blocksize = 32768
self.blk_off = 5551
self.blocksize = 32768
self.blk_off = 5608
self.blocksize = 32768
self.blk_off = 5665
self.blocksize = 32768
self.blk_off = 5722
self.blocksize = 32768
self.blk_off = 5779
self.blocksize = 32768
self.blk_off = 5836
self.blocksize = 32768
self.blk_off = 5893
self.blocksize = 32768
self.blk_off = 5950
self.blocksize = 32768
self.blk_off = 6007
self.blocksize = 32768
self.blk_off = 6064
self.blocksize = 32768
self.blk_off = 6121
self.blocksize = 32768
self.blk_off = 6178
self.blocksize = 32768
self.blk_off = 6235
self.blocksize = 32768
self.blk_off = 6292
self.blocksize = 32768
self.blk_off = 6349
self.blocksize = 32768
self.blk_off = 6406
self.blocksize = 32768
self.blk_off = 6463
self.blocksize = 32768
self.blk_off = 6520
self.blocksize = 32768
self.blk_off = 6577
self.blocksize = 32768
self.blk_off = 6634
self.blocksize = 32768
self.blk_off = 6691
self.blocksize = 32768
self.blk_off = 6748
self.blocksize = 32768
self.blk_off = 6805
self.blocksize = 32768
self.blk_off = 6862
self.blocksize = 32768
self.blk_off = 6919
self.blocksize = 32768
self.blk_off = 6976
self.blocksize = 32768
self.blk_off = 7033
self.blocksize = 32768
self.blk_off = 7090
self.blocksize = 32768
self.blk_off = 7147
self.blocksize = 32768
self.blk_off = 7204
self.blocksize = 32768
self.blk_off = 7261
self.blocksize = 32768
self.blk_off = 7318
self.blocksize = 32768
self.blk_off = 7375
self.blocksize = 32768
self.blk_off = 7432
self.blocksize = 32768
self.blk_off = 7489
self.blocksize = 32768
self.blk_off = 7546
self.blocksize = 32768
self.blk_off = 7603
self.blocksize = 32768
self.blk_off = 7660
self.blocksize = 32768
self.blk_off = 7717
self.blocksize = 32768
self.blk_off = 7774
self.blocksize = 32768
self.blk_off = 7831
self.blocksize = 32768
self.blk_off = 7888
self.blocksize = 32768
self.blk_off = 7945
self.blocksize = 32768
self.blk_off = 8002
self.blocksize = 32768
self.blk_off = 8059
self.blocksize = 32768
self.blk_off = 8116
self.blocksize = 32768
self.blk_off = 8173
self.blocksize = 32768
self.blk_off = 8230
self.blocksize = 32768
self.blk_off = 8287
self.blocksize = 32768
self.blk_off = 8344
self.blocksize = 32768
self.blk_off = 8401
self.blocksize = 32768
self.blk_off = 8458
self.blocksize = 32768
self.blk_off = 8515
self.blocksize = 32768
self.blk_off = 8572
self.blocksize = 32768
self.blk_off = 8629
self.blocksize = 32768
self.blk_off = 8686
self.blocksize = 32768
self.blk_off = 8743
self.blocksize = 32768
self.blk_off = 8800
self.blocksize = 32768
self.blk_off = 8857
self.blocksize = 32768
self.blk_off = 8914
self.blocksize = 32768
self.blk_off = 8971
self.blocksize = 32768
self.blk_off = 9028
self.blocksize = 32768
self.blk_off = 9085
self.blocksize = 32768
self.blk_off = 9142
self.blocksize = 32768
self.blk_off = 9199
self.blocksize = 32768
self.blk_off = 9256
self.blocksize = 32768
self.blk_off = 9313
self.blocksize = 32768
self.blk_off = 9370
self.blocksize = 32768
self.blk_off = 9427
self.blocksize = 32768
self.blk_off = 9484
self.blocksize = 32768
self.blk_off = 9541
self.blocksize = 32768
self.blk_off = 9598
self.blocksize = 32768
self.blk_off = 9655
self.blocksize = 32768
self.blk_off = 9712
self.blocksize = 32768
self.blk_off = 9769
self.blocksize = 32768
self.blk_off = 9826
self.blocksize = 32768
self.blk_off = 9883
self.blocksize = 32768
self.blk_off = 9940
self.blocksize = 32768
self.blk_off = 9997
self.blocksize = 32768
self.blk_off = 10054
self.blocksize = 32768
self.blk_off = 10111
self.blocksize = 32768
self.blk_off = 10168
self.blocksize = 32768
self.blk_off = 10225
self.blocksize = 32768
self.blk_off = 10282
self.blocksize = 32768
self.blk_off = 10339
self.blocksize = 32768
self.blk_off = 10396
self.blocksize = 32768
self.blk_off = 10453
self.blocksize = 32768
self.blk_off = 10510
self.blocksize = 32768
self.blk_off = 10567
self.blocksize = 32768
self.blk_off = 10624
self.blocksize = 32768
self.blk_off = 10681
self.blocksize = 32768
self.blk_off = 10738
self.blocksize = 32768
self.blk_off = 10795
self.blocksize = 32768
self.blk_off = 10852
self.blocksize = 32768
self.blk_off = 10909
self.blocksize = 32768
self.blk_off = 10966
self.blocksize = 32768
self.blk_off = 11023
self.blocksize = 32768
self.blk_off = 11080
self.blocksize = 32768
self.blk_off = 11137
self.blocksize = 32768
self.blk_off = 11194
self.blocksize = 32768
self.blk_off = 11251
self.blocksize = 32768
self.blk_off = 11308
self.blocksize = 32768
self.blk_off = 11365
self.blocksize = 32768
self.blk_off = 11422
self.blocksize = 32768
self.blk_off = 11479
self.blocksize = 32768
self.blk_off = 11536
self.blocksize = 32768
self.blk_off = 11593
self.blocksize = 32768
self.blk_off = 11650
self.blocksize = 32768
self.blk_off = 11707
self.blocksize = 32768
self.blk_off = 11764
self.blocksize = 32768
self.blk_off = 11821
self.blocksize = 32768
self.blk_off = 11878
self.blocksize = 32768
self.blk_off = 11935
self.blocksize = 32768
self.blk_off = 11992
self.blocksize = 32768
self.blk_off = 12049
self.blocksize = 32768
self.blk_off = 12106
self.blocksize = 32768
self.blk_off = 12163
self.blocksize = 32768
self.blk_off = 12220
self.blocksize = 32768
self.blk_off = 12277
self.blocksize = 32768
self.blk_off = 12334
self.blocksize = 32768
self.blk_off = 12391
self.blocksize = 32768
self.blk_off = 12448
self.blocksize = 32768
self.blk_off = 12505
self.blocksize = 32768
self.blk_off = 12562
self.blocksize = 32768
self.blk_off = 12619
self.blocksize = 32768
self.blk_off = 12676
self.blocksize = 32768
self.blk_off = 12733
self.blocksize = 32768
self.blk_off = 12790
self.blocksize = 32768
self.blk_off = 12847
self.blocksize = 32768
self.blk_off = 12904
self.blocksize = 32768
self.blk_off = 12961
self.blocksize = 32768
self.blk_off = 13018
self.blocksize = 32768
self.blk_off = 13075
self.blocksize = 32768
self.blk_off = 13132
self.blocksize = 32768
self.blk_off = 13189
self.blocksize = 32768
self.blk_off = 13246
self.blocksize = 32768
self.blk_off = 13303
self.blocksize = 32768
self.blk_off = 13360
self.blocksize = 32768
self.blk_off = 13417
self.blocksize = 32768
self.blk_off = 13474
self.blocksize = 32768
self.blk_off = 13531
self.blocksize = 32768
self.blk_off = 13588
self.blocksize = 32768
self.blk_off = 13645
self.blocksize = 32768
self.blk_off = 13702
self.blocksize = 32768
self.blk_off = 13759
self.blocksize = 32768
self.blk_off = 13816
self.blocksize = 32768
self.blk_off = 13873
self.blocksize = 32768
self.blk_off = 13930
self.blocksize = 32768
self.blk_off = 13987
self.blocksize = 32768
self.blk_off = 14044
self.blocksize = 32768
self.blk_off = 14101
self.blocksize = 32768
self.blk_off = 14158
self.blocksize = 32768
self.blk_off = 14215
self.blocksize = 32768
self.blk_off = 14272
self.blocksize = 32768
self.blk_off = 14329
self.blocksize = 32768
self.blk_off = 14386
self.blocksize = 32768
self.blk_off = 14443
self.blocksize = 32768
self.blk_off = 14500
self.blocksize = 32768
self.blk_off = 14557
self.blocksize = 32768
self.blk_off = 14614
self.blocksize = 32768
self.blk_off = 14671
self.blocksize = 32768
self.blk_off = 14728
self.blocksize = 32768
self.blk_off = 14785
self.blocksize = 32768
self.blk_off = 14842
self.blocksize = 32768
self.blk_off = 14899
self.blocksize = 32768
self.blk_off = 14956
self.blocksize = 32768
self.blk_off = 15013
self.blocksize = 32768
self.blk_off = 15070
self.blocksize = 32768
self.blk_off = 15127
self.blocksize = 32768
self.blk_off = 15184
self.blocksize = 32768
self.blk_off = 15241
self.blocksize = 32768
self.blk_off = 15298
self.blocksize = 32768
self.blk_off = 15355
self.blocksize = 32768
self.blk_off = 15412
self.blocksize = 32768
self.blk_off = 15469
self.blocksize = 32768
self.blk_off = 15526
self.blocksize = 32768
self.blk_off = 15583
self.blocksize = 32768
self.blk_off = 15640
self.blocksize = 32768
self.blk_off = 15697
self.blocksize = 32768
self.blk_off = 15754
self.blocksize = 32768
self.blk_off = 15811
self.blocksize = 32768
self.blk_off = 15868
self.blocksize = 32768
self.blk_off = 15925
self.blocksize = 32768
self.blk_off = 15982
self.blocksize = 32768
self.blk_off = 16039
self.blocksize = 32768
self.blk_off = 16096
self.blocksize = 32768
self.blk_off = 16153
self.blocksize = 32768
self.blk_off = 16210
self.blocksize = 32768
self.blk_off = 16267
self.blocksize = 32768
self.blk_off = 16324
self.blocksize = 32768
self.blk_off = 16381
self.blocksize = 32768
self.blk_off = 16438
self.blocksize = 32768
self.blk_off = 16495
self.blocksize = 32768
self.blk_off = 16552
self.blocksize = 32768
self.blk_off = 16609
self.blocksize = 32768
self.blk_off = 16666
self.blocksize = 32768
self.blk_off = 16723
self.blocksize = 32768
self.blk_off = 16780
self.blocksize = 32768
self.blk_off = 16837
self.blocksize = 32768
self.blk_off = 16894
self.blocksize = 32768
self.blk_off = 16951
self.blocksize = 32768
self.blk_off = 17008
self.blocksize = 32768
self.blk_off = 17065
self.blocksize = 32768
self.blk_off = 17122
self.blocksize = 32768
self.blk_off = 17179
self.blocksize = 32768
self.blk_off = 17236
self.blocksize = 32768
self.blk_off = 17293
self.blocksize = 32768
self.blk_off = 17350
self.blocksize = 32768
self.blk_off = 17407
self.blocksize = 32768
self.blk_off = 17464
self.blocksize = 32768
self.blk_off = 17521
self.blocksize = 32768
self.blk_off = 17578
self.blocksize = 32768
self.blk_off = 17635
self.blocksize = 32768
self.blk_off = 17692
self.blocksize = 32768
self.blk_off = 17749
self.blocksize = 32768
self.blk_off = 17806
self.blocksize = 32768
self.blk_off = 17863
self.blocksize = 32768
self.blk_off = 17920
self.blocksize = 32768
self.blk_off = 17977
self.blocksize = 32768
self.blk_off = 18034
self.blocksize = 32768
self.blk_off = 18091
self.blocksize = 32768
self.blk_off = 18148
self.blocksize = 32768
self.blk_off = 18205
self.blocksize = 32768
self.blk_off = 18262
self.blocksize = 32768
self.blk_off = 18319
self.blocksize = 32768
self.blk_off = 18376
self.blocksize = 32768
self.blk_off = 18433
self.blocksize = 32768
self.blk_off = 18490
self.blocksize = 32768
self.blk_off = 18547
self.blocksize = 32768
self.blk_off = 18604
self.blocksize = 32768
self.blk_off = 18661
self.blocksize = 32768
self.blk_off = 18718
self.blocksize = 32768
self.blk_off = 18775
self.blocksize = 32768
self.blk_off = 18832
self.blocksize = 32768
self.blk_off = 18889
self.blocksize = 32768
self.blk_off = 18946
self.blocksize = 32768
self.blk_off = 19003
self.blocksize = 32768
self.blk_off = 19060
self.blocksize = 32768
self.blk_off = 19117
self.blocksize = 32768
self.blk_off = 19174
self.blocksize = 32768
self.blk_off = 19231
self.blocksize = 32768
self.blk_off = 19288
self.blocksize = 32768
self.blk_off = 19345
self.blocksize = 32768
self.blk_off = 19402
self.blocksize = 32768
self.blk_off = 19459
self.blocksize = 32768
self.blk_off = 19516
self.blocksize = 32768
self.blk_off = 19573
self.blocksize = 32768
self.blk_off = 19630
self.blocksize = 32768
self.blk_off = 19687
self.blocksize = 32768
self.blk_off = 19744
self.blocksize = 32768
self.blk_off = 19801
self.blocksize = 32768
self.blk_off = 19858
self.blocksize = 32768
self.blk_off = 19915
self.blocksize = 32768
self.blk_off = 19972
self.blocksize = 32768
self.blk_off = 20029
self.blocksize = 32768
self.blk_off = 20086
self.blocksize = 32768
self.blk_off = 20143
self.blocksize = 32768
self.blk_off = 20200
self.blocksize = 32768
self.blk_off = 20257
self.blocksize = 32768
self.blk_off = 20314
self.blocksize = 32768
self.blk_off = 20371
self.blocksize = 32768
self.blk_off = 20428
self.blocksize = 32768
self.blk_off = 20485
self.blocksize = 32768
self.blk_off = 20542
self.blocksize = 32768
self.blk_off = 20599
self.blocksize = 32768
self.blk_off = 20656
self.blocksize = 32768
self.blk_off = 20713
self.blocksize = 32768
self.blk_off = 20770
self.blocksize = 32768
self.blk_off = 20827
self.blocksize = 32768
self.blk_off = 20884
self.blocksize = 32768
self.blk_off = 20941
self.blocksize = 32768
self.blk_off = 20998
self.blocksize = 32768
self.blk_off = 21055
self.blocksize = 32768
self.blk_off = 21112
self.blocksize = 32768
self.blk_off = 21169
self.blocksize = 32768
self.blk_off = 21226
self.blocksize = 32768
self.blk_off = 21283
self.blocksize = 32768
self.blk_off = 21340
self.blocksize = 32768
self.blk_off = 21397
self.blocksize = 32768
self.blk_off = 21454
self.blocksize = 32768
self.blk_off = 21511
self.blocksize = 32768
self.blk_off = 21568
self.blocksize = 32768
self.blk_off = 21625
self.blocksize = 32768
self.blk_off = 21682
self.blocksize = 32768
self.blk_off = 21739
self.blocksize = 32768
self.blk_off = 21796
self.blocksize = 32768
self.blk_off = 21853
self.blocksize = 32768
self.blk_off = 21910
self.blocksize = 32768
self.blk_off = 21967
self.blocksize = 32768
self.blk_off = 22024
self.blocksize = 32768
self.blk_off = 22081
self.blocksize = 32768
self.blk_off = 22138
self.blocksize = 32768
self.blk_off = 22195
self.blocksize = 32768
self.blk_off = 22252
self.blocksize = 32768
self.blk_off = 22309
self.blocksize = 32768
self.blk_off = 22366
self.blocksize = 32768
self.blk_off = 22423
self.blocksize = 32768
self.blk_off = 22480
self.blocksize = 32768
self.blk_off = 22537
self.blocksize = 32768
self.blk_off = 22594
self.blocksize = 32768
self.blk_off = 22651
self.blocksize = 32768
self.blk_off = 22708
self.blocksize = 32768
self.blk_off = 22765
self.blocksize = 32768
self.blk_off = 22822
self.blocksize = 32768
self.blk_off = 22879
self.blocksize = 32768
self.blk_off = 22936
self.blocksize = 32768
self.blk_off = 22993
self.blocksize = 32768
self.blk_off = 23050
self.blocksize = 32768
self.blk_off = 23107
self.blocksize = 32768
self.blk_off = 23164
self.blocksize = 32768
self.blk_off = 23221
self.blocksize = 32768
self.blk_off = 23278
self.blocksize = 32768
self.blk_off = 23335
self.blocksize = 32768
self.blk_off = 23392
self.blocksize = 32768
self.blk_off = 23449
self.blocksize = 32768
self.blk_off = 23506
self.blocksize = 32768
self.blk_off = 23563
self.blocksize = 32768
self.blk_off = 23620
self.blocksize = 32768
self.blk_off = 23677
self.blocksize = 32768
self.blk_off = 23734
self.blocksize = 32768
self.blk_off = 23791
self.blocksize = 32768
self.blk_off = 23848
self.blocksize = 32768
self.blk_off = 23905
self.blocksize = 32768
self.blk_off = 23962
self.blocksize = 32768
self.blk_off = 24019
self.blocksize = 32768
self.blk_off = 24076
self.blocksize = 32768
self.blk_off = 24133
self.blocksize = 32768
self.blk_off = 24190
self.blocksize = 32768
self.blk_off = 24247
self.blocksize = 32768
self.blk_off = 24304
self.blocksize = 32768
self.blk_off = 24361
self.blocksize = 32768
self.blk_off = 24418
self.blocksize = 32768
self.blk_off = 24475
self.blocksize = 32768
self.blk_off = 24532
self.blocksize = 32768
self.blk_off = 24589
self.blocksize = 32768
self.blk_off = 24646
self.blocksize = 32768
self.blk_off = 24703
self.blocksize = 32768
self.blk_off = 24760
self.blocksize = 32768
self.blk_off = 24817
self.blocksize = 32768
self.blk_off = 24874
self.blocksize = 32768
self.blk_off = 24931
self.blocksize = 32768
self.blk_off = 24988
self.blocksize = 32768
self.blk_off = 25045
self.blocksize = 32768
self.blk_off = 25102
self.blocksize = 32768
self.blk_off = 25159
self.blocksize = 32768
self.blk_off = 25216
self.blocksize = 32768
self.blk_off = 25273
self.blocksize = 32768
self.blk_off = 25330
self.blocksize = 32768
self.blk_off = 25387
self.blocksize = 32768
self.blk_off = 25444
self.blocksize = 32768
self.blk_off = 25501
self.blocksize = 32768
self.blk_off = 25558
self.blocksize = 32768
self.blk_off = 25615
self.blocksize = 32768
self.blk_off = 25672
self.blocksize = 32768
self.blk_off = 25729
self.blocksize = 32768
self.blk_off = 25786
self.blocksize = 32768
self.blk_off = 25843
self.blocksize = 32768
self.blk_off = 25900
self.blocksize = 32768
self.blk_off = 25957
self.blocksize = 32768
self.blk_off = 26014
self.blocksize = 32768
self.blk_off = 26071
self.blocksize = 32768
self.blk_off = 26128
self.blocksize = 32768
self.blk_off = 26185
self.blocksize = 32768
self.blk_off = 26242
self.blocksize = 32768
self.blk_off = 26299
self.blocksize = 32768
self.blk_off = 26356
self.blocksize = 32768
self.blk_off = 26413
self.blocksize = 32768
self.blk_off = 26470
self.blocksize = 32768
self.blk_off = 26527
self.blocksize = 32768
self.blk_off = 26584
self.blocksize = 32768
self.blk_off = 26641
self.blocksize = 32768
self.blk_off = 26698
self.blocksize = 32768
self.blk_off = 26755
self.blocksize = 32768
self.blk_off = 26812
self.blocksize = 32768
self.blk_off = 26869
self.blocksize = 32768
self.blk_off = 26926
self.blocksize = 32768
self.blk_off = 26983
self.blocksize = 32768
self.blk_off = 27040
self.blocksize = 32768
self.blk_off = 27097
self.blocksize = 32768
self.blk_off = 27154
self.blocksize = 32768
self.blk_off = 27211
self.blocksize = 32768
self.blk_off = 27268
self.blocksize = 32768
self.blk_off = 27325
self.blocksize = 32768
self.blk_off = 27382
self.blocksize = 32768
self.blk_off = 27439
self.blocksize = 32768
self.blk_off = 27496
self.blocksize = 32768
self.blk_off = 27553
self.blocksize = 32768
self.blk_off = 27610
self.blocksize = 32768
self.blk_off = 27667
self.blocksize = 32768
self.blk_off = 27724
self.blocksize = 32768
self.blk_off = 27781
self.blocksize = 32768
self.blk_off = 27838
self.blocksize = 32768
self.blk_off = 27895
self.blocksize = 32768
self.blk_off = 27952
self.blocksize = 32768
self.blk_off = 28009
self.blocksize = 32768
self.blk_off = 28066
self.blocksize = 32768
self.blk_off = 28123
self.blocksize = 32768
self.blk_off = 28180
self.blocksize = 32768
self.blk_off = 28237
self.blocksize = 32768
self.blk_off = 28294
self.blocksize = 32768
self.blk_off = 28351
self.blocksize = 32768
self.blk_off = 28408
self.blocksize = 32768
self.blk_off = 28465
self.blocksize = 32768
self.blk_off = 28522
self.blocksize = 32768
self.blk_off = 28579
self.blocksize = 32768
self.blk_off = 28636
self.blocksize = 32768
self.blk_off = 28693
self.blocksize = 32768
self.blk_off = 28750
self.blocksize = 32768
self.blk_off = 28807
self.blocksize = 32768
self.blk_off = 28864
self.blocksize = 32768
self.blk_off = 28921
self.blocksize = 32768
self.blk_off = 28978
self.blocksize = 32768
self.blk_off = 29035
self.blocksize = 32768
self.blk_off = 29092
self.blocksize = 32768
self.blk_off = 29149
self.blocksize = 32768
self.blk_off = 29206
self.blocksize = 32768
self.blk_off = 29263
self.blocksize = 32768
self.blk_off = 29320
self.blocksize = 32768
self.blk_off = 29377
self.blocksize = 32768
self.blk_off = 29434
self.blocksize = 32768
self.blk_off = 29491
self.blocksize = 32768
self.blk_off = 29548
self.blocksize = 32768
self.blk_off = 29605
self.blocksize = 32768
self.blk_off = 29662
self.blocksize = 32768
self.blk_off = 29719
self.blocksize = 32768
self.blk_off = 29776
self.blocksize = 32768
self.blk_off = 29833
self.blocksize = 32768
self.blk_off = 29890
self.blocksize = 32768
self.blk_off = 29947
self.blocksize = 32768
self.blk_off = 30004
self.blocksize = 32768
self.blk_off = 30061
self.blocksize = 32768
self.blk_off = 30118
self.blocksize = 32768
self.blk_off = 30175
self.blocksize = 32768
self.blk_off = 30232
self.blocksize = 32768
self.blk_off = 30289
self.blocksize = 32768
self.blk_off = 30346
self.blocksize = 32768
self.blk_off = 30403
self.blocksize = 32768
self.blk_off = 30460
self.blocksize = 32768
self.blk_off = 30517
self.blocksize = 32768
self.blk_off = 30574
self.blocksize = 32768
self.blk_off = 30631
self.blocksize = 32768
self.blk_off = 30688
self.blocksize = 32768
self.blk_off = 30745
self.blocksize = 32768
self.blk_off = 30802
self.blocksize = 32768
self.blk_off = 30859
self.blocksize = 32768
self.blk_off = 30916
self.blocksize = 32768
self.blk_off = 30973
self.blocksize = 32768
self.blk_off = 31030
self.blocksize = 32768
self.blk_off = 31087
self.blocksize = 32768
self.blk_off = 31144
self.blocksize = 32768
self.blk_off = 31201
self.blocksize = 32768
self.blk_off = 31258
self.blocksize = 32768
self.blk_off = 31315
self.blocksize = 32768
self.blk_off = 31372
self.blocksize = 32768
self.blk_off = 31429
self.blocksize = 32768
self.blk_off = 31486
self.blocksize = 32768
self.blk_off = 31543
self.blocksize = 32768
self.blk_off = 31600
self.blocksize = 32768
self.blk_off = 31657
self.blocksize = 32768
self.blk_off = 31714
self.blocksize = 32768
self.blk_off = 31771
self.blocksize = 32768
self.blk_off = 31828
self.blocksize = 32768
self.blk_off = 31885
self.blocksize = 32768
self.blk_off = 31942
self.blocksize = 32768
self.blk_off = 31999
self.blocksize = 32768
self.blk_off = 32056
self.blocksize = 32768
self.blk_off = 32113
self.blocksize = 32768
self.blk_off = 32170
self.blocksize = 32768
self.blk_off = 32227
self.blocksize = 32768
self.blk_off = 32284
self.blocksize = 32768
self.blk_off = 32341
self.blocksize = 32768
self.blk_off = 32398
self.blocksize = 32768
self.blk_off = 32455
self.blocksize = 32768
self.blk_off = 32512
self.blocksize = 32768
self.blk_off = 32569
self.blocksize = 32768
self.blk_off = 32626
self.blocksize = 32768
self.blk_off = 32683
self.blocksize = 32768
self.blk_off = 32740
self.blocksize = 32768
self.blk_off = 32797
thread 'main' panicked at 'attempt to subtract with overflow', /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/rusty-leveldb-1.0.6/src/log.rs:153:16
stack backtrace:
   0: rust_begin_unwind
             at /rustc/84c898d65adf2f39a5a98507f1fe0ce10a2b8dbc/library/std/src/panicking.rs:579:5
   1: core::panicking::panic_fmt
             at /rustc/84c898d65adf2f39a5a98507f1fe0ce10a2b8dbc/library/core/src/panicking.rs:64:14
   2: core::panicking::panic
             at /rustc/84c898d65adf2f39a5a98507f1fe0ce10a2b8dbc/library/core/src/panicking.rs:114:5
   3: rusty_leveldb::log::LogReader<R>::read
             at /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/rusty-leveldb-1.0.6/src/log.rs:153:16
   4: rusty_leveldb::version_set::VersionSet::recover
             at /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/rusty-leveldb-1.0.6/src/version_set.rs:585:34
   5: rusty_leveldb::db_impl::DB::recover
             at /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/rusty-leveldb-1.0.6/src/db_impl.rs:180:33
   6: rusty_leveldb::db_impl::DB::open
             at /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/rusty-leveldb-1.0.6/src/db_impl.rs:115:29
I0:  models::state::wallet::wallet_state::WalletState::new_from_wallet_secret::{{closure}}
             at ./src/models/state/wallet/wallet_state.rs:86:31
I0:  initialize::{{closure}}
             at ./src/lib.rs:73:87
I0:  main::{{closure}}
             at ./src/main.rs:28:35
  10: tokio::runtime::park::CachedParkThread::block_on::{{closure}}
             at /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.28.0/src/runtime/park.rs:283:63
  11: tokio::runtime::coop::with_budget
             at /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.28.0/src/runtime/coop.rs:107:5
  12: tokio::runtime::coop::budget
             at /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.28.0/src/runtime/coop.rs:73:5
  13: tokio::runtime::park::CachedParkThread::block_on
             at /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.28.0/src/runtime/park.rs:283:31
  14: tokio::runtime::context::BlockingRegionGuard::block_on
             at /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.28.0/src/runtime/context.rs:315:13
  15: tokio::runtime::scheduler::multi_thread::MultiThread::block_on
             at /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.28.0/src/runtime/scheduler/multi_thread/mod.rs:66:9
  16: tokio::runtime::runtime::Runtime::block_on
             at /home/thv/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.28.0/src/runtime/runtime.rs:304:45
I0:  main
             at ./src/main.rs:28:5
  18: core::ops::function::FnOnce::call_once
             at /rustc/84c898d65adf2f39a5a98507f1fe0ce10a2b8dbc/library/core/src/ops/function.rs:250:5
dermesser commented 1 year ago
            if self.blocksize - self.blk_off < HEADER_SIZE {

would you mind trying out what happens if you change this to self.blocksize < HEADER_SIZE + self.blk_off? This would avoid an overflow but should (mathematically) be equivalent.

EmoFuncs commented 1 year ago

There is a bug when recovering the manifest, in version_set.rs line ~693. The descriptor_log should be opened using new_with_off to recover the offset.

dermesser commented 1 year ago

There is a bug when recovering the manifest, in version_set.rs line ~693. The descriptor_log should be opened using new_with_off to recover the offset.

This is a great find, would you mind sending a PR? (so the credit is yours)