-
-
Notifications
You must be signed in to change notification settings - Fork 121
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
Backing up a ~11GB backup archive to WebDAV endpoint results in fatal error: runtime: out of memory error.
Use case: I am docker-volume-backup to backup Gitea's dump to a WebDAV endpoint. My Gitea's dump size is around 11GB
To Reproduce
Steps to reproduce the behavior:
- Trigger manual offen backup
Expected behavior
Backup should be successful
Version (please complete the following information):
- Image Version: v2.25.0
- Docker Version: 20.10.22
- Docker Compose Version (if applicable): 2.14.1
Additional context
Truncated error log:
goroutine 14 [running]:
runtime.systemstack_switch()
/usr/local/go/src/runtime/asm_amd64.s:459 fp=0xc00018dc58 sp=0xc00018dc50 pc=0x465360
runtime.(*mheap).alloc(0x2f092a000?, 0x178495?, 0xe8?)
/usr/local/go/src/runtime/mheap.go:912 +0x65 fp=0xc00018dca0 sp=0xc00018dc58 pc=0x4298a5
runtime.(*mcache).allocLarge(0x4d0551?, 0x2f0928426, 0x1)
/usr/local/go/src/runtime/mcache.go:233 +0x85 fp=0xc00018dcf0 sp=0xc00018dca0 pc=0x418be5
runtime.mallocgc(0x2f0928426, 0xbba340, 0x1)
/usr/local/go/src/runtime/malloc.go:1029 +0x57e fp=0xc00018dd68 sp=0xc00018dcf0 pc=0x40f01e
runtime.makeslice(0xc0003aa068?, 0x26?, 0x0?)
/usr/local/go/src/runtime/slice.go:103 +0x52 fp=0xc00018dd90 sp=0xc00018dd68 pc=0x44ddb2
os.ReadFile({0xc0002565d0?, 0xc000302b00?})
/usr/local/go/src/os/file.go:719 +0xeb fp=0xc00018de70 sp=0xc00018dd90 pc=0x4d776b
github.com/offen/docker-volume-backup/internal/storage/webdav.(*webDavStorage).Copy(0xc00036d200, {0xc0002565d0, 0x
26})
Seems like the Go script is trying to read the whole backup file but wasn't able to do so?
Full error log:
2023/01/16 11:58:56 cmd/dump.go:245:runDump() [I] Dumping local repositories... /data/git/repositories
2023/01/16 12:02:00 cmd/dump.go:283:runDump() [I] Dumping database...
2023/01/16 12:02:06 cmd/dump.go:295:runDump() [I] Adding custom configuration file from /data/gitea/conf/app.ini
2023/01/16 12:02:06 cmd/dump.go:311:runDump() [I] Custom dir /data/gitea is inside data dir /data/gitea, skipped
2023/01/16 12:02:06 cmd/dump.go:323:runDump() [I] Packing data directory.../data/gitea
2023/01/16 12:02:28 cmd/dump.go:405:runDump() [I] Finish dumping in file /tmp/dumps/dump.zip
time="2023-01-16T12:12:35+08:00" level=info msg="Created backup of `/backup` at `/tmp/backup-2023-01-16T11-58-56.ta
r.gz`."
fatal error: runtime: out of memory
runtime stack:
runtime.throw({0xd1168d?, 0x2030?})
/usr/local/go/src/runtime/panic.go:1047 +0x5d fp=0x7f4765cb8878 sp=0x7f4765cb8848 pc=0x43741d
runtime.sysMapOS(0xc000800000, 0x2f0c00000?)
/usr/local/go/src/runtime/mem_linux.go:187 +0x11b fp=0x7f4765cb88c0 sp=0x7f4765cb8878 pc=0x41a27b
runtime.sysMap(0x13ee1a0?, 0x7f478d10d000?, 0x42d6e0?)
/usr/local/go/src/runtime/mem.go:142 +0x35 fp=0x7f4765cb88f0 sp=0x7f4765cb88c0 pc=0x419c55
runtime.(*mheap).grow(0x13ee1a0, 0x178495?)
/usr/local/go/src/runtime/mheap.go:1468 +0x23d fp=0x7f4765cb8960 sp=0x7f4765cb88f0 pc=0x42a79d
runtime.(*mheap).allocSpan(0x13ee1a0, 0x178495, 0x0, 0x1)
/usr/local/go/src/runtime/mheap.go:1199 +0x1be fp=0x7f4765cb89f8 sp=0x7f4765cb8960 pc=0x429ede
runtime.(*mheap).alloc.func1()
/usr/local/go/src/runtime/mheap.go:918 +0x65 fp=0x7f4765cb8a40 sp=0x7f4765cb89f8 pc=0x429965
runtime.systemstack()
/usr/local/go/src/runtime/asm_amd64.s:492 +0x49 fp=0x7f4765cb8a48 sp=0x7f4765cb8a40 pc=0x4653c9
goroutine 14 [running]:
runtime.systemstack_switch()
/usr/local/go/src/runtime/asm_amd64.s:459 fp=0xc00018dc58 sp=0xc00018dc50 pc=0x465360
runtime.(*mheap).alloc(0x2f092a000?, 0x178495?, 0xe8?)
/usr/local/go/src/runtime/mheap.go:912 +0x65 fp=0xc00018dca0 sp=0xc00018dc58 pc=0x4298a5
runtime.(*mcache).allocLarge(0x4d0551?, 0x2f0928426, 0x1)
/usr/local/go/src/runtime/mcache.go:233 +0x85 fp=0xc00018dcf0 sp=0xc00018dca0 pc=0x418be5
runtime.mallocgc(0x2f0928426, 0xbba340, 0x1)
/usr/local/go/src/runtime/malloc.go:1029 +0x57e fp=0xc00018dd68 sp=0xc00018dcf0 pc=0x40f01e
runtime.makeslice(0xc0003aa068?, 0x26?, 0x0?)
/usr/local/go/src/runtime/slice.go:103 +0x52 fp=0xc00018dd90 sp=0xc00018dd68 pc=0x44ddb2
os.ReadFile({0xc0002565d0?, 0xc000302b00?})
/usr/local/go/src/os/file.go:719 +0xeb fp=0xc00018de70 sp=0xc00018dd90 pc=0x4d776b
github.com/offen/docker-volume-backup/internal/storage/webdav.(*webDavStorage).Copy(0xc00036d200, {0xc0002565d0, 0x
26})
/app/internal/storage/webdav/webdav.go:70 +0x49 fp=0xc00018df50 sp=0xc00018de70 pc=0x9e3ac9
main.(*script).copyArchive.func1()
/app/cmd/backup/script.go:527 +0x2e fp=0xc00018df78 sp=0xc00018df50 pc=0xb3d2ce
golang.org/x/sync/errgroup.(*Group).Go.func1()
/go/pkg/mod/golang.org/x/sync@v0.0.0-20220601150217-0de741cfad7f/errgroup/errgroup.go:75 +0x64 fp=0xc00018d
fe0 sp=0xc00018df78 pc=0x6ae5e4
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc00018dfe8 sp=0xc00018dfe0 pc=0x467581
created by golang.org/x/sync/errgroup.(*Group).Go
/go/pkg/mod/golang.org/x/sync@v0.0.0-20220601150217-0de741cfad7f/errgroup/errgroup.go:72 +0xa5
goroutine 1 [semacquire]:
runtime.gopark(0x7f478d12d108?, 0xc00001bc50?, 0x80?, 0x27?, 0xc0003845b0?)
/usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc00001bbd0 sp=0xc00001bbb0 pc=0x43a036
runtime.goparkunlock(...)
/usr/local/go/src/runtime/proc.go:369
runtime.semacquire1(0xc00039a510, 0xae?, 0x1, 0x0)
/usr/local/go/src/runtime/sema.go:150 +0x1fe fp=0xc00001bc38 sp=0xc00001bbd0 pc=0x44a47e
sync.runtime_Semacquire(0xc0000061a0?)
/usr/local/go/src/runtime/sema.go:62 +0x25 fp=0xc00001bc68 sp=0xc00001bc38 pc=0x4638c5
sync.(*WaitGroup).Wait(0x1?)
/usr/local/go/src/sync/waitgroup.go:139 +0x52 fp=0xc00001bc90 sp=0xc00001bc68 pc=0x47f012
golang.org/x/sync/errgroup.(*Group).Wait(0xc00039a500)
/go/pkg/mod/golang.org/x/sync@v0.0.0-20220601150217-0de741cfad7f/errgroup/errgroup.go:53 +0x27 fp=0xc00001b
ca8 sp=0xc00001bc90 pc=0x6ae447
main.(*script).copyArchive(0xc000302a80)
/app/cmd/backup/script.go:530 +0x1f1 fp=0xc00001bd68 sp=0xc00001bca8 pc=0xb3d171
main.(*script).copyArchive-fm()
<autogenerated>:1 +0x26 fp=0xc00001bd80 sp=0xc00001bd68 pc=0xb3dc86
main.(*script).withLabeledCommands.func1()
/app/cmd/backup/exec.go:201 +0x1cb fp=0xc00001be58 sp=0xc00001bd80 pc=0xb3696b
main.main()
/app/cmd/backup/main.go:56 +0x268 fp=0xc00001bf80 sp=0xc00001be58 pc=0xb376e8
runtime.main()
/usr/local/go/src/runtime/proc.go:250 +0x212 fp=0xc00001bfe0 sp=0xc00001bf80 pc=0x439c72
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc00001bfe8 sp=0xc00001bfe0 pc=0x467581
goroutine 2 [force gc (idle), 2 minutes]:
runtime.gopark(0x2238e373c4da?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000056fb0 sp=0xc000056f90 pc=0x43a036
runtime.goparkunlock(...)
/usr/local/go/src/runtime/proc.go:369
runtime.forcegchelper()
/usr/local/go/src/runtime/proc.go:302 +0xad fp=0xc000056fe0 sp=0xc000056fb0 pc=0x439ecd
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000056fe8 sp=0xc000056fe0 pc=0x467581
created by runtime.init.6
/usr/local/go/src/runtime/proc.go:290 +0x25
goroutine 3 [GC sweep wait]:
runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000057790 sp=0xc000057770 pc=0x43a036
runtime.goparkunlock(...)
/usr/local/go/src/runtime/proc.go:369
runtime.bgsweep(0x0?)
/usr/local/go/src/runtime/mgcsweep.go:297 +0xd7 fp=0xc0000577c8 sp=0xc000057790 pc=0x426997
runtime.gcenable.func1()
/usr/local/go/src/runtime/mgc.go:178 +0x26 fp=0xc0000577e0 sp=0xc0000577c8 pc=0x41b606
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc0000577e8 sp=0xc0000577e0 pc=0x467581
created by runtime.gcenable
/usr/local/go/src/runtime/mgc.go:178 +0x6b
goroutine 4 [GC scavenge wait]:
runtime.gopark(0x13d4aa0?, 0x119536?, 0x0?, 0x0?, 0x0?)
/usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000057f70 sp=0xc000057f50 pc=0x43a036
runtime.goparkunlock(...)
/usr/local/go/src/runtime/proc.go:369
runtime.(*scavengerState).park(0x13d4aa0)
/usr/local/go/src/runtime/mgcscavenge.go:389 +0x53 fp=0xc000057fa0 sp=0xc000057f70 pc=0x4249f3
runtime.bgscavenge(0x0?)
/usr/local/go/src/runtime/mgcscavenge.go:622 +0x65 fp=0xc000057fc8 sp=0xc000057fa0 pc=0x424fe5
runtime.gcenable.func2()
/usr/local/go/src/runtime/mgc.go:179 +0x26 fp=0xc000057fe0 sp=0xc000057fc8 pc=0x41b5a6
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000057fe8 sp=0xc000057fe0 pc=0x467581
created by runtime.gcenable
/usr/local/go/src/runtime/mgc.go:179 +0xaa
goroutine 5 [finalizer wait, 10 minutes]:
runtime.gopark(0x13d5440?, 0xc000007860?, 0x0?, 0x0?, 0xc000056770?)
/usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000056628 sp=0xc000056608 pc=0x43a036
runtime.goparkunlock(...)
/usr/local/go/src/runtime/proc.go:369
runtime.runfinq()
/usr/local/go/src/runtime/mfinal.go:180 +0x10f fp=0xc0000567e0 sp=0xc000056628 pc=0x41a70f
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc0000567e8 sp=0xc0000567e0 pc=0x467581
created by runtime.createfing
/usr/local/go/src/runtime/mfinal.go:157 +0x45
goroutine 13 [GC worker (idle), 2 minutes]:
runtime.gopark(0x2238e38df068?, 0x0?, 0x0?, 0x0?, 0x0?)
/usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000052750 sp=0xc000052730 pc=0x43a036
runtime.gcBgMarkWorker()
/usr/local/go/src/runtime/mgc.go:1235 +0xf1 fp=0xc0000527e0 sp=0xc000052750 pc=0x41d751
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc0000527e8 sp=0xc0000527e0 pc=0x467581
created by runtime.gcBgMarkStartWorkers
/usr/local/go/src/runtime/mgc.go:1159 +0x25
goroutine 7 [IO wait, 10 minutes]:
runtime.gopark(0xc7e3e0?, 0xb?, 0x0?, 0x0?, 0x7?)
/usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000069af8 sp=0xc000069ad8 pc=0x43a036
runtime.netpollblock(0x4aed45?, 0x4bc5d7?, 0x0?)
/usr/local/go/src/runtime/netpoll.go:526 +0xf7 fp=0xc000069b30 sp=0xc000069af8 pc=0x432b57
internal/poll.runtime_pollWait(0x7f4765c2e2c0, 0x72)
/usr/local/go/src/runtime/netpoll.go:305 +0x89 fp=0xc000069b50 sp=0xc000069b30 pc=0x4621a9
internal/poll.(*pollDesc).wait(0xc000302f80?, 0xc000374000?, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32 fp=0xc000069b78 sp=0xc000069b50 pc=0x4ca712
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000302f80, {0xc000374000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a fp=0xc000069bf8 sp=0xc000069b78 pc=0x4cba7a
net.(*netFD).Read(0xc000302f80, {0xc000374000?, 0x407db1?, 0x4?})
/usr/local/go/src/net/fd_posix.go:55 +0x29 fp=0xc000069c40 sp=0xc000069bf8 pc=0x5d48a9
net.(*conn).Read(0xc000014730, {0xc000374000?, 0xc0003aa220?, 0x1?})
/usr/local/go/src/net/net.go:183 +0x45 fp=0xc000069c88 sp=0xc000069c40 pc=0x5e6125
net/http.(*persistConn).Read(0xc0000c7440, {0xc000374000?, 0xc00008ea80?, 0xc000069d30?})
/usr/local/go/src/net/http/transport.go:1929 +0x4e fp=0xc000069ce8 sp=0xc000069c88 pc=0x77bd8e
bufio.(*Reader).fill(0xc000082960)
/usr/local/go/src/bufio/bufio.go:106 +0xff fp=0xc000069d20 sp=0xc000069ce8 pc=0x501a9f
bufio.(*Reader).Peek(0xc000082960, 0x1)
/usr/local/go/src/bufio/bufio.go:144 +0x5d fp=0xc000069d40 sp=0xc000069d20 pc=0x501bfd
net/http.(*persistConn).readLoop(0xc0000c7440)
/usr/local/go/src/net/http/transport.go:2093 +0x1ac fp=0xc000069fc8 sp=0xc000069d40 pc=0x77cbac
net/http.(*Transport).dialConn.func5()
/usr/local/go/src/net/http/transport.go:1751 +0x26 fp=0xc000069fe0 sp=0xc000069fc8 pc=0x77b386
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000069fe8 sp=0xc000069fe0 pc=0x467581
created by net/http.(*Transport).dialConn
/usr/local/go/src/net/http/transport.go:1751 +0x173e
goroutine 8 [select, 10 minutes]:
runtime.gopark(0xc000064f90?, 0x2?, 0xd8?, 0x4d?, 0xc000064f24?)
/usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000064d90 sp=0xc000064d70 pc=0x43a036
runtime.selectgo(0xc000064f90, 0xc000064f20, 0xc00036e6c0?, 0x0, 0x0?, 0x1)
/usr/local/go/src/runtime/select.go:328 +0x7bc fp=0xc000064ed0 sp=0xc000064d90 pc=0x4493bc
net/http.(*persistConn).writeLoop(0xc0000c7440)
/usr/local/go/src/net/http/transport.go:2392 +0xf5 fp=0xc000064fc8 sp=0xc000064ed0 pc=0x77e835
net/http.(*Transport).dialConn.func6()
/usr/local/go/src/net/http/transport.go:1752 +0x26 fp=0xc000064fe0 sp=0xc000064fc8 pc=0x77b326
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000064fe8 sp=0xc000064fe0 pc=0x467581
created by net/http.(*Transport).dialConn
/usr/local/go/src/net/http/transport.go:1752 +0x1791
goroutine 19 [IO wait]:
runtime.gopark(0xc7e3e0?, 0xb?, 0x0?, 0x0?, 0x8?)
/usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000065af8 sp=0xc000065ad8 pc=0x43a036
runtime.netpollblock(0x4aed45?, 0x4bc5d7?, 0x0?)
/usr/local/go/src/runtime/netpoll.go:526 +0xf7 fp=0xc000065b30 sp=0xc000065af8 pc=0x432b57
internal/poll.runtime_pollWait(0x7f4765c2e1d0, 0x72)
/usr/local/go/src/runtime/netpoll.go:305 +0x89 fp=0xc000065b50 sp=0xc000065b30 pc=0x4621a9
internal/poll.(*pollDesc).wait(0xc0003ce180?, 0xc0003a5000?, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32 fp=0xc000065b78 sp=0xc000065b50 pc=0x4ca712
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0003ce180, {0xc0003a5000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a fp=0xc000065bf8 sp=0xc000065b78 pc=0x4cba7a
net.(*netFD).Read(0xc0003ce180, {0xc0003a5000?, 0x407db1?, 0x4?})
/usr/local/go/src/net/fd_posix.go:55 +0x29 fp=0xc000065c40 sp=0xc000065bf8 pc=0x5d48a9
net.(*conn).Read(0xc0003aa230, {0xc0003a5000?, 0x0?, 0x0?})
/usr/local/go/src/net/net.go:183 +0x45 fp=0xc000065c88 sp=0xc000065c40 pc=0x5e6125
net/http.(*persistConn).Read(0xc0003ae7e0, {0xc0003a5000?, 0xc0003ca6c0?, 0xc000065d30?})
/usr/local/go/src/net/http/transport.go:1929 +0x4e fp=0xc000065ce8 sp=0xc000065c88 pc=0x77bd8e
bufio.(*Reader).fill(0xc0003903c0)
/usr/local/go/src/bufio/bufio.go:106 +0xff fp=0xc000065d20 sp=0xc000065ce8 pc=0x501a9f
bufio.(*Reader).Peek(0xc0003903c0, 0x1)
/usr/local/go/src/bufio/bufio.go:144 +0x5d fp=0xc000065d40 sp=0xc000065d20 pc=0x501bfd
net/http.(*persistConn).readLoop(0xc0003ae7e0)
/usr/local/go/src/net/http/transport.go:2093 +0x1ac fp=0xc000065fc8 sp=0xc000065d40 pc=0x77cbac
net/http.(*Transport).dialConn.func5()
/usr/local/go/src/net/http/transport.go:1751 +0x26 fp=0xc000065fe0 sp=0xc000065fc8 pc=0x77b386
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000065fe8 sp=0xc000065fe0 pc=0x467581
created by net/http.(*Transport).dialConn
/usr/local/go/src/net/http/transport.go:1751 +0x173e
goroutine 20 [select]:
runtime.gopark(0xc000066f90?, 0x2?, 0xd8?, 0x6d?, 0xc000066f24?)
/usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000066d90 sp=0xc000066d70 pc=0x43a036
runtime.selectgo(0xc000066f90, 0xc000066f20, 0xc00039a480?, 0x0, 0x0?, 0x1)
/usr/local/go/src/runtime/select.go:328 +0x7bc fp=0xc000066ed0 sp=0xc000066d90 pc=0x4493bc
net/http.(*persistConn).writeLoop(0xc0003ae7e0)
/usr/local/go/src/net/http/transport.go:2392 +0xf5 fp=0xc000066fc8 sp=0xc000066ed0 pc=0x77e835
net/http.(*Transport).dialConn.func6()
/usr/local/go/src/net/http/transport.go:1752 +0x26 fp=0xc000066fe0 sp=0xc000066fc8 pc=0x77b326
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000066fe8 sp=0xc000066fe0 pc=0x467581
created by net/http.(*Transport).dialConn
/usr/local/go/src/net/http/transport.go:1752 +0x1791
goroutine 21 [GC worker (idle), 2 minutes]:
runtime.gopark(0x2238e38dee8e?, 0xc000412000?, 0x0?, 0x0?, 0x0?)
/usr/local/go/src/runtime/proc.go:363 +0xd6 fp=0xc000059f50 sp=0xc000059f30 pc=0x43a036
runtime.gcBgMarkWorker()
/usr/local/go/src/runtime/mgc.go:1235 +0xf1 fp=0xc000059fe0 sp=0xc000059f50 pc=0x41d751
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1594 +0x1 fp=0xc000059fe8 sp=0xc000059fe0 pc=0x467581
created by runtime.gcBgMarkStartWorkers
/usr/local/go/src/runtime/mgc.go:1159 +0x25
ubuntu@ubuntu:~/gitea-docker$Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working