如题,通过golang调用巨杉c库,可以正常运行,但运行一段时间后就会core,gdb信息如下,调用sdbConnect和sdbConnect1都会抛出相同错误,很诡异。有时运行几分钟会core,有时运行俩三天才会core,我们每次会写入大量数据,可以认为1小时会有几十万次upsert操作,会并发进行操作。线上是云主机环境,巨杉版本是1.12.4,尝试用1.12.5 c库运行报相同错误,下面的gdb是通过1.12.5版本的c库运行的
这是通过sdbConnect建立连接时
#0 runtime.raise () at /home/lizhengxu/tmp/go/src/runtime/sys_linux_amd64.s:110
#1 0x0000000000440458 in runtime.dieFromSignal (sig=6) at /home/lizhengxu/tmp/go/src/runtime/signal1_unix.go:192
#2 0x000000000044057f in runtime.crash () at /home/lizhengxu/tmp/go/src/runtime/signal1_unix.go:247
#3 0x000000000042e38e in runtime.dopanic_m (gp=0xc821a5ac00, pc=4382096, sp=140175644784776) at /home/lizhengxu/tmp/go/src/runtime/panic.go:659
#4 0x0000000000453572 in runtime.dopanic.func1 () at /home/lizhengxu/tmp/go/src/runtime/panic.go:534
#5 0x000000000045c7eb in runtime.systemstack () at /home/lizhengxu/tmp/go/src/runtime/asm_amd64.s:307
#6 0x000000000042dcf1 in runtime.dopanic (unused=0) at /home/lizhengxu/tmp/go/src/runtime/panic.go:535
#7 0x000000000042dd90 in runtime.throw (s=...) at /home/lizhengxu/tmp/go/src/runtime/panic.go:547
#8 0x000000000044235a in runtime.sigpanic () at /home/lizhengxu/tmp/go/src/runtime/sigpanic_unix.go:12
#9 0x00007f80a479c728 in clientConnect (pHostName=0x3 , pServiceName=0xb376c0 "\n", useSSL=0, sock=0x7f7fb8007708) at SequoiaDB/engine/client/network.c:95
#10 0x00007f80a478af73 in _sdbConnect (pHostName=0x7f7d2f837b40 "10.0.0.0", pServiceName=0x7f7d2f837b00 "11810", pUsrName=0x7f7d2f837ac0 "", pPasswd=0x7f7d2f837a80 "", useSSL=0,
handle=0x7f7fb80076c0) at SequoiaDB/engine/client/client.c:1291
#11 0x00000000009652c3 in iSdbConnect (host=, port=, usrName=, passwd=0x7f7fb80076a0 "", connection=)
at /home/lizhengxu/go/zeus/zeus_stats_info/src/zeus_stats_info/processor/util.go:27
#12 0x00000000009653a9 in _cgo_980604af2394_C2func_iSdbConnect (v=0xc82103f808) at /home/lizhengxu/go/zeus/zeus_stats_info/src/zeus_stats_info/processor/util.go:69
#13 0x000000000045e180 in runtime.asmcgocall () at /home/lizhengxu/tmp/go/src/runtime/asm_amd64.s:582
#14 0x0000000000000008 in ?? ()
#15 0x000000c82103f778 in ?? ()
#16 0x000000000040448a in runtime.cgocall (fn=0xc82001b500, arg=0x0, ~r2=564505600) at /home/lizhengxu/tmp/go/src/runtime/cgocall.go:110
#17 0x00000000004321f0 in runtime.startTheWorldWithSema () at /home/lizhengxu/tmp/go/src/runtime/proc.go:986
#18 0x000000c82001b500 in ?? ()
#19 0x0000000000000000 in ?? ()
这是通过sdbConnect1建立连接时
#0 runtime.raise () at /home/lizhengxu/tmp/go/src/runtime/sys_linux_amd64.s:110
#1 0x00000000004404a8 in runtime.dieFromSignal (sig=6) at /home/lizhengxu/tmp/go/src/runtime/signal1_unix.go:192
#2 0x00000000004405cf in runtime.crash () at /home/lizhengxu/tmp/go/src/runtime/signal1_unix.go:247
#3 0x000000000042e3de in runtime.dopanic_m (gp=0xc8204ba180, pc=4382176, sp=140707190782328) at /home/lizhengxu/tmp/go/src/runtime/panic.go:659
#4 0x00000000004535c2 in runtime.dopanic.func1 () at /home/lizhengxu/tmp/go/src/runtime/panic.go:534
#5 0x000000000045c83b in runtime.systemstack () at /home/lizhengxu/tmp/go/src/runtime/asm_amd64.s:307
#6 0x000000000042dd41 in runtime.dopanic (unused=0) at /home/lizhengxu/tmp/go/src/runtime/panic.go:535
#7 0x000000000042dde0 in runtime.throw (s=...) at /home/lizhengxu/tmp/go/src/runtime/panic.go:547
#8 0x00000000004423aa in runtime.sigpanic () at /home/lizhengxu/tmp/go/src/runtime/sigpanic_unix.go:12
#9 0x00007ff90e069728 in clientConnect (pHostName=0x3 , pServiceName=0xb378d8 "\n", useSSL=0, sock=0x7ff8dc003f08) at SequoiaDB/engine/client/network.c:95
#10 0x00007ff90e057f73 in _sdbConnect (pHostName=0x7ff8dc000ae0 "10.0.0.0", pServiceName=0x7ff8dc000aed "11810", pUsrName=0x7ff8dc000a60 "", pPasswd=0x7ff8dc000a80 "", useSSL=0,
handle=0x7ff8dc003620) at SequoiaDB/engine/client/client.c:1291
#11 0x00007ff90e0582be in _sdbConnect1 (pConnAddrs=0xc820afdfc0, arrSize=3, pUsrName=0x7ff8dc000a60 "", pPasswd=0x7ff8dc000a80 "", useSSL=0, handle=0x7ff8dc003620)
at SequoiaDB/engine/client/client.c:1421
#12 0x00000000009653a8 in _cgo_7399d60e875e_C2func_sdbConnect1 (v=0xc820a477d0) at /home/lizhengxu/go/zeus/zeus_stats_info/src/zeus_stats_info/processor/util.go:70
#13 0x000000000045e1d0 in runtime.asmcgocall () at /home/lizhengxu/tmp/go/src/runtime/asm_amd64.s:582
#14 0x0000000000000008 in ?? ()
#15 0x000000c820a47738 in ?? ()
#16 0x00000000004044da in runtime.cgocall (fn=0xc820023500, arg=0x0, ~r2=541827456) at /home/lizhengxu/tmp/go/src/runtime/cgocall.go:110
#17 0x0000000000432240 in runtime.startTheWorldWithSema () at /home/lizhengxu/tmp/go/src/runtime/proc.go:986
#18 0x000000c820023500 in ?? ()
#19 0x0000000000000000 in ?? ()
这里_sdbConnect 时传入的host地址,因为是线上环境,改写成了"10.0.0.0",其余信息是gdb完整输出,源地址格式是"xx.xx.xx.xxx"
可以看到_sdbConnect (pHostName=0x7ff8dc000ae0 "10.0.0.0", pServiceName=0x7ff8dc000aed "11810", 的地址都是正确的,但到了clientConnect (pHostName=0x3 , pServiceName=0xb378d8 "\n", 这里就错了 ,纠结俩周一直没能找出原因,不知哪位大牛有碰到过吗?