AOSP 소스 지연, 개발자들이 라이브러리 역분석
원제: AOSP Source Releases Are So Late Developers Disassemble Libraries to Report Bugs
왜 중요한가
AOSP 소스 공개 지연이 개발자 생태계 신뢰를 저하시키고, 오픈소스 원칙과의 괴리를 심화시키고 있다.
2026년 10월 12일, 개발자 francisdb가 Android 17 NDK 버그 트래커에 이슈 #2260을 등록했다. Android 17 September 빌드(CP3A.260905.009)에서 wcscspn()/wcspbrk() 함수가 U+0100 이상의 wchar_t 문자를 무조건 일치 항목으로 처리하는 버그가 Pixel 7, Pixel 8a 등에서 확인됐다.
문제의 핵심은 함수 동작 오류다. U+0100 이상의 문자(이모지, CJK, 키릴, 그리스 문자 등)가 포함된 와이드 문자열을 ASCII 구분자로 스캔할 때, wcscspn()과 wcspbrk()가 해당 문자를 거부 집합에 없음에도 일치로 판단해 즉시 멈춘다. wcsspn(), wcschr(), wcsrchr() 등 다른 함수는 정상 동작한다.
더 큰 문제는 버그 원인 추적 과정에서 드러났다. 공개된 android17-release 소스(android-17.0.0_r1, 2026년 6월)에는 external/llvm-libc 기반의 정상 구현이 포함돼 있다. 그러나 9월 빌드에 탑재된 코드는 이와 다르며, 소스는 아직 공개되지 않았다. 결국 제보자는 배포된 바이너리를 직접 역어셈블해 실제 실행 코드를 파악한 뒤 버그를 특정할 수밖에 없었다.
역어셈블 결과, 9월 빌드의 wcscspn()은 SIMD 최적화 경로를 사용하는 것으로 추정되며, 이 경로에서 0x100 이상 문자 처리 로직이 잘못 구현된 것으로 보인다. Nothing Phone 2(Android 16, 2026년 8월 패치)에서는 해당 버그가 재현되지 않아, 회귀 시점은 6월~9월 사이로 좁혀진다.
이 사례는 단순 버그 리포트를 넘어 AOSP 소스 공개 지연 문제를 다시 수면 위로 끌어올렸다. 개발자들이 최신 빌드에 대한 소스 없이 바이너리 역분석에 의존해야 하는 구조적 문제가 고스란히 드러난 셈이다.