OSSCA Chromium

기여 목록 / 8483655

base: Check ThreadPool worker creation succeeds

BasefixMerged

ThreadPool worker 생성 실패를 유효한 스레드 핸들에 대한 CHECK로 감지하도록 변경했습니다. 공식 빌드에서는 M160 전까지 비치명 보고를 수집하는 단계적 적용을 사용합니다.

문제 설명

WorkerThread::Start()는 스레드 핸들이 생성되지 않으면 false를 반환했습니다. 하지만 pooled single-thread task runner는 그 반환값을 무시할 수 있어, 실행되지 않을 worker에 작업을 받아들이는 상황이 생길 수 있었습니다.

해결 내용

  1. PlatformThread::CreateWithType() 호출 뒤 thread_handle_이 null인지 확인하던 반환 분기를 CHECK(!thread_handle_.is_null(), base::NotFatalUntil::M160)로 바꿉니다.
  2. 공식 빌드에서는 M160 전까지 비치명 보고로 실패 빈도를 확인하고, M160부터 실패를 치명적으로 처리하도록 합니다. 모든 빌드에서 즉시 프로세스를 종료하도록 바뀐 것은 아닙니다.

테스트 방법

  • 최신 패치는 base/task/thread_pool/worker_thread.cc 한 파일만 변경하며 새 테스트를 추가하지 않습니다.
  • 확인한 검증 근거는 아래 최신 패치셋의 CQ 통과 기록입니다. 스레드 생성 실패를 로컬에서 주입해 검증했다고 주장하지 않습니다.

Gerrit 기록상 Patch Set 6는 2026-10-03 UTC에 CQ 실행을 통과했습니다. 보고서 작성 과정에서 Chromium 테스트를 별도로 실행하지는 않았습니다.

관련 이슈와 외부 PR

배운 점

  • 실패 반환값이 있어도 호출자가 검사하지 않으면 작업이 조용히 멈출 수 있습니다.
  • CHECK 도입은 실패를 탐지하는 방식뿐 아니라 공식 빌드에서 언제 치명적으로 적용할지도 함께 검토해야 합니다.

참고 자료