簡體   English   中英

__memcpy_ssse3()分段錯誤

[英]__memcpy_ssse3() segmentation fault

我正在使用Opencv,試圖復制從網絡攝像機捕獲的某些幀。 復制框架時,在__memcpy_ssse3() ,行160或1675中__memcpy_ssse3()分段錯誤。

gdb顯示:

0 __memmove_ssse3()位於../sysdeps/i386/i686/multiarch/memcpy-ssse3.S:1675

在/home/david/opencv/OpenCV/OpenCV-2.4.2/modules/core/src/copy.cpp:181中的cv :: Mat :: copyTo(this = 0xbfca3450,_dst = ...)中為1 0xb75ec6d0

在/home/david/opencv/OpenCV-2.4.2/modules/core/src/matrix.cpp:510上的cv :: Mat :: Mat(this = 0xbfca358c,img = 0xb1300c90,copyData = true)中為2 0xb75984f6

調用它的函數是cv::MAt::Mat(IplImg *I, bool copy)

當我打開USB攝像頭或文件時,一切都很完美,但是當嘗試通過IP從網絡攝像頭讀取視頻流時,它在一分鍾后崩潰。

我嘗試在不支持ssse3的情況下構建ffmpeg和opencv,我的應用程序也使用-mno-seee3標志進行編譯。

Opencv vesion是2.4.2,但是該問題也存在於2.3.1中。 ffmpeg版本是11.1,在8.X中是同樣的問題。 gcc版本是4.6.3,Ubuntu的分支。 處理器為Intel core2。

有什么提示嗎?

SSE操作中的分段錯誤是由於內存未對齊引起的。 嘗試傳遞-mpreferred-stack-boundary=4 -mstackrealign ,看看是否可以清除它。 如果是這樣,則需要檢查堆棧以找出哪個代碼未對齊。

謝謝大家,解決了。 線程之間的鎖定存在錯誤,並且以某種方式覆蓋了內存或在其他線程中釋放了內存。 修復了鎖定依賴性后,segfault問題就解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM