Skip to content

stack overflow가 발생하면 어떻게 되는지? MCU 환경에서 stack overflow를 탐지하거나 방지하는 방법에는 어떤 것들이 있는지? #21

@Jinsun-Lee

Description

@Jinsun-Lee
  1. 스택오버플로우는 스택이 다른 메모리 영역을 침범해, 전역변수나 힙을 덮어쓰는 현상이다
  2. MCU에서는 hardfault나 ISR 진입 후 제대로 동작하지 않는 것, 이상한 값으로 변수가 수정되는 문제가 발생할 수 있다
  3. 이는 재귀 호출이 계속되거나, ISR에서 큰 메모리의 변수 선언, printf같은 heavy 함수 사용, RTOS task stack size를 작게 설정하는 것들이 원인이 된다
  4. 으으으으음 MCU에서 스택 영역을 0xAA로 초기화해서 얼마나 영향을 끼치는지 확인하거나, Memory Protection Unit을 사용해서 스택 영역 끝에 접근 금지 영역을 설정해 두고 침범 시에 MemManage Fault를 발생시키는 것이 좋다

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions