On Sun, Jul 04, 2010 at 10:46:50AM -0400, Dennis Nezic wrote:
On Sun, 27 Jun 2010 08:22:38 -0400, Dennis Nezic wrote:
On Wed, 23 Jun 2010 09:19:10 -0400, Dennis Nezic wrote:
On Sun, 20 Jun 2010 10:02:50 -0400, Jorge Arellano Cid wrote:
Hi,
At this point, there seems to be something wrong with the way the OS is handling its sockets and making them available to the application (after all, the freezes happen within system calls).
Please try dillo and don't use any dpis, this will use remote TCP sockets only. Just plain web browsing. If this doesn't freeze, then there's a problem with local sockets.
Yea -- the freezes only occur with the dpis. (Either cookie-websites or local file browsing, or bookmarks, etc)
If plain web browsing works, you can try letting a chance to the OS's defaults by commenting setsockopt in:
IO/dpi.c // line 442 in repo dpid/dpid.c // line 525 in repo
recompile stop dpid // `dpidc stop` reinstall // make install retry
That actually helped! I hesitated to post, because I did get one freeze a few days ago when trying to download a file (file.c), I didn't strace it to find which call exactly caused it, but otherwise that did seem to fix things! (Any ideas why the TCP_NODELAY flag is causing problems? :P)
I should have hesitated. The freezes are back, about as frequently as before. But I guess there's nothing dillo can do about it :\.
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 5
connect(5, {sa_family=AF_INET, sin_port=htons(5020), sin_addr=inet_addr ("127.0.0.1")}, 16 **~minute freeze**) = -1 ETIMEDOUT (Connection timed out)
Blargh. I'm not sure how to debug further. Netstat shows that dpid's sockets are in a LISTEN state during the freezes. Dillo's connection to dpid, according to netstat, is SYN_SENT. Telnet'ing to the dpid ports doesn't work during the freezes -- which sounds like a problem with dpid? But these freezes aren't "hard" -- sometimes they work -- once in a while it is able to unfreeze itself, at least for a bit, and I am able to telnet into dpid. Maybe dpid (or linux) is throttling socket connections or something? :|
I believe the problem is in the way your particular kernel interacts with dillo. No other GNU/Linux (nor BSD) that we know of has this problem. As I'm no kernel expert, it's hard for me to suggest a way to further debug the problem. You may try compiling a vanilla kernel from kernel.org or another kernel version from gentoo, or if you really want to find out where the freezes come from, asking a knowledgeable guy from the TCP sockets area in Linux. BTW, I'd bet it doesn't happen with Unix domain sockets, that's why I suggested trying dillo-2.0. Have you tried that? -- Cheers Jorge.-