1
я выделил массив двойников выровненный до 32 байт сПочему vmovapd вызывает segfault?
double *dst;
posix_memalign((void**)&dst, 32, 4*sizeof(double));
позже я использую _mm256_store_pd(dst,q);
и получить случайные ошибки сегментации в инструкции
vmovapd YMMWORD PTR [rdi],ymm0
Почему происходят здесь выдаёт ошибку сегментации? Может ли vmovapd
вызвать segfault по другой причине, кроме выравнивания?
'Может ли vmovapd вызывать segfault по другой причине, кроме выравнивания?' Да, на указателях NULL (или других недопустимых доступах). Используйте отладчик и посмотрите на RDI в том месте, где он неисправен, чтобы увидеть, было ли оно неверно или просто неверно. (Попробуйте использовать команду 'x' gdb, чтобы сбросить память там. Если gdb говорит о некорректном доступе, то вы знаете, что это плохой указатель, даже если он выровнен.) –
@PeterCordes Спасибо, я проверил, что указатели действительны. Я рассмотрел дамп ядра и обнаружил, что в одном случае я передавал неверный указатель. – stardt