<p dir="auto">Using go 1.5.1, I got this crash in a process that allocates many GB of RAM in several maps. Probably a duplicate of <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="116694192" data-permission-text="Title is private" data-url="https://github.com/golang/go/issues/13227" data-hovercard-type="issue" data-hovercard-url="/golang/go/issues/13227/hovercard" href="https://github.com/golang/go/issues/13227">#13227</a> but I'll let you guys decide that! It's repeatable, but involves an enormous and confidential data set.</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ go env
GOARCH=&quot;amd64&quot;
GOBIN=&quot;&quot;
GOEXE=&quot;&quot;
GOHOSTARCH=&quot;amd64&quot;
GOHOSTOS=&quot;linux&quot;
GOOS=&quot;linux&quot;
GOPATH=&quot;/home/sergey/go&quot;
GORACE=&quot;&quot;
GOROOT=&quot;/usr/local/go&quot;
GOTOOLDIR=&quot;/usr/local/go/pkg/tool/linux_amd64&quot;
GO15VENDOREXPERIMENT=&quot;1&quot;
CC=&quot;gcc&quot;
GOGCCFLAGS=&quot;-fPIC -m64 -pthread -fmessage-length=0&quot;
CXX=&quot;g++&quot;
CGO_ENABLED=&quot;1&quot;"><pre class="notranslate"><code class="notranslate">$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/sergey/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT="1"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"
</code></pre></div>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="fatal error: unexpected signal during runtime execution
[signal 0xb code=0x1 addr=0xf1 pc=0x45f51b]

runtime stack:
runtime.throw(0xb744a0, 0x2a)
  /usr/local/go/src/runtime/panic.go:527 +0x90 fp=0x7f9a052d0d70 sp=0x7f9a052d0d58
runtime.sigpanic()
  /usr/local/go/src/runtime/sigpanic_unix.go:12 +0x5a fp=0x7f9a052d0dc0 sp=0x7f9a052d0d70
runtime.munmap(0x7f99eb1b1000, 0xb7ed28, 0x41c85f, 0x7f99eb1b1000, 0xb7ed28, 0xe00f60, 0x7f99eb1b1000, 0x16fda5, 0x1853d3, 0x41c07c, ...)
  /usr/local/go/src/runtime/sys_linux_amd64.s:266 +0x1b fp=0x7f9a052d0dc8 sp=0x7f9a052d0dc0
runtime.sysFree(0x7f99eb1b1000, 0xb7ed28, 0xe00f60)
  /usr/local/go/src/runtime/mem_linux.go:103 +0x34 fp=0x7f9a052d0de0 sp=0x7f9a052d0dc8
runtime.gcCopySpans()
  /usr/local/go/src/runtime/mgc.go:1600 +0xdf fp=0x7f9a052d0e18 sp=0x7f9a052d0de0
runtime.gcMark(0xbe16c05dffa)
  /usr/local/go/src/runtime/mgc.go:1415 +0x5c fp=0x7f9a052d0e80 sp=0x7f9a052d0e18
runtime.gc.func3()
  /usr/local/go/src/runtime/mgc.go:1089 +0x23 fp=0x7f9a052d0e90 sp=0x7f9a052d0e80
runtime.systemstack(0xc820024000)
  /usr/local/go/src/runtime/asm_amd64.s:262 +0x79 fp=0x7f9a052d0e98 sp=0x7f9a052d0e90
runtime.mstart()
  /usr/local/go/src/runtime/proc1.go:674 fp=0x7f9a052d0ea0 sp=0x7f9a052d0e98

goroutine 66 [garbage collection]:
runtime.systemstack_switch()
  /usr/local/go/src/runtime/asm_amd64.s:216 fp=0xc8201af498 sp=0xc8201af490
runtime.gc(0x0)
  /usr/local/go/src/runtime/mgc.go:1097 +0x3d0 fp=0xc8201af790 sp=0xc8201af498
runtime.backgroundgc()
  /usr/local/go/src/runtime/mgc.go:897 +0x3d fp=0xc8201af7c0 sp=0xc8201af790
runtime.goexit()
  /usr/local/go/src/runtime/asm_amd64.s:1696 +0x1 fp=0xc8201af7c8 sp=0xc8201af7c0
created by runtime.startGC
  /usr/local/go/src/runtime/mgc.go:870 +0x186
"><pre class="notranslate"><code class="notranslate">fatal error: unexpected signal during runtime execution
[signal 0xb code=0x1 addr=0xf1 pc=0x45f51b]

runtime stack:
runtime.throw(0xb744a0, 0x2a)
  /usr/local/go/src/runtime/panic.go:527 +0x90 fp=0x7f9a052d0d70 sp=0x7f9a052d0d58
runtime.sigpanic()
  /usr/local/go/src/runtime/sigpanic_unix.go:12 +0x5a fp=0x7f9a052d0dc0 sp=0x7f9a052d0d70
runtime.munmap(0x7f99eb1b1000, 0xb7ed28, 0x41c85f, 0x7f99eb1b1000, 0xb7ed28, 0xe00f60, 0x7f99eb1b1000, 0x16fda5, 0x1853d3, 0x41c07c, ...)
  /usr/local/go/src/runtime/sys_linux_amd64.s:266 +0x1b fp=0x7f9a052d0dc8 sp=0x7f9a052d0dc0
runtime.sysFree(0x7f99eb1b1000, 0xb7ed28, 0xe00f60)
  /usr/local/go/src/runtime/mem_linux.go:103 +0x34 fp=0x7f9a052d0de0 sp=0x7f9a052d0dc8
runtime.gcCopySpans()
  /usr/local/go/src/runtime/mgc.go:1600 +0xdf fp=0x7f9a052d0e18 sp=0x7f9a052d0de0
runtime.gcMark(0xbe16c05dffa)
  /usr/local/go/src/runtime/mgc.go:1415 +0x5c fp=0x7f9a052d0e80 sp=0x7f9a052d0e18
runtime.gc.func3()
  /usr/local/go/src/runtime/mgc.go:1089 +0x23 fp=0x7f9a052d0e90 sp=0x7f9a052d0e80
runtime.systemstack(0xc820024000)
  /usr/local/go/src/runtime/asm_amd64.s:262 +0x79 fp=0x7f9a052d0e98 sp=0x7f9a052d0e90
runtime.mstart()
  /usr/local/go/src/runtime/proc1.go:674 fp=0x7f9a052d0ea0 sp=0x7f9a052d0e98

goroutine 66 [garbage collection]:
runtime.systemstack_switch()
  /usr/local/go/src/runtime/asm_amd64.s:216 fp=0xc8201af498 sp=0xc8201af490
runtime.gc(0x0)
  /usr/local/go/src/runtime/mgc.go:1097 +0x3d0 fp=0xc8201af790 sp=0xc8201af498
runtime.backgroundgc()
  /usr/local/go/src/runtime/mgc.go:897 +0x3d fp=0xc8201af7c0 sp=0xc8201af790
runtime.goexit()
  /usr/local/go/src/runtime/asm_amd64.s:1696 +0x1 fp=0xc8201af7c8 sp=0xc8201af7c0
created by runtime.startGC
  /usr/local/go/src/runtime/mgc.go:870 +0x186

</code></pre></div>
<p dir="auto">I propose to change both Go package archives and Go object files to use the more standard zip archive format.<br>
In contrast to ar archives, zip archives admit efficient random access to individual files within the archive<br>
and also allow decisions about compression on a per-file basis.<br>
The result for Go will be cleaner access to the parts of a package archive<br>
and the ability later to add compression of individual parts<br>
as appropriate.</p>
<p dir="auto">See <a href="https://golang.org/design/14386-zip-package-archives" rel="nofollow">golang.org/design/14386-zip-package-archives</a> for details.</p>