2016-10-09 11 views
1

私は後で_mm256_store_pd(dst,q);を使用して、ここでセグメンテーション違反が発生んなぜ命令なぜvmovapdがsegfaultを引き起こしますか?

vmovapd YMMWORD PTR [rdi],ymm0 

で時折セグメンテーションフォールトを取得

double *dst; 
posix_memalign((void**)&dst, 32, 4*sizeof(double)); 

で32バイトにアラインdoubleの配列を割り当てられていますか? vmovapdは、整列以外の理由でセグメンテーションを引き起こす可能性がありますか?

+1

'アラインメント以外の理由でvmovapdがsegfaultを引き起こす可能性がありますか? 'はい、NULLポインタ(または他の無効なアクセス)。デバッガを使用して、障害が発生した場所でRDIを見て、RDIの位置がずれているかどうかを確認します。 (gdbの 'x'コマンドを使ってメモリをダンプしようとするとgdbに無効なアクセスがあったとしたら、それが整列していても悪いポインタだということが分かります) –

+0

@PeterCordesありがとう、私はコアダンプを調べ、1つのケースでポインタの位置がずれていることがわかりました。 – stardt

答えて

1

コードのどこかにエラーがあり、ポインタの位置がずれることがありました。 Peter Cordes氏が指摘しているように、もう一つの理由は無効なポインタかもしれない。

関連する問題