2 jerryliun jerryliun 于 2017.09.04 10:58 提问

golang调用C库运行一段时间会core怎么办

我是通过golang调用c库,版本是 1.12.5,主要使用upsert接口,并发写入,高并发时达到上千,但发现运行一段时间后,就会core掉,信息如附件1.png所示,
图片说明
追踪代码至附件2.png所示。
图片说明
推测是 gethostbyname 返回结果直接调用 h_addr_list[0] 导致的错误,按理说返回值不是NULL,那么 h_addr_list有可能是NULL 吗?

1个回答

SequoiaDB_Official
SequoiaDB_Official   2017.09.04 11:01
已采纳

目前(v2.8)该问题已在内部修复,linux下应该用gethostbyname_r,带"_r"的表示可重入。
图片说明
1.12.5以后的版本已修复该问题。如果社区的用户需要,可自己下载sdb源码,编译C驱动(只有C驱动存在该问题),编译方式见github(https://github.com/SequoiaDB)。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Golang通过GOTRACEBACK生成程序崩溃后core文件的方
前段时间本博主一直在做Golang和C语言的混合编程,期间在通过cgo调用C语言库时会出现程序崩溃的情况,于是就希望能够生成core文件来查看程序崩溃时的堆栈信息。那么Golang程序如何在崩溃后生成core文件呢?答案就是GOTRACEBACK这个环境变量。        关于GOTRACEBACK环境变量的详细说明,可以参考官方文档在runtime一节的链接,这里仅列出文档中
CGO,GOLANG调用C库,调用代码、静态库或动态库
CGOCGO可以让golang和c互相调用,譬如x264或者aac编解码,用go再实现一遍比较麻烦,直接调用c的函数会更合适。 CGO可以直接用C的代码,或者C的静态库,或者动态库,当然C++也是可以的。参考这两篇文章,讲得很清楚: https://golang.org/cmd/cgo/ https://blog.golang.org/c-go-cgo有个例子,go调用x264的函数:http
golang之cgo---调用C/C++动态库函数
之前说过golang调用C代码的方式可以通过cgo或者是swig,而cgo是不能使用C++相关的东西的,比如标准库或者C++的面向对象特性。怎么办,将c++的功能函数封装成C接口,然后编译成动态库,或者是功能较为简单的可以直接嵌入到go源文件中。   cgo的使用是在linux平台上,在windows平台上可以配置交叉编译器。动态库头文件:myfuns.h #pragma once#include
GoLang之调用C接口的使用方法
2014-06-10 wcdj Go的官网经常被墙,导致hen
当GOLang遇到大量ESTABLISHED时
当go程序运行一段时间后,使用netstat -a查看,就出现大量的ESTABLISHED
Golang1.7动态库的使用,C和Golang的动态库以及使用
项目目录 root@working-srv:/data/code/src# tree project workspace/ project └── pro.go workspace/ └── main.go main.gopackage main import ( "project" )func main() { project.Hello() pro
Go语言学习之cgo(golang与C语言相互调用)
生命不止,继续 go go go !!!几乎所有的编程语言都有C语言的影子,当然golang也不例外。可以看到golang的创始者们与c language有着密切的联系。所有,golang和c语言的相互调用也是理所应当。什么场合会使用Go与C的互操作呢? 下面的地址给出这样的答案:http://tonybai.com/2012/09/26/interoperability-between-go-a
golang调用动态库
测试动态库 test_so.h int test_so_func(int a,int b);   test_so.c #include "test_so.h" int test_so_func(int a,int b) { return a*b; } 生成so gcc -shared ./test_so.c -o test_so.so 复制so文件
Golang1.8编译静态库给C使用
Go实例代码:package mainimport ( "fmt" )import "C"//export Printf func Printf(format, str string) { fmt.Printf(format, str) }func main(){} 编译命令: go build -ldflags “-s -w” -buildmode=c-archive -o pr
全面总结: Golang 调用 C/C++,例子式教程
https://www.cnblogs.com/linguanh/p/8323487.html 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguanh/ GitHub : https://github.com/af913337456/