报错:rk3588运行python程序报错Segmentation fault (core dumped),代码调试

问题

在rk3588上,python程序运行过程中报错 Segmentation fault (core dumped)

分析

利用gdb,操作方式如下:

gdb python
(gdb) run main.py
## wait for segfault ##
(gdb) backtrace   #(或者bt)
## stack trace of the py code

run main.py 执行后,报错情况取下: 

Thread 40 "python" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xffff609ba120 (LWP 198528)]
0x0000fffff5b8d6c0 in QObject::thread() const () from /userdata/xxx/miniforge3/envs/safeguard/lib/python3.9/site-packages/PyQt5/../../../libQt5Core.so.5
Missing separate debuginfos, use: dnf debuginfo-install bzip2-1.0.8-6.oe2203.aarch64 elfutils-0.185-13.oe2203.aarch64 fribidi-devel-1.0.10-2.oe2203.aarch64 jbigkit-libs-2.1-19.oe2203.aarch64 libXcursor-1.2.0-1.oe2203.aarch64 libXfixes-6.0.0-1.oe2203.aarch64 libXxf86vm-1.1.4-13.oe2203.aarch64 libdrm-2.4.109-3.oe2203.aarch64 libglvnd-1.3.4-2.oe2203.aarch64 libglvnd-glx-1.3.4-2.oe2203.aarch64 libjpeg-turbo-2.1.1-2.oe2203.aarch64 libselinux-3.3-1.oe2203.aarch64 libtiff-4.3.0-34.oe2203.aarch64 libxshmfence-1.3-7.oe2203.aarch64 llvm-libs-12.0.1-2.oe2203.aarch64 mesa-dri-drivers-21.3.1-1.oe2203.aarch64 mesa-libGL-21.3.1-1.oe2203.aarch64 mesa-libglapi-21.3.1-1.oe2203.aarch64

执行:bt

(gdb) bt
#0  0x0000fffff5b8d6c0 in QObject::thread() const ()
   from /userdata/xxx/miniforge3/envs/xxx/lib/python3.9/site-packages/PyQt5/../../../libQt5Core.so.5
#1  0x0000ffffdb56286c in cvShowImage () from /userdata/local/opencv/lib64/libopencv_highgui.so.407
#2  0x0000ffffdb552154 in cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&) ()
   from /userdata/local/opencv/lib64/libopencv_highgui.so.407
#3  0x0000ffffdc918e9c in pyopencv_cv_imshow(_object*, _object*, _object*) ()
   from /userdata/xxx/miniforge3/envs/xxx/lib/python3.9/site-packages/cv2/python-3.9/cv2.cpython-39-aarch64-linux-gnu.so
#4  0x0000aaaaaacb034c in cfunction_call ()
#5  0x0000aaaaaab1d240 in _PyObject_MakeTpCall ()
#6  0x0000aaaaaab0e960 in _PyEval_EvalFrameDefault ()
#7  0x0000aaaaaab06320 in function_code_fastcall ()
#8  0x0000aaaaaac9ad9c in method_vectorcall ()
#9  0x0000aaaaaab087a8 in _PyEval_EvalFrameDefault ()
#10 0x0000aaaaaab06320 in function_code_fastcall ()
#11 0x0000aaaaaab0c77c in _PyEval_EvalFrameDefault ()
#12 0x0000aaaaaab06320 in function_code_fastcall ()
#13 0x0000aaaaaab0c77c in _PyEval_EvalFrameDefault ()
#14 0x0000aaaaaab06320 in function_code_fastcall ()
#15 0x0000aaaaaac9ad9c in method_vectorcall ()
#16 0x0000aaaaaac60770 in t_bootstrap ()
#17 0x0000aaaaaac00eb4 in pythread_wrapper ()
#18 0x0000fffff7d8d1e8 in ?? () from /usr/lib64/libc.so.6
#19 0x0000fffff7df459c in ?? () from /usr/lib64/libc.so.6

解决思路:

该程序在rk3588+Ubuntu上运行正常,所有优先考虑迁移到rk3588+openEuler后环境的问题,通过排查,最终定位代码问题,通过修改代码进行适配。

参考:【Q&A】Python代码调试之解决Segmentation fault (core dumped)问题-CSDN博客

猜你喜欢

转载自blog.csdn.net/qq_32636415/article/details/134963102