<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><div>On Dec 10, 2007, at 17:17, Poul-Henning Kamp wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">In message <<a href="mailto:EEF3518D-EA59-4B21-9CB0-D3F71075E8DA@anduin.net">EEF3518D-EA59-4B21-9CB0-D3F71075E8DA@anduin.net</a>>, =?ISO-8859-1?Q?Ei<br>rik_=D8verby?= writes:<br><br><blockquote type="cite">Hi,<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">is this still a problem?<br></blockquote><br>Yes, sendfile is not currently usable because it does not tell<br>us when it is _really_ done with the data we send, so it can<br>run afoul of our reuse of the memory for short lived objects.</blockquote><div><br class="webkit-block-placeholder"></div><div>Thanks. What's the likelihood that the error I saw today is in fact caused by this weakness in the sendfile implementation, and that Varnish has triggered it? In other words; now that I disabled it as suggested, how surprised should I be to see a similiar error again?</div><div><br class="webkit-block-placeholder"></div><div>/Eirik</div><div><br class="webkit-block-placeholder"></div><div><br class="webkit-block-placeholder"></div><div><br class="webkit-block-placeholder"></div><blockquote type="cite">I have not spent any time on it, as the performance hit from<br>using writev(2) seems to be trivial if one has plenty of RAM<br>and because the real fix for the sendfile issue is likely<br>to mean a redefinition of the sendfile system call.<br><br>Poul-Henning<br><br><blockquote type="cite"><blockquote type="cite">I've nailed three different operating system kernels as having<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">sendfile(2) issues today, so I would advice all of you to<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">disable sendfile to avoid the various problems we've seen.<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">The easiest way is to specify<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span class="Apple-tab-span" style="white-space:pre">  </span>-p sendfile_threshold=-1<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">to varnishd, or by using the CLI:<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><span class="Apple-tab-span" style="white-space:pre">   </span>param.set sendfile_threshold -1<br></blockquote></blockquote>-- <br>Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20<br><a href="mailto:phk@FreeBSD.ORG">phk@FreeBSD.ORG</a>         | TCP/IP since RFC 956<br>FreeBSD committer       | BSD since 4.3-tahoe    <br>Never attribute to malice what can adequately be explained by incompetence.<br><br></blockquote></div><br></div></body></html>