GNOME Bugzilla – Bug 632098
futex immediate timeout, DNS lookup related, when using latest git libsoup with webkit
Last modified: 2010-10-14 19:33:56 UTC
the last working version with webkit is 2.29.90 (this is latest version of webkit) if you use the absolute latest version of libsoup, then when putting in a URL, an strace shows system calls looking around to resolve the hostname into an IP address, but instead of succeeding, strace shows a system call to futex which _immediately_ times out, stopping the DNS lookup dead in its tracks. thus, all external URLs fail completely. file:// is absolutely fine, obviously: it's just http://, ftp:// etc. etc. that run into an instant fail due to that timeout. i'd use "git blame" to track this down a bit further, but the amount of time it takes to recompile webkit is so insane that it would be several days of recompiling to track down the two versions, and i'd rather not cook my laptop it gets up to 80-85 centigrade when doing compiles. right now the best i can say is that it's a commit somewhere between 2.29.90 and 2.32.x: i started with a version of libsoup that was checked out about 18 days ago (28th sep approx), that's the best i can say right now. i'm rating this as a major bug because it makes libsoup completely unusable. l.
(In reply to comment #0) > i'd use "git blame" to track this down a bit further, but the amount of time it > takes to recompile webkit is so insane that it would be several days of > recompiling to track down the two versions You don't need to rebuild webkit just because you rebuilt libsoup. 2.29.90 and 2.32.x are ABI-compatible.
ahh, good - then what the heck i'll do a binary-search to track down the commits. that's a lot easier. gimme 1 hour.
weird. i would have _expected_ it to be this commit, but i'm still not seeing any breakages / repo cases just doing this compile-install-soup-only. btw if this is really true (the bit about very latest glib) then that's a 2nd bug: if i have this (from ./autogen.sh) checking for GLIB - version >= 2.21.3... yes (version 2.24.1) then surely that should be a fail, right there, right? because libsoup _should_ be doing a version check, right? and it should be telling me "error, you don't have the latest version of glib which is known to work", right? unless of course 2.24.1 _is_ the "absolute latest" .... oh look, yeah this is 2009 commit dates :) commit b248daf6ab6bba3c4b346dc1f2b45cb73881d05b Author: Dan Winship <danw@gnome.org> Date: Sun Nov 15 12:05:16 2009 -0500 Try all IP addrs associated with a hostname if the first fails Make SoupAddress keep track of multiple IP addresses and implement GSocketConnectable, and make SoupSocket use GSocketClient (and thus GSocketAddressEnumerator) to connect, so that it tries all addresses associated with the SoupAddress. In particular, this fixes the bug where if a host has both IPv4 and IPv6 addresses, and glibc thinks you have IPv6 connectivity, but you don't really, that libsoup can't connect to that host. (Using GSocketClient rather than using GSocketAddressEnumerator directly is a bit heavyweight for SoupSocket, since we don't actually want to have a GSocket or GSocketConnection. But eventually, we will be porting SoupSocket to use GSocket, and this code is a stepping stone to that. Also, letting GSocketClient do the looping over the addresses simplifies SoupSocket.) (This change also silently breaks connection timeouts unless you have the very latest git glib.) https://bugzilla.gnome.org/show_bug.cgi?id=526321
huh. weird. um. got all the way through to the top (where i should haev started anyway) aaaand... no breakage. i'll re-verify by doing a webkit rebuild. l.
damnit - many apologies: i cannot now repro this, even though i had a definite demonstrable fail/success case last week. unfortunately in the past few days i may have inadvertently upgraded several libraries (from debian/lenny to debian/testing) which _could_ have included libglib. also the only other thing that springs to mind is that i fixed my system only just a few hours ago which had "hostname --fqdn" returning "localhost". i fixed this by adding "127.0.0.1 localhost.localdomain localhost". apologies.
probably you had an old version of glib with some bug in it, and updating libsoup to a newer version made it switch to using glib for DNS instead of using its own code. But then you updated glib to a version with the bug fixed, so libsoup started working fine too.