打印

出现这种core dump是怎能回事?SIGSEGV

[复制链接]
315|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
keer_zu|  楼主 | 2023-2-14 16:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Crash- signal SIGSEGV, Segmentation fault. ../sysdeps/x86_64/strlen.S: No such file or directory.


还有类似:
Program terminated with signal SIGSEGV, Segmentation fault.
#0  __cxxabiv1::__cxa_end_catch ()
    at ../../../../../libstdc++-v3/libsupc++/eh_catch.cc:97
97      ../../../../../libstdc++-v3/libsupc++/eh_catch.cc: No such file or directory.

使用特权

评论回复
沙发
keer_zu|  楼主 | 2023-2-15 10:20 | 只看该作者


例子1的表现:
Core was generated by `./testjsonc'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 strlen () at ../sysdeps/x86_64/strlen.S:106
106 ../sysdeps/x86_64/strlen.S: No such file or directory.
#0 strlen () at ../sysdeps/x86_64/strlen.S:106
1 0x00007f46ecfa08d0 in json_object_nget_value ()
2 0x00007f46ecfa307c in json_object_get_value ()
3 0x00007f46ecfa30a1 in json_object_get_string ()



问题可能是这样:
json-c和parson都定义了函数json_object_get_string()(以及其他一些函数)。当需要将已编译的c或c++对象链接到您使用的库以创建可执行文件时,链接器在某些地方链接到错误的json_object_get_string()。你不能同时链接到两个提供相同符号(例如函数)不同版本的库,至少没有一些非常复杂和高级的技巧。


使用特权

评论回复
板凳
keer_zu|  楼主 | 2023-2-15 10:23 | 只看该作者
一种解决办法:
如果你在你的应用程序中没有显式地链接到parson,我猜是你正在使用的某个库,可能间接地,链接到另一个json库。如果两者都需要,没有简单的解决方案。处理它的一种可能的方法是将你的应用程序分成两部分,一部分使用json-c,另一部分使用parson,然后为这两部分定义某种通信方式。
另外,你也可以创建一个本地的json-c或parson的拷贝,以某种方式重命名每个符号,然后重建所有的东西来使用重命名的符号(例如,通过像#define json_object_get_string _foo_json_object_get_string等…)

使用特权

评论回复
地板
keer_zu|  楼主 | 2023-2-15 10:23 | 只看该作者
解决办法:
如果你在你的应用程序中没有显式地链接到parson,我猜是你正在使用的某个库,可能间接地,链接到另一个json库。如果两者都需要,没有简单的解决方案。处理它的一种可能的方法是将你的应用程序分成两部分,一部分使用json-c,另一部分使用parson,然后为这两部分定义某种通信方式。
另外,你也可以创建一个本地的json-c或parson的拷贝,以某种方式重命名每个符号,然后重建所有的东西来使用重命名的符号(例如,通过像#define json_object_get_string _foo_json_object_get_string等…)

使用特权

评论回复
5
keer_zu|  楼主 | 2023-2-15 10:24 | 只看该作者
实例2很可能也是库的原因

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1352

主题

12436

帖子

53

粉丝