Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
Sword-Smith opened this issue May 12, 2023 · 4 comments
Open

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

Sword-Smith opened this issue May 12, 2023 · 4 comments

Comments

@Sword-Smith
Copy link
Contributor

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
Copy link
Contributor Author

Sword-Smith commented May 12, 2023

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
Copy link
Owner

            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
Copy link
Contributor

EmoFuncs commented Jun 5, 2023

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
Copy link
Owner

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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants