Go: ํ”Œ๋Ÿฌ๊ทธ์ธ: net/http.Get ์น˜๋ช…์ ์ธ "๋Ÿฐํƒ€์ž„: runtime.goexit์— ๋Œ€ํ•œ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ฐ˜ํ™˜ PC๊ฐ€ ํ˜ธ์ถœ๋จ"

์— ๋งŒ๋“  2018๋…„ 01์›” 27์ผ  ยท  1๋…ผํ‰  ยท  ์ถœ์ฒ˜: golang/go

์–ด๋–ค ๋ฒ„์ „์˜ Go๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ( go version )?

go version go1.10rc1 darwin/amd64

์ด ๋ฌธ์ œ๋Š” ์ตœ์‹  ๋ฆด๋ฆฌ์Šค์—์„œ ์žฌํ˜„๋ฉ๋‹ˆ๊นŒ?

๋„ค

์–ด๋–ค ์šด์˜ ์ฒด์ œ ๋ฐ ํ”„๋กœ์„ธ์„œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ( go env )?

GOARCH="amd64"
GOBIN="/Users/juhwany/go_workspace/bin"
GOCACHE="/Users/juhwany/Library/Caches/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/juhwany/go_workspace"
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/mk/2tyywdsn0jq6l0vl8094tss80000gp/T/go-build778249571=/tmp/go-build -gno-record-gcc-switches -fno-common"

๋ญ ํ–ˆ์–ด?

ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ http.Get ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ. runtime: unexpected return pc for runtime.goexit called from 0x4460ce0 ์™€ ๊ฐ™์€ ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฐ๋ชจ(https://github.com/nzlov/testplugin)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒˆ์‹ ๋‹จ๊ณ„

  1. ํ”Œ๋Ÿฌ๊ทธ์ธ ๋นŒ๋“œ
    go build --buildmode=plugin post.go
  1. ๋ฉ”์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋“œ
    go build main.go

  2. ์šด์˜
    ./๊ธฐ๋ณธ

Linux์—์„œ๋Š” ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. darwin/amd64์—์„œ๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ฌด์—‡์„ ๋ณผ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ์Šต๋‹ˆ๊นŒ?

์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜ ์—†์ด ์‹คํ–‰

๋Œ€์‹  ๋ฌด์—‡์„ ๋ณด์•˜์Šต๋‹ˆ๊นŒ?

runtime: unexpected return pc for runtime.goexit called from 0x4460ce0
stack: frame={sp:0xc420050fb8, fp:0xc420050fc0} stack=[0xc420050000,0xc420051000)
000000c420050eb8:  0000000000000000  0000000000000000
000000c420050ec8:  0000000000000000  0000000000000000
000000c420050ed8:  0000000000000000  0000000000000000
000000c420050ee8:  0000000000000000  0000000000000000
000000c420050ef8:  0000000000000000  0000000000000000
000000c420050f08:  0000000000000000  0000000000000000
000000c420050f18:  0000000000000000  0000000000000000
000000c420050f28:  000000c42003efa8  0000000005378b96 <net/http.(*Transport).getConn.func4+118>
000000c420050f38:  0000000004460ce0  00000000043154e0
000000c420050f48:  000000c42009e020  0000000000000000
000000c420050f58:  0000000005429ff7  0000000000000005
000000c420050f68:  000000c4200ba1c0  0000000000000012
000000c420050f78:  0000000000000000  0000000000000000
000000c420050f88:  0000000000000000  0000000000000000
000000c420050f98:  0000000000000000  0000000000000000
000000c420050fa8:  0000000000000000  0000000005192201 <runtime.goexit+1>
000000c420050fb8: <0000000004460ce0 >00000000043154e0
000000c420050fc8:  000000c42009e020  000000c420098f00
000000c420050fd8:  000000c42008a180  0000000000000000
000000c420050fe8:  0000000000000000  0000000000000000
000000c420050ff8:  0000000000000000
fatal error: unknown caller pc

runtime stack:
runtime: unexpected return pc for runtime.morestack called from 0x0
stack: frame={sp:0x7fff5fbff978, fp:0x7fff5fbff980} stack=[0x7fff5fb80520,0x7fff5fbff9a0)
00007fff5fbff878:  0000000004465be0  00007fff5fbff8c8
00007fff5fbff888:  000000000515653c <runtime.(*mcentral).grow+236>  000000c41fff4dff
00007fff5fbff898:  000000c400000000  0000000004591b60
00007fff5fbff8a8:  0000000004591b60  0000000000000011
00007fff5fbff8b8:  000000c420076900  000000c42003eaf8
00007fff5fbff8c8:  000000000536ef75 <net/http.(*Transport).dialConn+85>  000000c420076900
00007fff5fbff8d8:  0000000000000000  0000000000000000
00007fff5fbff8e8:  0000000000000000  0000000000000000
00007fff5fbff8f8:  000000c420076900  000000c420076901
00007fff5fbff908:  0000000004465b01  00007fff5fbff930
00007fff5fbff918:  0000000005179555 <runtime.selparkcommit+133>  0000000004465be0
00007fff5fbff928:  000000c4201241e0  00007fff5fbff960
00007fff5fbff938:  00000000051724eb <runtime.park_m+187>  000000c420000180
00007fff5fbff948:  0000000000000000  000000000458a601
00007fff5fbff958:  0000000004465be0  000000c420065328
00007fff5fbff968:  000000c42003ef28  000000000518f859 <runtime.morestack+137>
00007fff5fbff978: <0000000000000000 >00007fff5fbff9d8
00007fff5fbff988:  00000000040549b3 <runtime.rt0_go+515>  00007fff5fbff9d8
00007fff5fbff998:  00000000040549ba <runtime.rt0_go+522>
runtime.throw(0x542898e, 0x11)
    /usr/local/go/src/runtime/panic.go:619 +0x81
runtime.gentraceback(0xffffffffffffffff, 0xffffffffffffffff, 0x0, 0xc420076900, 0x0, 0x0, 0x7fffffff, 0x5438a88, 0x7fff5fbff6b8, 0x0, ...)
    /usr/local/go/src/runtime/traceback.go:292 +0x1bb2
runtime.copystack(0xc420076900, 0x1000, 0x7fff5fbff801)
    /usr/local/go/src/runtime/stack.go:891 +0x26e
runtime.newstack()
    /usr/local/go/src/runtime/stack.go:1063 +0x310
runtime: unexpected return pc for runtime.morestack called from 0x0
stack: frame={sp:0x7fff5fbff978, fp:0x7fff5fbff980} stack=[0x7fff5fb80520,0x7fff5fbff9a0)
00007fff5fbff878:  0000000004465be0  00007fff5fbff8c8
00007fff5fbff888:  000000000515653c <runtime.(*mcentral).grow+236>  000000c41fff4dff
00007fff5fbff898:  000000c400000000  0000000004591b60
00007fff5fbff8a8:  0000000004591b60  0000000000000011
00007fff5fbff8b8:  000000c420076900  000000c42003eaf8
00007fff5fbff8c8:  000000000536ef75 <net/http.(*Transport).dialConn+85>  000000c420076900
00007fff5fbff8d8:  0000000000000000  0000000000000000
00007fff5fbff8e8:  0000000000000000  0000000000000000
00007fff5fbff8f8:  000000c420076900  000000c420076901
00007fff5fbff908:  0000000004465b01  00007fff5fbff930
00007fff5fbff918:  0000000005179555 <runtime.selparkcommit+133>  0000000004465be0
00007fff5fbff928:  000000c4201241e0  00007fff5fbff960
00007fff5fbff938:  00000000051724eb <runtime.park_m+187>  000000c420000180
00007fff5fbff948:  0000000000000000  000000000458a601
00007fff5fbff958:  0000000004465be0  000000c420065328
00007fff5fbff968:  000000c42003ef28  000000000518f859 <runtime.morestack+137>
00007fff5fbff978: <0000000000000000 >00007fff5fbff9d8
00007fff5fbff988:  00000000040549b3 <runtime.rt0_go+515>  00007fff5fbff9d8
00007fff5fbff998:  00000000040549ba <runtime.rt0_go+522>
runtime.morestack()
    /usr/local/go/src/runtime/asm_amd64.s:480 +0x89

goroutine 19 [copystack]:
runtime.newobject(0x42aba80, 0x0)
    /usr/local/go/src/runtime/malloc.go:838 +0x51 fp=0xc420050af8 sp=0xc420050af0 pc=0x5152411
net/http.(*Transport).dialConn(0x4460ce0, 0x43154e0, 0xc42009e020, 0x0, 0x5429ff7, 0x5, 0xc4200ba1c0, 0x12, 0x0, 0x0, ...)
    /usr/local/go/src/net/http/transport.go:1096 +0x55 fp=0xc420050f38 sp=0xc420050af8 pc=0x536ef75
net/http.(*Transport).getConn.func4(0x4460ce0, 0x43154e0, 0xc42009e020, 0xc420098f00, 0xc42008a180)
    /usr/local/go/src/net/http/transport.go:957 +0x76 fp=0xc420050fb8 sp=0xc420050f38 pc=0x5378b96
runtime: unexpected return pc for runtime.goexit called from 0x4460ce0
stack: frame={sp:0xc420050fb8, fp:0xc420050fc0} stack=[0xc420050000,0xc420051000)
000000c420050eb8:  0000000000000000  0000000000000000
000000c420050ec8:  0000000000000000  0000000000000000
000000c420050ed8:  0000000000000000  0000000000000000
000000c420050ee8:  0000000000000000  0000000000000000
000000c420050ef8:  0000000000000000  0000000000000000
000000c420050f08:  0000000000000000  0000000000000000
000000c420050f18:  0000000000000000  0000000000000000
000000c420050f28:  000000c42003efa8  0000000005378b96 <net/http.(*Transport).getConn.func4+118>
000000c420050f38:  0000000004460ce0  00000000043154e0
000000c420050f48:  000000c42009e020  0000000000000000
000000c420050f58:  0000000005429ff7  0000000000000005
000000c420050f68:  000000c4200ba1c0  0000000000000012
000000c420050f78:  0000000000000000  0000000000000000
000000c420050f88:  0000000000000000  0000000000000000
000000c420050f98:  0000000000000000  0000000000000000
000000c420050fa8:  0000000000000000  0000000005192201 <runtime.goexit+1>
000000c420050fb8: <0000000004460ce0 >00000000043154e0
000000c420050fc8:  000000c42009e020  000000c420098f00
000000c420050fd8:  000000c42008a180  0000000000000000
000000c420050fe8:  0000000000000000  0000000000000000
000000c420050ff8:  0000000000000000
runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2361 +0x1 fp=0xc420050fc0 sp=0xc420050fb8 pc=0x5192201
created by net/http.(*Transport).getConn
    /usr/local/go/src/net/http/transport.go:956 +0x36d

goroutine 1 [select]:
net/http.(*Transport).getConn(0x4460ce0, 0xc420098ed0, 0x0, 0x5429ff7, 0x5, 0xc4200ba1c0, 0x12, 0x0, 0x0, 0x4288e00)
    /usr/local/go/src/net/http/transport.go:962 +0x55e
net/http.(*Transport).RoundTrip(0x4460ce0, 0xc420162000, 0x4460ce0, 0x0, 0x0)
    /usr/local/go/src/net/http/transport.go:409 +0x62e
net/http.send(0xc420162000, 0x545a980, 0x4460ce0, 0x0, 0x0, 0x0, 0xc42014a9d8, 0xf8, 0xc420065c70, 0x1)
    /usr/local/go/src/net/http/client.go:252 +0x185
net/http.(*Client).send(0x55afbc0, 0xc420162000, 0x0, 0x0, 0x0, 0xc42014a9d8, 0x0, 0x1, 0x51523f8)
    /usr/local/go/src/net/http/client.go:176 +0xfa
net/http.(*Client).Do(0x55afbc0, 0xc420162000, 0x5429ff7, 0x16, 0x0)
    /usr/local/go/src/net/http/client.go:615 +0x298
net/http.(*Client).Get(0x55afbc0, 0x5429ff7, 0x16, 0xc420098cf0, 0xc4200bcfc0, 0xc4200bcfc0)
    /usr/local/go/src/net/http/client.go:396 +0x9d
net/http.Get(0x5429ff7, 0x16, 0x1, 0xffffffffffffffff, 0xc420065ef8)
    /usr/local/go/src/net/http/client.go:370 +0x44
plugin/unnamed-71262ac8d344fb916e3c94d62f776ef5713970c9.Init()
    /Users/juhwany/go_workspace/src/testplugin/post.go:9 +0x3a
main.main()
    /Users/juhwany/go_workspace/src/testplugin/main.go:17 +0xb7
FrozenDueToAge OS-Darwin

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@juhwany ์ด ๋ฌธ์ œ๋ฅผ ์‹ ๊ณ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด๋ฏธ ๋ฐœ๊ฒฌํ•œ https://github.com/golang/go/issues/23133 ์˜ ๋ณต์ œ๋ณธ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ๊ฒŒ์‹œํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์˜ ์ œ๋ชฉ์„ ๋ณ€๊ฒฝํ–ˆ์ง€๋งŒ ์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ์„ ๋ฟ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๋ฌธ์ œ๋„ ๊ณ„์†ํ•ด์„œ ์ œ๋ชฉ์„ ๋ณ€๊ฒฝํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

>๋ชจ๋“  ๋Œ“๊ธ€

@juhwany ์ด ๋ฌธ์ œ๋ฅผ ์‹ ๊ณ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด๋ฏธ ๋ฐœ๊ฒฌํ•œ https://github.com/golang/go/issues/23133 ์˜ ๋ณต์ œ๋ณธ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ๊ฒŒ์‹œํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์˜ ์ œ๋ชฉ์„ ๋ณ€๊ฒฝํ–ˆ์ง€๋งŒ ์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ์„ ๋ฟ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๋ฌธ์ œ๋„ ๊ณ„์†ํ•ด์„œ ์ œ๋ชฉ์„ ๋ณ€๊ฒฝํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰