Search
Duplicate

stack smashing detected 에러

간단소개
stack smashing detected 에러에 대해
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
C
Scrap
태그
error
9 more properties
스택에 선언한 메모리의 범위를 벗어나는 접근을 하게 되면 stack smashing detected라는 에러가 발생합니다. (저는 ubuntu에서 테스트 했습니다.)
예시 코드) // arr[10]으로 선언해 0~9의 index를 가지지만, memset함수가 arr[10], arr[11]에 접근합니다.
실행 결과)
gcc는 기본적으로 stack smashing을 보호해주기 때문에 값이 변하는 것을 볼 수는 없지만,
-fno-stack-protector 옵션으로 컴파일하면 다음과 같이 직접 값을 변경하지 않은 x와 y가 변하는 것을 볼 수 있습니다. (스택에 선언된 메모리들은 연속적으로 위치하기 때문인 것 같습니다.)
Memory View
클러스터 mac (ssh에서 테스트했습니다) 환경에선 다음과 같이 나타납니다.
이런 에러 나타난 경우에는 스택에 선언한 메모리 (특히 배열)의 값에 접근할 때 할당된 범위를 벗어나지 않았는지 체크해보면 좋을 것 같습니다.