首页 > 系统相关 >Linux 上 libcurl库 curl_easy_perform Crash(signal 11 - SIGSEGV)

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

时间:2023-02-11 17:36:44浏览次数:46  
标签:11 PS Crash SIGSEGV libcurl easy Linux curl 上传

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

PS: 这个只是基于《我自己》的理解,

如果和你的原则及想法相冲突,请谅解,勿喷。

前置说明

  本文作为本人csdn blog的主站的备份。(BlogID=071)
  本文发布于 2018-10-10 10:53:14,现用MarkDown+图床做备份更新。blog原图已丢失,使用csdn所存的图进行更新。(BlogID=071)

环境说明

  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上传普通数据的时候无异常?这里就留个有缘人去测试吧,希望哪个大佬,找出原因了告诉我!!!





后记


  无

参考文献




打赏、订阅、收藏、丢香蕉、硬币,请关注公众号(攻城狮的搬砖之路)
qrc_img

PS: 请尊重原创,不喜勿喷。

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

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

标签:11,PS,Crash,SIGSEGV,libcurl,easy,Linux,curl,上传
From: https://www.cnblogs.com/Iflyinsky/p/17112164.html

相关文章