Alessandro Vesely wrote: > I don't understand those repeated read() calls returning 0. It should > mean end of file, thus there should be no point in insisting. For > EINTR, read should return a negative number, and strace should report > that.
I think you're right. You can see Debian's patch here: http://patch-tracking.debian.net/patch/series/view/gdbm/1.8.3-3/05_handle-short-read They've introduced a while loop that will continue if bytes were read, or if errno == EINTR. However, they check errno even if the return value of read() doesn't indicate that they should. Since read() won't reset errno on EOF, this creates an infinite loop if errno was already EINTR. I'm still not enlightened as to the cause of the problem, but it seems clear that gdbm on Debian is broken. An interested party should file a new bug report and ask them to fix this properly or take it out, and to push the changes to the gdbm maintainer for review. Like their SSL blunder, I believe that someone who knows what they're doing might be able to set them straight. ------------------------------------------------------------------------------ SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada. The future of the web can't happen without you. Join us at MIX09 to help pave the way to the Next Web now. Learn more and register at http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/ _______________________________________________ courier-users mailing list [email protected] Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users
