gethostbyname 의 세그멘테이션 오류

이것도 제목이 풰이크가 되네요 적어 놓고 보니 -_-;............

몇달전에 만든 소켓라이브러리

(라고 해봤자 전 프로그램에 썻던 소스코드 모음.. 지금은 bind,connect등 함수 순서조차도 기억이 안남..)

를 써서 GET 으로 인터넷 웹페이지를 긁어오는 짓을하고 있었는데요...

자꾸 gethostbyname 함수 에서 세그먼트에러가 나는 바람에 왜그런가 했는데..

(gdb가 여기서 난다고 했다! 난 이녀석을 철석같이 믿었것만! )

그래서 여기만 뚫어져라 쳐다보고 있었는데 라이브러리에서 오류 먹은걸 나보고 어쩔???

하다가 중간에 에러메세지를 자세히!(전 까진 대충,..) 보니까 malloc어쩌구~ 라고 나오길래..

(gethostbuname 함수내부 에서) 이걸 동기로 해서...

분명히 그럼 네 소스어딘가오류가 있겠지하고서 뒤저보니까..................

원인을 찾았다... !!!

"서버에 보내는 정보가 잘못되서" 였다 "Cokie:" 이렇게 한번만 해야할걸 "Cookie: Cookie: " ... 이런식으로 보내서..

그럼 오류가 날려면 send함수에서 나야지 왜 여기서 나는지 도저히 이해할수가 없다....

gethostbyname은 그냥 DNS주소를 IP주소로 변환해주는 기능밖에 하지 않는데...

가 아니라..................;

이건또 뭥미?? 중간에 malloc size를 잘못 정해주어서 였네요..

할당할 메모리 크기를 리턴해주는 함수가 있었는데.. 거기서 크기를 잘못 리턴해 주는 바람에

(필요한 크기보다 더 작게 할당해서 쓰는범위가 할당한범위를 넘겨버렸어요.......; )

전혀~ 상관 없는 gethostbyname 함수가 세그먼트 오류를 먹으면서 뻣어버린것.........

제대로 free,malloc을 못하면 세그먼트 오류가 난다고 하는데.. 실제로 이런거 겪어보긴 처음이라...

(free도 아니고 malloc이...free는 많이 격어 봐서 적응이 되지만..)

소켓을 건들땐 valgrind가 느려서 안썻더니만.. 이런 문제가 발생하네요...

(에뮬레이팅을 하다보니 소켓같은건 좀 느린가 보다......)

소켓같은 데서도 valgrind를 사용할수 있었으면 좋겠네여........

 뭐 제가 방법을 모르는거 겠지만요.... 누구 아는 분 댓글점...

'Programming > Networking' 카테고리의 다른 글

소켓shutdown..DomainName<->IP  (0) 2006.07.18
TCP/IP 추가 and UDP /IP  (0) 2006.07.18
소켓 프로그래밍 part 2~4 TCP/IP  (4) 2006.07.15
열혈강의 TCP/Ip Socket Programming --Part 1  (1) 2006.07.06