badger
badger copied to clipboard
[BUG]: Nil pointer dereference during error handling
What version of Badger are you using?
v4.3.0
What version of Go are you using?
1.22
Have you tried reproducing the issue with the latest release?
Yes
What is the hardware spec (RAM, CPU, OS)?
Linux 5.17.15-v7l #1 SMP Wed Dec 6 13:01:48 UTC 2023 armv7l armv7l armv7l GNU/Linux
CPU: ARMv7 Processor rev 3 (v7l) RAM: 1GB
What steps will reproduce the bug?
After a (probably) faulty write to a strictly in-memory only badger database, our code encountered an error during decompression of a block. However, the Fd field of the method receiver seems to be nil for in-memory databases.
Expected behavior and actual result.
There is an error without a panic being triggered.
Additional information
panic({0x842d40, 0xf4f548})
/usr/local/go/src/runtime/panic.go:770 +0xfc
os.(*File).Name(...)
/usr/local/go/src/os/file.go:56
github.com/dgraph-io/badger/v4/table.(*Table).block(0x2d62f50, 0x19ce, 0x1)
/go/src/vendor/github.com/dgraph-io/badger/v4/table/table.go:582 +0x750
github.com/dgraph-io/badger/v4/table.(*Iterator).seekHelper(0x37a2380, 0x19ce, {0x37d9b80, 0x32, 0x32})
/go/src/vendor/github.com/dgraph-io/badger/v4/table/iterator.go:254 +0x4c
github.com/dgraph-io/badger/v4/table.(*Iterator).seekFrom(0x37a2380, {0x37d9b80, 0x32, 0x32}, 0x0)
/go/src/vendor/github.com/dgraph-io/badger/v4/table/iterator.go:294 +0x12c
github.com/dgraph-io/badger/v4/table.(*Iterator).seek(...)
/go/src/vendor/github.com/dgraph-io/badger/v4/table/iterator.go:310
github.com/dgraph-io/badger/v4/table.(*Iterator).Seek(0x37a2380, {0x37d9b80, 0x32, 0x32})
/go/src/vendor/github.com/dgraph-io/badger/v4/table/iterator.go:424 +0x58
github.com/dgraph-io/badger/v4.(*levelHandler).get(0x2ce0050, {0x37d9b80, 0x32, 0x32})
/go/src/vendor/github.com/dgraph-io/badger/v4/level_handler.go:293 +0x238
github.com/dgraph-io/badger/v4.(*levelsController).get(0x2ce0000, {0x37d9b80, 0x32, 0x32}, {0x40, 0x0, 0x0, {0x95db23a, 0x13d0, 0x52c00bf}, ...}, ...)
/go/src/vendor/github.com/dgraph-io/badger/v4/levels.go:1623 +0x174
github.com/dgraph-io/badger/v4.(*DB).get(0x2d4b208, {0x37d9b80, 0x32, 0x32})
/go/src/vendor/github.com/dgraph-io/badger/v4/db.go:786 +0x3a8
github.com/dgraph-io/badger/v4.(*Txn).Get(0x917a240, {0x2eada10, 0x2a, 0x30})
/go/src/vendor/github.com/dgraph-io/badger/v4/txn.go:479 +0x2bc