1

나는 나중에 _mm256_store_pd(dst,q);를 사용하고 segfault의 여기 발생하는 이유는 무엇 지시왜 vmovapd가 segfault를 유발합니까?

vmovapd YMMWORD PTR [rdi],ymm0 

에서 가끔 세그먼테이션 폴트 (segfault)를 얻을 수

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

32 바이트로 정렬 복식의 배열을 할당 한? vmovapd은 정렬 이외의 이유로 segfault를 발생시킬 수 있습니까?

+1

'vmovapd가 정렬 이외의 이유로 segfault를 일으킬 수 있습니까? '예, NULL 포인터 (또는 다른 잘못된 액세스)에서. 디버거를 사용하여 결함이있는 지점에서 RDI를 살펴보고 잘못 배치되었거나 유효하지 않은지 여부를 확인하십시오. (gdb의'x' 명령을 사용하여 메모리를 덤프하십시오 .gdb가 유효하지 않은 액세스라고하면, 정렬 된 경우에도 잘못된 포인터라는 것을 알게됩니다.) –

+0

@PeterCordes 감사합니다. 포인터가 유효한지 확인했습니다. 코어 덤프를 조사한 결과 하나의 케이스에 포인터가 잘못 정렬되어있는 것을 발견했습니다. – stardt

답변

1

정렬되지 않은 포인터가 사용 된 코드의 다른 부분에 오류가있었습니다. Peter Cordes가 지적했듯이 또 다른 이유는 잘못된 포인터 일 수 있습니다.

관련 문제