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

Memory crash #2036

Open
caitou2019 opened this issue Dec 14, 2023 · 0 comments
Open

Memory crash #2036

caitou2019 opened this issue Dec 14, 2023 · 0 comments
Labels
kind/bug Something is broken.

Comments

@caitou2019
Copy link

What version of Badger are you using?

Hello, My db is allocated based on the number of partitions on the hard drive. Currently, my hard drive has 30 partitions, so I will create 30 db objects. Each db will allocate 8MB of memory "WithMemTableSize (8<<20)". In this case, a crash will occur, and the crash log will be posted below But if I only allocate 5mb of memory "WithMemTableSize (5<<20)" per db, then the crash problem will not occur May I ask what may be the reason for this?

Crash log

runtime: pointer 0x7d6fffffff to unused region of span span.base()=0x7d6fffe000 span.limit=0x7d6fffff80 span.state=1
runtime: found in object at *(0x7f1e3b0c00+0x778)
object=0x7f1e3b0c00 s.base()=0x7f1e3ac000 s.limit=0x7f1e3b1f00 s.spanclass=90 s.elemsize=4864 s.state=mSpanInUse
*(object+0) = 0x402020303020303
*(object+8) = 0x0
*(object+16) = 0x0
*(object+24) = 0x0
*(object+32) = 0x0
*(object+40) = 0x0
*(object+48) = 0x0
*(object+56) = 0x0
*(object+64) = 0x0
*(object+72) = 0x0
*(object+80) = 0x0
*(object+88) = 0x0
*(object+96) = 0x0
*(object+104) = 0x0
*(object+112) = 0x0
*(object+120) = 0x0
*(object+128) = 0x0
*(object+136) = 0x0
*(object+144) = 0x0
*(object+152) = 0x0
*(object+160) = 0x0
*(object+168) = 0x0
*(object+176) = 0x0
*(object+184) = 0x0
*(object+192) = 0x0
*(object+200) = 0x0
*(object+208) = 0x0
*(object+216) = 0x0
*(object+224) = 0x0
*(object+232) = 0x0
*(object+240) = 0x0
*(object+248) = 0x0
*(object+256) = 0x0
*(object+264) = 0x0
*(object+272) = 0x203030202020202
*(object+280) = 0x0
*(object+288) = 0x0
*(object+296) = 0x0
*(object+304) = 0x0
*(object+312) = 0x0
*(object+320) = 0x0
*(object+328) = 0x0
*(object+336) = 0x0
*(object+344) = 0x0
*(object+352) = 0x0
*(object+360) = 0x0
*(object+368) = 0x0
*(object+376) = 0x0
*(object+384) = 0x0
*(object+392) = 0x0
*(object+400) = 0x0
*(object+408) = 0x0
*(object+416) = 0x0
*(object+424) = 0x0
*(object+432) = 0x0
*(object+440) = 0x0
*(object+448) = 0x0
*(object+456) = 0x0
*(object+464) = 0x0
*(object+472) = 0x0
*(object+480) = 0x0
*(object+488) = 0x0
*(object+496) = 0x0
*(object+504) = 0x0
*(object+512) = 0x0
*(object+520) = 0x0
*(object+528) = 0x0
*(object+536) = 0x0
*(object+544) = 0x76327f8d61
*(object+552) = 0x7d53ffffff
*(object+560) = 0x7f740010c0
*(object+568) = 0x7a6ffffffd
*(object+576) = 0x786ffffffd
*(object+584) = 0x7d1bfff131
*(object+592) = 0x0
*(object+600) = 0x0
*(object+608) = 0x0
*(object+616) = 0x7d04000000
*(object+624) = 0x50000000
*(object+632) = 0x0
*(object+640) = 0x0
*(object+648) = 0x0
*(object+656) = 0x0
*(object+664) = 0x0
*(object+672) = 0x0
*(object+680) = 0x0
*(object+688) = 0x0
*(object+696) = 0x0
*(object+704) = 0x0
*(object+712) = 0x0
*(object+720) = 0x0
*(object+728) = 0x0
*(object+736) = 0x0
*(object+744) = 0x0
*(object+752) = 0x0
*(object+760) = 0x0
*(object+768) = 0x0
*(object+776) = 0x0
*(object+784) = 0x0
*(object+792) = 0x0
*(object+800) = 0x0
*(object+808) = 0x0
*(object+816) = 0x203020303020303
*(object+824) = 0x0
*(object+832) = 0x0
*(object+840) = 0x0
*(object+848) = 0x0
*(object+856) = 0x0
*(object+864) = 0x0
*(object+872) = 0x0
*(object+880) = 0x0
*(object+888) = 0x0
*(object+896) = 0x0
*(object+904) = 0x0
*(object+912) = 0x0
*(object+920) = 0x0
*(object+928) = 0x0
*(object+936) = 0x0
*(object+944) = 0x0
*(object+952) = 0x0
*(object+960) = 0x0
*(object+968) = 0x0
*(object+976) = 0x0
*(object+984) = 0x0
*(object+992) = 0x0
*(object+1000) = 0x0
*(object+1008) = 0x0
*(object+1016) = 0x0
...
*(object+1792) = 0x1000000
*(object+1800) = 0x7d1f2f3000
*(object+1808) = 0xd0c6e8
*(object+1816) = 0xd0c6e8
*(object+1824) = 0x0
*(object+1832) = 0x0
*(object+1840) = 0x0
*(object+1848) = 0x0
*(object+1856) = 0x0
*(object+1864) = 0x0
*(object+1872) = 0x0
*(object+1880) = 0x0
*(object+1888) = 0x0
*(object+1896) = 0x0
*(object+1904) = 0x31730710beb717
*(object+1912) = 0x7d6fffffff <==
*(object+1920) = 0x7e23811fff
*(object+1928) = 0x7aeffffffd
*(object+1936) = 0x7da551afff
*(object+1944) = 0x7f14000013
*(object+1952) = 0x7b5ffffffd
*(object+1960) = 0x7cf3fff181
*(object+1968) = 0x0
*(object+1976) = 0x7d20000000
*(object+1984) = 0x50000000
*(object+1992) = 0x50000000
*(object+2000) = 0x7e23712000
*(object+2008) = 0x100000
*(object+2016) = 0x100000
*(object+2024) = 0x7a70000000
*(object+2032) = 0x7ffffffe
...
fatal error: found bad pointer in Go heap (incorrect use of unsafe or cgo?)

runtime stack:
runtime.throw({0x23475e0?, 0x6?})
/usr/local/go/src/runtime/panic.go:1047 +0x40 fp=0x7d8cff6370 sp=0x7d8cff6340 pc=0xdc29a0
runtime.badPointer(0x7e233889b8, 0x0?, 0x7f1e3b0c00, 0x0?)
/usr/local/go/src/runtime/mbitmap.go:373 +0x11c fp=0x7d8cff63c0 sp=0x7d8cff6370 pc=0xd9dc2c
runtime.findObject(0x7d04000000?, 0x0?, 0x0?)
/usr/local/go/src/runtime/mbitmap.go:416 +0xb4 fp=0x7d8cff6400 sp=0x7d8cff63c0 pc=0xd9dd94
runtime.scanobject(0x7f1e3b0c00, 0x7f18056b40)
/usr/local/go/src/runtime/mgcmark.go:1338 +0x150 fp=0x7d8cff6490 sp=0x7d8cff6400 pc=0xda9f90
runtime.gcDrain(0x7f18056b40, 0x7)
/usr/local/go/src/runtime/mgcmark.go:1103 +0x1c0 fp=0x7d8cff64f0 sp=0x7d8cff6490 pc=0xda9790
runtime.gcBgMarkWorker.func2()
/usr/local/go/src/runtime/mgc.go:1327 +0x68 fp=0x7d8cff6540 sp=0x7d8cff64f0 pc=0xda59d8
runtime.systemstack()
/usr/local/go/src/runtime/asm_arm64.s:243 +0x6c fp=0x7d8cff6550 sp=0x7d8cff6540 pc=0xdf571c

goroutine 39 [GC worker (idle)]:
runtime.systemstack_switch()
/usr/local/go/src/runtime/asm_arm64.s:200 +0x8 fp=0x7f1812df40 sp=0x7f1812df30 pc=0xdf5698
runtime.gcBgMarkWorker()
/usr/local/go/src/runtime/mgc.go:1295 +0x224 fp=0x7f1812dfd0 sp=0x7f1812df40 pc=0xda5694
runtime.goexit()
/usr/local/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x7f1812dfd0 sp=0x7f1812dfd0 pc=0xdf7cf4
created by runtime.gcBgMarkStartWorkers
/usr/local/go/src/runtime/mgc.go:1159 +0x28

goroutine 1 [chan receive]:
runtime.gopark(0x1ff7ec0?, 0x7f1865cd80?, 0x88?, 0x79?, 0x0?)
/usr/local/go/src/runtime/proc.go:363 +0xe4 fp=0x7f1cd87940 sp=0x7f1cd87920 pc=0xdc5604
runtime.chanrecv(0x7f180fa060, 0x0, 0x1)
/usr/local/go/src/runtime/chan.go:583 +0x47c fp=0x7f1cd879d0 sp=0x7f1cd87940 pc=0xd8fd5c
runtime.chanrecv1(0x7f18214780?, 0x7f1865cd70?)
/usr/local/go/src/runtime/chan.go:442 +0x14 fp=0x7f1cd87a00 sp=0x7f1cd879d0 pc=0xd8f8a4
github.com/gogf/gf/net/ghttp.(*Server).Run(0x7f18214780)
/home/yunji/go/pkg/mod/github.com/gogf/gf@v1.16.6/net/ghttp/ghttp_server.go:319 +0x68 fp=0x7f1cd87a90 sp=0x7f1cd87a00 pc=0x12d4bb8
manta/httpapi.Run()
/home/yunji/pojects/mantas/manta-200/httpapi/boot.go:58 +0x520 fp=0x7f1cd87f40 sp=0x7f1cd87a90 pc=0x1d78050
main.main()
/home/yunji/pojects/mantas/manta-200/main.go:177 +0x80 fp=0x7f1cd87f70 sp=0x7f1cd87f40 pc=0x1e54410
runtime.main()
/usr/local/go/src/runtime/proc.go:250 +0x254 fp=0x7f1cd87fd0 sp=0x7f1cd87f70 pc=0xdc5234
runtime.goexit()
/usr/local/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x7f1cd87fd0 sp=0x7f1cd87fd0 pc=0xdf7cf4

goroutine 2 [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/go/src/runtime/proc.go:363 +0xe4 fp=0x7f1806afa0 sp=0x7f1806af80 pc=0xdc5604
runtime.goparkunlock(...)
/usr/local/go/src/runtime/proc.go:369
runtime.forcegchelper()
/usr/local/go/src/runtime/proc.go:302 +0xb4 fp=0x7f1806afd0 sp=0x7f1806afa0 pc=0xdc5494
runtime.goexit()
/usr/local/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x7f1806afd0 sp=0x7f1806afd0 pc=0xdf7cf4
created by runtime.init.6
/usr/local/go/src/runtime/proc.go:290 +0x24

goroutine 3 [GC sweep wait]:
runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/go/src/runtime/proc.go:363 +0xe4 fp=0x7f1806b770 sp=0x7f1806b750 pc=0xdc5604
runtime.goparkunlock(...)
/usr/local/go/src/runtime/proc.go:369
runtime.bgsweep(0x0?)
/usr/local/go/src/runtime/mgcsweep.go:297 +0x10c fp=0x7f1806b7b0 sp=0x7f1806b770 pc=0xdaedec
runtime.gcenable.func1()
/usr/local/go/src/runtime/mgc.go:178 +0x28 fp=0x7f1806b7d0 sp=0x7f1806b7b0 pc=0xda30d8
runtime.goexit()
/usr/local/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x7f1806b7d0 sp=0x7f1806b7d0 pc=0xdf7cf4
created by runtime.gcenable
/usr/local/go/src/runtime/mgc.go:178 +0x70

goroutine 4 [GC scavenge wait]:
runtime.gopark(0x37f6fa056990?, 0x1cec3490?, 0x0?, 0x0?, 0x0?)
/usr/local/go/src/runtime/proc.go:363 +0xe4 fp=0x7f1806bf50 sp=0x7f1806bf30 pc=0xdc5604
runtime.goparkunlock(...)
/usr/local/go/src/runtime/proc.go:369
runtime.(*scavengerState).park(0x3570420)
/usr/local/go/src/runtime/mgcscavenge.go:389 +0x5c fp=0x7f1806bf80 sp=0x7f1806bf50 pc=0xdaccac
runtime.bgscavenge(0x0?)
/usr/local/go/src/runtime/mgcscavenge.go:622 +0xac fp=0x7f1806bfb0 sp=0x7f1806bf80 pc=0xdad29c
runtime.gcenable.func2()
/usr/local/go/src/runtime/mgc.go:179 +0x28 fp=0x7f1806bfd0 sp=0x7f1806bfb0 pc=0xda3078
runtime.goexit()
/usr/local/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x7f1806bfd0 sp=0x7f1806bfd0 pc=0xdf7cf4
created by runtime.gcenable
/usr/local/go/src/runtime/mgc.go:179 +0xb4

goroutine 18 [finalizer wait]:
runtime.gopark(0x0?, 0x242fdd0?, 0x60?, 0xe0?, 0x2000000020?)
/usr/local/go/src/runtime/proc.go:363 +0xe4 fp=0x7f18066580 sp=0x7f18066560 pc=0xdc5604
runtime.goparkunlock(...)
/usr/local/go/src/runtime/proc.go:369
runtime.runfinq()
/usr/local/go/src/runtime/mfinal.go:180 +0x128 fp=0x7f180667d0 sp=0x7f18066580 pc=0xda22f8
runtime.goexit()
/usr/local/go/src/runtime/asm_arm64.s:1172 +0x4 fp=0x7f180667d0 sp=0x7f180667d0 pc=0xdf7cf4
created by runtime.createfing
/usr/local/go/src/runtime/mfinal.go:157 +0x94

What version of Go are you using?

github.com/dgraph-io/badger/v4 v4.1.0

Have you tried reproducing the issue with the latest release?

None

What is the hardware spec (RAM, CPU, OS)?

RAM
image
CPU and OS
image

What steps will reproduce the bug?

Within the same process, creating multiple db objects and allocating 8mb of MemTableSize to each db will result in

Expected behavior and actual result.

No response

Additional information

No response

@caitou2019 caitou2019 added the kind/bug Something is broken. label Dec 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/bug Something is broken.
Development

No branches or pull requests

1 participant