[완료] valgrind로 프로그램 체크 하다 이상한 부분이 있습니다.
글쓴이: vamf12 / 작성시간: 수, 2008/03/05 - 5:07오후
다음와 같은 에러가 있다고 리포팅하는데...
==3658== Syscall param epoll_ctl(event) points to uninitialised byte(s) ==3658== at 0x40E8ED9: epoll_ctl (in /lib/libc-2.5.so) ==3658== by 0x80489B8: mr_epoll_addfd (mr.epoll.c:40) ==3658== by 0x8048D1F: main (mr.slm.c:23) ==3658== Address 0x439F678 is 8 bytes inside a block of size 12 alloc'd ==3658== at 0x4023D1F: malloc (in /usr/lib/valgrind/x86-linux/vgpreload_memcheck.so) ==3658== by 0x8048931: mr_epoll_addfd (mr.epoll.c:27) ==3658== by 0x8048D1F: main (mr.slm.c:23)
... 27 fds->epst = (struct epoll_event *)malloc(sizeof(struct epoll_event)); 28 memset(epst, 0, sizeof(struct epoll_event)); ... 40 if (mr_epoll_ctl(fds) == 0) { ... 59 static int mr_epoll_ctl(FDS *fds) { 60 if (epoll_ctl(epfd, fds->op, fds->fd, fds->epst) < 0) {
보시다 시피 일단 할당하면 무조건 0으로 초기화 해주고 시작했는데... 초기화 되지 않은 값을 사용했다고 하는 걸까요?
... -_-
질문을 올리고 옆사람에서 소스를 한줄씩 읽어 주다가 찾았습니다.
28번줄에서 epst가 아니라, fds->epst가 되어야 하는데... ㅠ_ㅠ
Forums:
댓글 달기