[signin] Remove expired NotFatalUntil::M144 from signin CHECKs

IN REVIEW2026chrome/browser/signinnot-fatal-until
2026. 9. 15.jmsmg 프로필 이미지jmsmg

signin의 CHECK 세 곳에 붙어 있던 만료된 base::NotFatalUntil::M144 인자를 제거하고, 이 세 곳이 마지막 사용처였던 base/not_fatal_until.hM144 항목을 지웠습니다. M143 정리(8366188)와 같은 모양의 뒷정리이며, 트리가 M155라 이 CHECK들은 이미 11개 마일스톤째 fatal이었습니다.

문제 설명

  • issue url: crbug.com/435076172 (접근 제한 이슈. 원 코드의 TODO가 인용)
  • 2025-08 CL 6842550DiceWebSigninInterceptor의 계정 정보 관찰 해제를 CHECK(..., NotFatalUntil::M144)로 강제하면서 "크래시 보고가 없으면 일반 CHECK로 바꾸라"는 TODO를 남겼습니다. TurnSyncOnHelper에도 같은 마일스톤의 CHECK가 하나 더 있습니다.
  • 판정 로직(base/check.cc)은 지정 마일스톤이 현재 마일스톤 이하이면 그냥 fatal입니다. M155에서 M144 인자는 효과가 없고, base/not_fatal_until.h는 이미 fatal이 된 인자를 CHECK와 목록 양쪽에서 지우라고 명시합니다.

해결 내용

  1. CHECK에서 인자를 뺐고, 해결된 TODO 주석 2개와 더 이상 쓰이지 않는 base/not_fatal_until.h include를 지웠습니다.
  2. base/not_fatal_until.h에서 M144 = 144,를 삭제했습니다. git grep으로 트리 전체에 다른 M144 사용처가 없음을 확인했습니다.
-  // TODO(crbug.com/435076172): The issue is potentially already fixed, change
-  // this to a regular `CHECK()` if no crashes are reported.
-  CHECK(!account_info_update_observation_.IsObserving(),
-        base::NotFatalUntil::M144);
+  CHECK(!account_info_update_observation_.IsObserving());

동작 변화는 없습니다. 이미 fatal이었고 앞으로도 fatal입니다. 바뀌는 것은 코드 생성뿐이며, 공식 빌드에서 CHECK가 로그 문자열을 버리게 됩니다. 3파일 +3/−12.

발굴 과정

만료된 NotFatalUntil 사용처를 마일스톤 단위로 전 트리에 대해 다시 집계했습니다(09-15). M144는 사용처가 3곳뿐이고 전부 signin이라, 인자 제거와 enum 항목 삭제를 한 CL로 끝낼 수 있는 M143형 후보였습니다.

테스트 방법

런타임 동작이 바뀌지 않는 정리라 새 테스트는 없고 기존 테스트 통과와 컴파일이 검증입니다. base/ 헤더 한 줄 변경이라 사실상 전 트리가 다시 빌드됩니다.

  • unit_tests + base_unittests 전 트리 빌드: Mac M5, -j 6, 4시간 46분 / 59,127 스텝
  • unit_tests --gtest_filter='DiceWebSigninInterceptor*:TurnSyncOnHelper*' 95/95 통과
  • base_unittests --gtest_filter='CheckTest.*:CheckDeathTest.*' 26/26 통과 — enum 변경을 직접 검증하는 타깃

배운 점

  • base/ 헤더 변경은 변경 크기와 무관하게 전 트리 재빌드입니다. 이런 CL은 하루의 끝에 걸어 두고 다른 작업과 병행합니다.
  • 리뷰어는 처음부터 두 명, 그리고 base/를 건드리면 base OWNER를 그중 한 명으로 넣습니다. M143 때는 리뷰어 한 명이 prefs와 base OWNER를 겸해 우연히 해결됐지만, 이번엔 signin OWNER와 base OWNER를 각각 지정했습니다.

참고 자료