C 및 C++의 정의되지 않은 동작: 데스크톱 사용 사례 실험
요약
본 논문은 리눅스 데스크톱 환경에서 발생하는 C/C++의 정의되지 않은 동작(Undefined behavior)을 경험적으로 탐구했습니다. 컴파일러 기반 검사기를 사용한 실험 결과, 간단한 과제만으로도 수많은 정의되지 않은 동작 경고가 발생했으며, 특히 Mesa 그래픽스 라이브러리와 GUI 상호작용 과정에서 빈번하게 관찰되었습니다.
핵심 포인트
- C/C++의 정의되지 않은 동작은 데스크톱 환경에서 흔히 발생함.
- 실험 결과, 32개 프로그램에서 약 1만 1천 개의 고유한 경고가 발견됨.
- 경고의 대다수는 Mesa 그래픽스 라이브러리와 GUI 상호작용과 관련되어 있음.
- 발생하는 정의되지 않은 동작은 주로 가상 테이블 포인터와 관련됨.
정의되지 않은 동작(Undefined behavior)은 C 및 C++ 프로그래밍에 본질적입니다. 이러한 동작은 언어가 아무런 요구사항을 부과하지 않는 오류가 있는 프로그램 구조를 사용하는 경우, 예를 들어 정수 오버플로우 등이 있습니다. 이 논문은 리눅스 배포판의 일반적인 데스크톱 사용 환경에서 실행되는 정의되지 않은 동작의 범위를 탐색하는 경험적 실험을 제시합니다. 분석은 컴파일러에 구현된 정의되지 않은 동작 검사기(undefined behavior sanitizer)를 기반으로 합니다. 결과에 따르면, 정의되지 않은 동작이 흔하게 발생합니다. 59개의 간단한 실험 과제를 완료하면서 C 또는 C++로 작성된 32개의 고유 프로그램 및 라이브러리에 의해 거의 1만 1천 개의 고유한 정의되지 않은 동작 경고가 생성되었습니다. 이 경고들 중 대부분은 Mesa 그래픽스 라이브러리와 관련되어 있었으며, 그래픽 사용자 인터페이스(GUI)와 상호작용하면서 발생했습니다. 단순히 GNOME 데스크톱 환경에 로그인하는 것만으로도 500개가 넘는 고유한 경고가 생성되었습니다. 모든 경고 중 명백한 대다수는 가상 테이블 포인터(virtual table pointers)에 관한 것이었습니다. 관련된 스택 트레이스 또한 일반적으로 길었습니다. 이러한 결과와 다른 결과를 통해, 이 논문은 C 및 C++에 대한 경험적 문헌에 기여합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv Codex (cs.SE)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기