Brandon Black wrote:

Sorry maybe I wasn't clear. Those error messages I pasted are a completely separate issue from the realloc thing. I tracked it down now to the point that I can interpret the messages (and exactly when they occur) as meaning: when poll_poll() is called, the 0th member of the poll set, which is the read side of the pipe that's set up for signals and such, has an "revents" member which is uninitialized memory, and poll_poll() is making decisions based on reading that ununitialized memory. The reason I don't see any worse behavior is that even though it's "uninitialized", being an early allocation it tends to be zero'd out anyways by chance.


Here's an interesting thread from another list regarding this exact same problem:

http://lists.freedesktop.org/archives/dbus/2006-September/005724.html

I'm still a little hazy on what the "right" answer is here, as I'm not a poll() expert, but something like this may be the answer:

diff -u -r1.21 ev_poll.c
--- ev_poll.c   25 Dec 2007 07:05:45 -0000      1.21
+++ ev_poll.c   9 Apr 2008 21:38:51 -0000
@@ -101,6 +101,8 @@
       return;
     }

+  if(res == 0) return;
+
   for (i = 0; i < pollcnt; ++i)
     if (expect_false (polls [i].revents & POLLNVAL))
       fd_kill (EV_A_ polls [i].fd);




_______________________________________________
libev mailing list
[email protected]
http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev

Reply via email to