이거 보셈.
이.. 지긋지긋해.. 1000번 딸깍하도고 아직도 안 끝났네.
4시간 걸려서 끝난 줄 알았는데 그게 아니라..
24시간 투입되어야 끝날 듯,
즉, 3일 걸린다는 얘기임.
────────────────────────────────────────────────────────────────────────────────
• 문제 발견해서 중단합니다.
Clair.Regex의 상태 코드 계약이 아직 완전하지 않습니다. 문서상 canonical API는
recoverable failure를 Status.Code로 보고해야 하고, Regex spec도 allocation
failure를 OUT_OF_MEMORY로 문서화했습니다.
문제 지점:
- src/clair-regex.adb:75의 Interfaces.C.to_c (expression)
- src/clair-regex.adb:127의 Interfaces.C.to_c (text)
이 변환은 입력 크기가 크거나 메모리가 부족하면 Ada 예외를 낼 수 있는데, 현재
compile, search, full_match는 이를 Clair.Status.OUT_OF_MEMORY로 변환하지 않습
니다. PCRE2 내부의 PCRE2_ERROR_NOMEMORY만 처리하고 있습니다.
rake test는 통과했습니다. 하지만 대규모/극한 입력에서 문서화된 OUT_OF_MEMORY
경로가 아니라 예외 전파가 발생할 수 있어 docs/ENGINEERING-PRINCIPLES.md의
canonical status-code API 원칙과 어긋납니다.
댓글 0