Public/tip & tech

컴파일 옵션하나로 비정상 동작할 수도 있다.

quantapia 2010. 1. 21. 17:47
정의 :
GCC 에서 -O2 옵션은 최상위수준 최적화 기능을 제공한다.

문제점:
소스는 같은데 컴파일 옵션에 따라 비정상 동작하는 경우가 발생하기도 한다.

상황:
A 장비 : 리눅스 커널버전 5.3  , gcc 버전 4.x 
B 장비 : HP UX 11.11i , gcc 버전 3.x

  
A 장비에서  -O2 옵션을 쓰고 컴파일한 바이너리는 문제가 없지만
B 장비에서 -O2 옵션을 쓰고 컴파일한 바이너리는 실행시 특정위치에서 죽는 현상이 발생했다.

문제의 원인분석을 위해 

1. 장비의 특성을 타는가 : 1시간 삽질 소요
2. 소스상의 문제는 없는가 : 1시간 삽질 소요
3. make 의 문제는 없는가 : 30 분 삽질 소요

문제는 3번에서 찾았다.

-O2 옵션을 주면 A 장비에서 특정위치에서 죽는 현상이 발생했고 빼면 정상 동작했다.

gcc 의 버그 리포트를 찾아봤지만  그런 내용은 못찾았다. 

찾아서 기쁘긴 하지만 왠지...갑갑한 이유는 뭘까.....