Hi Doug,

Core Dump caused by  Reactor::poll_loop_interrupt() returned -1 at
void Reactor::poll_loop_interrupt() {
  ...
  if ((n = FileUtils::send(m_interrupt_sd, "1", 1)) < 0) {
      HT_ERRORF("send(interrupt_sd) failed - %s", strerror(errno));
      exit(1);                                                       //
return from here
    }
  ...
}

I stepped into FileUtils::send(...) and found there is something wrong:

ssize_t
FileUtils::sendto(int fd, const void *vptr, size_t n, const sockaddr *to,
                  socklen_t tolen) {
 ....
  while (nleft > 0) {
    if ((nsent = ::sendto(fd, ptr, nleft, 0, to, tolen)) <= 0) {
      if (errno == EINTR)
        nsent = 0; /* and call sendto() again */
      if (errno == EAGAIN || errno == ENOBUFS)    // keyword "else" missing
before "if". otherwise if the errno is EINTR, the function will return -1
        break;
      else {
        return -1; /* error */
      }
    }
  ...
}

the same bug appears in other functions:  FileUtils::write(...),
FileUtils::writev(...) and FileUtils::sendto(...).

Kind Regards.

Alen

-- 
You received this message because you are subscribed to the Google Groups 
"Hypertable Development" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/hypertable-dev?hl=en.

Reply via email to