세 개의 C++ 컴파일러 버그: 숨겨진 기능의 이야기

2025-09-23
세 개의 C++ 컴파일러 버그: 숨겨진 기능의 이야기

시니어 엔지니어 Michael Gibson은 거의 사용되지 않는 세 가지 C++ 기능의 조합으로 인해 발생한 clang++ 컴파일러 버그를 발견한 과정을 설명합니다. C++ SDK에서 REACHABLE 어설션을 구현할 때 정적 초기화, 비형식 템플릿 매개변수, 익명 네임스페이스를 사용했습니다. 하지만 clang++ 17 이상의 새로운 최적화 파이프라인이 이 조합과 충돌하여 심볼 중복 제거 오류가 발생했습니다. 이는 복잡한 시스템에서 드문 기능의 상호 작용으로 인해 발생하는 숨겨진 버그의 위험을 보여주고 이러한 문제를 발견하는 데 자동 테스트의 강력함을 보여줍니다.

더 보기
개발

게임으로 소프트웨어 테스트? 한 회사가 메트로이드와 마리오로 성공하다

2025-08-24
게임으로 소프트웨어 테스트? 한 회사가 메트로이드와 마리오로 성공하다

한 회사가 닌텐도 게임, 특히 메트로이드와 슈퍼 마리오 브라더스를 사용하여 자체 소프트웨어 플랫폼인 Antithesis를 테스트했습니다. 초기에는 AI 테스트 시스템이 메트로이드의 빨간 문에서 막혔습니다. 적을 제거하는 것을 우선시했기 때문에 미사일을 모두 소진했기 때문입니다. 그래서 상태 공간을 탐색하면서 목표를 최적화하는 새로운 '스웜 테스트' 기술을 개발했습니다. 예를 들어, 더 많은 미사일을 갖는 것을 우선시하는 식입니다. 이를 통해 빨간 문 문제가 해결되었을 뿐만 아니라 Antithesis는 게임 세계를 더 효율적으로 탐색하고 버그를 발견하고 스피드런을 위해 게임 메커니즘을 활용할 수 있게 되었습니다. 이 기술은 게임 테스트에만 국한되지 않고 메모리 누수나 성능 이상 발견 등 다양한 소프트웨어 테스트 시나리오에 적용할 수 있습니다.

더 보기
개발

모든 것을 테스트 가능하게 만들기: 미첼의 GPU 테스트 과제

2025-07-06
모든 것을 테스트 가능하게 만들기: 미첼의 GPU 테스트 과제

HashiCorp 공동 설립자인 미첼은 최신 프로젝트인 GPU 렌더링 터미널 에뮬레이터 Ghostty를 개발하는 동안 큰 과제에 직면했습니다. 바로 GPU 렌더링 코드 테스트입니다. 이 글에서는 BugBash에서의 그의 발표를 요약하고, 언뜻 보기에는 테스트가 불가능해 보이는 코드를 어떻게 테스트 가능하게 만들 수 있는지 탐구합니다. AI 시대의 GPU 테스트에 대한 널리 받아들여지는 솔루션의 부족을 강조하며, 미첼의 접근 방식의 가치를 높입니다. 그의 해결책과 Antithesis에서의 노력은 소프트웨어 테스트의 한계를 넓히려는 그의 의지를 보여줍니다.

더 보기
개발 GPU 테스트