0
明確運行我有一個應用程序(makeahmap)的報告崩潰,當執行SIMD代碼:在Windows 8 SIMD/SSE代碼崩潰在Windows 7和Linux
https://github.com/artyom-beilis/makeahmap/blob/master/sources/makeahmap.cpp#L947
我不能準確地重現該問題我的機器上相同的輸入:
- 無論是Windows 7,我用我的Windows開發
- 也不在Linux上 - 還不止這些,該方案具有完美的valgrind下0錯誤運行。
- 所有加載和存儲都未對齊,並且所有值都具有較大的頁邊空白用於加載和保存16個字節的未對齊數據。
- 該計劃是32位,並使用MinGW的-G ++內置
問:
- 什麼樣的工具可以幫助我找到了墜毀在用戶的PC上的原因是什麼?
- 什麼東西可能會丟失?
我似乎記得gcc有這個錯誤,當它有時錯誤地推測堆棧是16字節對齊。嘗試'-mstackrealign'不會傷害我認爲 – Ap31
我沒有點擊鏈接查看你的代碼;它的相關部分應該在這裏。猜測:客戶的CPU是否支持您使用的SSE指令? – 1201ProgramAlarm
Windows 8,Windows 8.1和Windows 10不會安裝在不支持SSE,SSE2,NX或PAE的處理器上。所有的x64處理器都必須支持這些,所以操作系統也會強制檢查32位。請參閱[Windows 8.x系統要求](https://support.microsoft.com/en-us/help/12660/windows-8-system-requirements)。這也意味着您不能依靠SSE3,SSSE3,SSE4.x或AVX,並且必須檢查處理器支持,以確保您沒有使用這些指令之一。似乎應用程序不能確保所有情況下對齊的內存分配,只是在Windows 7上幸運。 –