스택에 선언한 메모리의 범위를 벗어나는 접근을 하게 되면 stack smashing detected라는 에러가 발생합니다. (저는 ubuntu에서 테스트 했습니다.)

예시 코드) // arr[10]으로 선언해 0~9의 index를 가지지만, memset함수가 arr[10], arr[11]에 접근합니다.

Screenshot from 2021-12-18 10-52-49.png

실행 결과)

Screenshot from 2021-12-18 10-50-52.png

gcc는 기본적으로 stack smashing을 보호해주기 때문에 값이 변하는 것을 볼 수는 없지만,

-fno-stack-protector 옵션으로 컴파일하면 다음과 같이 직접 값을 변경하지 않은 x와 y가 변하는 것을 볼 수 있습니다. (스택에 선언된 메모리들은 연속적으로 위치하기 때문인 것 같습니다.)

Screenshot from 2021-12-18 10-52-44.png

클러스터 mac (ssh에서 테스트했습니다) 환경에선 다음과 같이 나타납니다.

Screenshot from 2021-12-18 12-15-44.png

이런 에러 나타난 경우에는 스택에 선언한 메모리 (특히 배열)의 값에 접근할 때 할당된 범위를 벗어나지 않았는지 체크해보면 좋을 것 같습니다.