问题分析及记录../sysdeps/x86_64/multiarch/../memcpy.S: 没有那个文件或目录.

在Linux项目开发中,运行人脸检测程序出现'./sysdeps/x86_64/multiarch/../memcpy.S:没有文件或目录'错误。经排查,并非memcpy操作问题,而是电脑安装的sdl2库与程序需求的sdl1版本不匹配。卸载重装sdl1版本库后,程序成功运行,说明库版本会影响程序运行。

在Linux的项目开发中,今天运行程序时出现:./sysdeps/x86_64/multiarch/../memcpy.S:没有文件或目录错误。该程序是进行人脸检测的,其有用到gtk、sdl库,因为我虚拟机已经有sdl2版本的库,所以很快就编译过了,但是运行却出错了,段错误。

折腾了一下,先是百度搜索,看到说一般不是因为缺少该文件,而是因为memcpy操作时可能数组溢出、或者空指针问题,然后我用gdb调试跟进去一看似乎并不是这个问题。

 

(gdb) r pictures/man.jpg
Starting program: /home/qihua/myhome/Facecatch-master/src/facecatch pictures/man.jpg
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
__memcpy_sse2 () at ../sysdeps/x86_64/multiarch/../memcpy.S:201
201    ../sysdeps/x86_64/multiarch/../memcpy.S: 没有那个文件或目录.
(gdb) bt
#0  __memcpy_sse2 () at ../sysdeps/x86_64/multiarch/../memcpy.S:201
#1  0x00007ffff70aa323 in __GI__IO_file_xsgetn (fp=0x618010, 
    data=<optimized out>, n=84) at fileops.c:1387
#2  0x00007ffff709f86f in __GI__IO_fread (buf=<optimized out>, size=1, 
    count=84, fp=0x618010) at iofread.c:42
#3  0x00007ffff7b55d8e in ?? () from /usr/lib/x86_64-linux-gnu/libSDL-1.2.so.0
#4  0x00007ffff7921415 in ?? ()
   from /usr/lib/x86_64-linux-gnu/libSDL2_image-2.0.so.0
#5  0x00007ffff7921141 in IMG_LoadTyped_RW ()
   from /usr/lib/x86_64-linux-gnu/libSDL2_image-2.0.so.0
#6  0x0000000000414942 in load_image (path=0x7fffffffe2a7 "pictures/man.jpg")
    at sdl_functions.c:49
#7  0x00000000004156eb in facial_recognition (
    path=0x7fffffffe2a7 "pictures/man.jpg") at sdl_functions.c:354
#8  0x0000000000400fcc in main (argc=2, argv=0x7fffffffdf18) at facecatch.c:7

 

然后想到我电脑安装的sdl2以及sdl2-image库,而程序需求的是sdl1版本的库,虽然一开始能够编译过,但是运行时却报错了,于是我把库卸载重新安装了sdl1版本及相关的库文件,后面就成功运行了。

总结:库的版本也可能影响程序的正确运行与否。

附:人脸检测源码下载链接:https://github.com/evadeo/Facecatch

附:SDL相关库的安装介绍blog:https://blog.youkuaiyun.com/mleem/article/details/51222156

 


 

#0 __memcpy_generic () at ../sysdeps/aarch64/multiarch/../memcpy.S:163 #1 0x00000000004a0efc in std::_Construct<esw::SingleProcessedData, esw::SingleProcessedData&> (__p=<optimized out>) at /usr/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/7.3.1/bits/stl_construct.h:75 #2 std::__uninitialized_copy<false>::__uninit_copy<esw::SingleProcessedData*, esw::SingleProcessedData*> (__result=<optimized out>, __last=<optimized out>, __first=0xffff637f0600) at /usr/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/7.3.1/bits/stl_uninitialized.h:83 #3 std::uninitialized_copy<esw::SingleProcessedData*, esw::SingleProcessedData*> (__result=<optimized out>, __last=<optimized out>, __first=<optimized out>) at /usr/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/7.3.1/bits/stl_uninitialized.h:134 #4 std::__uninitialized_copy_a<esw::SingleProcessedData*, esw::SingleProcessedData*, esw::SingleProcessedData> (__result=0x3ff09ee2435696e6, __last=0xffff637f0ab0, __first=0xffff637f0600) at /usr/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/7.3.1/bits/stl_uninitialized.h:289 #5 std::vector<esw::SingleProcessedData, std::allocator<esw::SingleProcessedData> >::_M_range_insert<esw::SingleProcessedData*> ( this=this@entry=0xffff5c02c530, __position=<error reading variable: Cannot access memory at address 0xbfb6ea48ec621fc7>, __first=__first@entry=0xffff637f0600, __last=0xffff637f0ab0, __last@entry=0xffff637f0af0) at /usr/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/7.3.1/bits/vector.tcc:657 #6 0x000000000049f45c in std::vector<esw::SingleProcessedData, std::allocator<esw::SingleProcessedData> >::_M_insert_dispatch<esw::SingleProcessedData*> (__last=<optimized out>, __first=0xffff637f0640, __pos=..., this=0xffff5c02c530) at /usr/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/7.3.1/bits/stl_vector.h:1406 #7 std::vector<esw::SingleProcessedData, std::allocator<esw::SingleProcessedData> >::insert<esw::SingleProcessedData*, void> ( __last=<optimized out>, __first=0xffff637f0640, __position=..., this=0xffff5c02c530) at /usr/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/include/c++/7.3.1/bits/stl_vector.h:1132 #8 esw::MagTracking::SolveSingleSensor (this=0xffff5c02adb0, vecRawData=..., trackingResult=...) at /mnt/v1/wenzhao.huang/Emts-alg/BoardSoftware/Algorithm/src/emts_alg_mag_tracking.cpp:235 #9 0x0000000000436ac4 in esw::TerminalController::GetTrackingResult (this=this@entry=0xffff5c014778, singleDataVec=..., singleUnit=<optimized out>, exception=@0xffff5c01bd9a: 0, location=...) at /mnt/v1/wenzhao.huang/Emts-alg/BoardSoftware/Feature/src/emts_feature_terminal_controller.cpp:194 #10 0x0000000000434d2c in esw::TrackingManager::Run (this=0xffff5c013bf0) at /mnt/v1/wenzhao.huang/Emts-alg/BoardSoftware/Feature/src/emts_feature_tracking_manager.cpp:192 #11 0x0000ffff8707af9c in ?? () from /lib/aarch64-linux-gnu/libstdc++.so.6 #12 0x0000ffff871b2624 in start_thread (arg=0xffff8707af80) at pthread_create.c:477 #13 0x0000ffff86def62c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78
08-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值