유령 같은 임베디드 버그 추적: 에러 -22
2025-01-26

Tweede golf팀은 nRF9160 마이크로컨트롤러용 임베디드 Rust 소프트웨어에서 매우 까다로운 버그를 발견했습니다. 데이터를 전송하려고 하면 Error::NrfError(-22) 에러가 발생하는 문제였습니다. 수 주간의 조사 끝에 문제는 libmodem 라이브러리의 초기화 함수에 있음을 알게 되었습니다. 스택에 할당된 설정 구조체의 포인터가 구조체가 소멸된 후에도 사용되었기 때문에 공유 메모리 영역 설정에 의도치 않은 쓰기가 발생하여 데이터 길이가 0이 되었습니다. 마지막으로 `black_box`를 추가하고 워치포인트를 사용하여 디버깅함으로써 버그를 찾아 수정할 수 있었습니다. 팀은 이러한 저수준 에러를 방지하기 위해 임베디드 개발에서 Rust를 사용하는 이점을 강조했습니다.
개발