Linux 上 libcurl库 curl_easy_perform Crash(signal 11 - SIGSEGV)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011728480/article/details/82992159

#PS:要转载请注明出处,本人版权所有

#PS:这个只是 《 我自己 》理解,如果和你的

#原则相冲突,请谅解,勿喷

system info :Linux 4.2.0-27-generic #32~14.04.1-Ubuntu SMP Fri Jan 22 15:32:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

安装libcurl的方法

sudo apt install libcurl4-openssl-dev  libcurl3

实际遇到的问题

在一个ARM_Linux的程序中,涉及到用curl_easy_perform上传json数据到后台和用curl_easy_perform模拟表单上传带图片和文件的数据。
在上传的过程中,出现了让人费解的情况:在上传json数据的时候一切正常,但是上传带图像的表单数据的时候,出现了访问非法地址的问题(signal 11 - SIGSEGV)。

网上的一系列可能导致此问题的原因

1 curl_global_init()和curl_global_cleanup() 调用线程不安全,可能会导致程序异常退出,需要注意。
2 多线程环境下,https请求时,由于libopenssl 不支持多线程,出现crash,这里需要在调用libcurl之前,先设置openssl的 互斥锁 回调接口,这样才能保证线程安全。
3 libcurl库的debug和release混用的问题,就是说release程序用release库,debug程序用debug库。

结论

经过测试,发现就是第三个原因导致的我程序崩溃,可是为何debug和release只对在上传表单的时候crash起作用,而在post上传普通数据的时候无异常?这里就留个有缘人去测试吧,希望哪个大佬,找出原因了告诉我!!!
#PS:请尊重原创,不喜勿喷

#PS:要转载请注明出处,本人版权所有.

有问题请留言,看到后我会第一时间回复

猜你喜欢

转载自blog.csdn.net/u011728480/article/details/82992159