getaddressinfo thread-safety api인가요?
글쓴이: 불량청년 / 작성시간: 목, 2016/07/14 - 10:25오전
안녕하세요.
ip 주소를 구하기 위해서 getaddrinfo()를 사용하고 있습니다.
목적은 ipv4와 ipv6의 smart switching을 구현하기 위해서입니다(happy eyeballs algorithm).
아무튼, 현재 android에서 구현을 해서 사용하고 있는데
가끔 여러 thread에서 dns를 구하는 함수(getaddrinfo를 사용하는 루틴)을 호출하면
crash가 나고 있습니다.
callstack을 보면, libc의 getaddrinfo에서 발생하고 있는데 이 함수가 POSIX를 지원하고
있고 thread-safety api라고 알고 있는데 정확한건지 의문이 드네요.
문제 해결은 mutex를 사용해서 수정은 했지만, 이제 맞는 해결법인지도 의문이 들고 좀 답답하네요.
혹시 자세히 아시는분 계실까요?
Forums:
linux man-page에는 reentrant하다고
linux man-page에는 reentrant하다고 되어 있으니 thread-safe는 보장될 것으로 보입니다.
http://linux.die.net/man/3/getaddrinfo
안드로이드 환경은 잘 모르겠네요.
Signature :) - "여유를 갖고 행동하되 게을러지지 말자"
댓글 달기