#20151214-01 :: C++ :: "libc++abi.dylib: Pure virtual function called!"
gtest로 모듈을 작성하던 중 "libc++abi.dylib: Pure virtual function called!"라는 런타임 에러를 만났다.
콜스택 추척도 안되고 난감했었는데, 구글링을 해보니 생성자와 소멸자에서는 순수 가상함수가 호출되면 안된다고 한다.
코드의 생성자와 소멸자들을 확인해 보니
이 런타임 에러는 상속이나 소유관계에 상관없이 매우 광범위한 케이스에서 작동하는 듯 하다.
내 경우에는 객체가 네트워크 커넥션 객체를 추상 인터페이스로 소유하고 있는데,
(네트워크라는 것이 TCP, UDP, IPC, BT, Zigbee, UART 등 다양하니까...)
네트워크 추상 인터페이스의 Close() 함수를 소멸자에서 호출하기 때문에 발생했었다.
헛웃음이 나올 뿐 ... 허허
어떤 쓰레드에서는 리눅스에서는 이상 없는데
Mac OS X에서만 위 에러가 발생한다는 글이 있어 확인해볼 문제라고 생각한다.
뭐, 덕분에 큰 단위의 리팩토링이 불가피할 듯 ㅋ
'working diary' 카테고리의 다른 글
#20151214-02 :: C++ :: gcc에서 runtime crash의 stacktrace를 보려면? (0) | 2015.12.14 |
---|---|
#20151201-02 :: C++ :: mongoose web server에서 mg_enable_multithreading 사용 (0) | 2015.12.01 |
#20151201-01 :: C++ :: build cppcsp2-2.0.6 on Mac OS X (0) | 2015.12.01 |
#20150127-01 :: eclipse :: GC overhead limit exceeded (0) | 2015.01.27 |
#20150126-01 :: eclipse :: eclipse를 ubuntu launcher에 등록하기 (0) | 2015.01.26 |