#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에서만 위 에러가 발생한다는 글이 있어 확인해볼 문제라고 생각한다.

뭐, 덕분에 큰 단위의 리팩토링이 불가피할 듯 ㅋ