From owner-freebsd-hackers Wed Nov 27 7:45:21 2002 Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 466A337B406 for ; Wed, 27 Nov 2002 07:45:13 -0800 (PST) Received: from straylight.ringlet.net (discworld.nanolink.com [217.75.135.248]) by mx1.FreeBSD.org (Postfix) with SMTP id 227D943EBE for ; Wed, 27 Nov 2002 07:45:09 -0800 (PST) (envelope-from roam@ringlet.net) Received: (qmail 55209 invoked by uid 1000); 27 Nov 2002 15:44:53 -0000 Date: Wed, 27 Nov 2002 17:44:53 +0200 From: Peter Pentchev To: Linus Kendall Cc: freebsd-hackers@FreeBSD.ORG Subject: Re: PThreads problem Message-ID: <20021127154453.GE375@straylight.oblivion.bg> Mail-Followup-To: Linus Kendall , freebsd-hackers@FreeBSD.ORG References: <1035200159.24315.13.camel@bilbo> <20021021124520.GS389@straylight.oblivion.bg> <1035206648.24315.20.camel@bilbo> <20021021134834.GA41198@straylight.oblivion.bg> <20021021135045.GB41198@straylight.oblivion.bg> <1035218026.24330.33.camel@bilbo> <20021021194453.GB377@straylight.oblivion.bg> <1035232308.24315.37.camel@bilbo> <20021022052405.GD377@straylight.oblivion.bg> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="l76fUT7nc3MelDdI" Content-Disposition: inline In-Reply-To: <20021022052405.GD377@straylight.oblivion.bg> User-Agent: Mutt/1.5.1i Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG --l76fUT7nc3MelDdI Content-Type: multipart/mixed; boundary="Q68bSM7Ycu6FN28Q" Content-Disposition: inline --Q68bSM7Ycu6FN28Q Content-Type: text/plain; charset=windows-1251 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Oct 22, 2002 at 08:24:05AM +0300, Peter Pentchev wrote: > On Mon, Oct 21, 2002 at 10:31:48PM +0200, Linus Kendall wrote: > [snip] > >=20 > > That was very thorough, thanks! Now I at least have a notion of what=20 > > is going on. Since this is slightly urgent I guess a hack into the > > libcurl source code to try to remove the sigalarms would do the trick > > (in my case). In the general case it seems like there's a rather big > > problem here as libcurl's behavior cannot really work together with the > > FreeBSD implementation of threads. >=20 > I wonder, though.. If libcurl depends on Linux-specific threads library > behavior, what would the effects be if it were to be compiled against > the devel/linuxthreads port? Maybe I will try building curl with > linuxthreads later today.. Okay, here's another option: could you try the attached patch? It updates the ftp/curl port to 7.10.2, and additionally, forcibly enables the CURLOPT_NOSIGNAL option on every curl handle created, thus disabling any signal handling for DNS query timeouts. It would be interesting to see if this helps your multithreaded application.. G'luck, Peter --=20 Peter Pentchev roam@ringlet.net roam@FreeBSD.org PGP key: http://people.FreeBSD.org/~roam/roam.key.asc Key fingerprint FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553 This sentence is false. --Q68bSM7Ycu6FN28Q Content-Type: text/plain; charset=windows-1251 Content-Disposition: attachment; filename="ftp-curl-nosignal.patch" Content-Transfer-Encoding: quoted-printable Index: ports/ftp/curl/Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /home/ncvs/ports/ftp/curl/Makefile,v retrieving revision 1.45 diff -u -r1.45 Makefile --- ports/ftp/curl/Makefile 2 Jul 2002 08:36:46 -0000 1.45 +++ ports/ftp/curl/Makefile 27 Nov 2002 14:54:36 -0000 @@ -6,7 +6,7 @@ # =20 PORTNAME=3D curl -PORTVERSION=3D 7.9.8 +PORTVERSION=3D 7.10.2 CATEGORIES=3D ftp ipv6 www MASTER_SITES=3D http://curl.haxx.se/download/ \ http://download.sourceforge.net/curl/ \ @@ -21,6 +21,7 @@ curl_easy_init.3 curl_easy_perform.3 curl_easy_setopt.3 \ curl_escape.3 curl_unescape.3 \ curl_formadd.3 curl_formparse.3 curl_formfree.3 \ + curl_free.3 \ curl_getdate.3 curl_getenv.3 \ curl_global_init.3 curl_global_cleanup.3 \ curl_mprintf.3 \ @@ -29,7 +30,7 @@ curl_multi_perform.3 curl_multi_remove_handle.3 \ curl_slist_append.3 curl_slist_free_all.3 \ curl_strequal.3 curl_strnequal.3 \ - curl_version.3 \ + curl_version.3 curl_version_info.3 \ libcurl.3 libcurl-multi.3 libcurl-errors.3 =20 INSTALLS_SHLIB=3D yes @@ -56,5 +57,11 @@ # I don't know why they would do that, yet. test: build @cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE} test + +.if !defined(NOPORTDOCS) +post-install: + ${MKDIR} ${DOCSDIR} + ${CP} -r ${WRKSRC}/docs/* ${DOCSDIR}/=20 +.endif =20 .include Index: ports/ftp/curl/distinfo =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /home/ncvs/ports/ftp/curl/distinfo,v retrieving revision 1.26 diff -u -r1.26 distinfo --- ports/ftp/curl/distinfo 2 Jul 2002 08:36:46 -0000 1.26 +++ ports/ftp/curl/distinfo 27 Nov 2002 14:40:45 -0000 @@ -1 +1 @@ -MD5 (curl-7.9.8.tar.bz2) =3D 9f29e398d36050816fc4759d4837eb65 +MD5 (curl-7.10.2.tar.bz2) =3D 9f6a911b5ee5432128f67d4d8df09279 Index: ports/ftp/curl/pkg-plist =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /home/ncvs/ports/ftp/curl/pkg-plist,v retrieving revision 1.5 diff -u -r1.5 pkg-plist --- ports/ftp/curl/pkg-plist 16 Apr 2002 11:30:21 -0000 1.5 +++ ports/ftp/curl/pkg-plist 27 Nov 2002 14:58:20 -0000 @@ -11,3 +11,162 @@ lib/libcurl.la lib/libcurl.so lib/libcurl.so.%%SHLIB_VER%% +share/curl/curl-ca-bundle.crt +@dirrm share/curl +%%PORTDOCS%%share/doc/curl/BINDINGS +%%PORTDOCS%%share/doc/curl/BUGS +%%PORTDOCS%%share/doc/curl/CONTRIBUTE +%%PORTDOCS%%share/doc/curl/FAQ +%%PORTDOCS%%share/doc/curl/FEATURES +%%PORTDOCS%%share/doc/curl/HISTORY +%%PORTDOCS%%share/doc/curl/INSTALL +%%PORTDOCS%%share/doc/curl/INTERNALS +%%PORTDOCS%%share/doc/curl/KNOWN_BUGS +%%PORTDOCS%%share/doc/curl/MANUAL +%%PORTDOCS%%share/doc/curl/Makefile +%%PORTDOCS%%share/doc/curl/Makefile.am +%%PORTDOCS%%share/doc/curl/Makefile.in +%%PORTDOCS%%share/doc/curl/README.win32 +%%PORTDOCS%%share/doc/curl/RESOURCES +%%PORTDOCS%%share/doc/curl/THANKS +%%PORTDOCS%%share/doc/curl/TODO +%%PORTDOCS%%share/doc/curl/TheArtOfHttpScripting +%%PORTDOCS%%share/doc/curl/VERSIONS +%%PORTDOCS%%share/doc/curl/curl-config.1 +%%PORTDOCS%%share/doc/curl/curl-config.html +%%PORTDOCS%%share/doc/curl/curl-config.pdf +%%PORTDOCS%%share/doc/curl/curl.1 +%%PORTDOCS%%share/doc/curl/curl.html +%%PORTDOCS%%share/doc/curl/curl.pdf +%%PORTDOCS%%share/doc/curl/examples/Makefile +%%PORTDOCS%%share/doc/curl/examples/Makefile.am +%%PORTDOCS%%share/doc/curl/examples/Makefile.example +%%PORTDOCS%%share/doc/curl/examples/Makefile.in +%%PORTDOCS%%share/doc/curl/examples/README +%%PORTDOCS%%share/doc/curl/examples/curlgtk.c +%%PORTDOCS%%share/doc/curl/examples/fopen.c +%%PORTDOCS%%share/doc/curl/examples/ftpget.c +%%PORTDOCS%%share/doc/curl/examples/ftpgetresp.c +%%PORTDOCS%%share/doc/curl/examples/ftpupload.c +%%PORTDOCS%%share/doc/curl/examples/getinmemory.c +%%PORTDOCS%%share/doc/curl/examples/http-post.c +%%PORTDOCS%%share/doc/curl/examples/httpput.c +%%PORTDOCS%%share/doc/curl/examples/multi-app.c +%%PORTDOCS%%share/doc/curl/examples/multi-double.c +%%PORTDOCS%%share/doc/curl/examples/multi-post.c +%%PORTDOCS%%share/doc/curl/examples/multi-single.c +%%PORTDOCS%%share/doc/curl/examples/multithread.c +%%PORTDOCS%%share/doc/curl/examples/persistant.c +%%PORTDOCS%%share/doc/curl/examples/post-callback.c +%%PORTDOCS%%share/doc/curl/examples/postit2.c +%%PORTDOCS%%share/doc/curl/examples/sepheaders.c +%%PORTDOCS%%share/doc/curl/examples/simple.c +%%PORTDOCS%%share/doc/curl/examples/simplepost.c +%%PORTDOCS%%share/doc/curl/examples/simplessl.c +%%PORTDOCS%%share/doc/curl/libcurl-the-guide +%%PORTDOCS%%share/doc/curl/libcurl/Makefile +%%PORTDOCS%%share/doc/curl/libcurl/Makefile.am +%%PORTDOCS%%share/doc/curl/libcurl/Makefile.in +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_cleanup.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_cleanup.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_cleanup.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_duphandle.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_duphandle.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_duphandle.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_getinfo.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_getinfo.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_getinfo.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_init.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_init.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_init.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_perform.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_perform.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_perform.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_setopt.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_setopt.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_easy_setopt.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_escape.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_escape.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_escape.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_formadd.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_formadd.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_formadd.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_formfree.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_formfree.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_formfree.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_formparse.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_formparse.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_formparse.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_free.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_free.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_free.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_getdate.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_getdate.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_getdate.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_getenv.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_getenv.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_getenv.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_global_cleanup.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_global_cleanup.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_global_cleanup.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_global_init.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_global_init.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_global_init.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_mprintf.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_mprintf.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_mprintf.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_add_handle.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_add_handle.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_add_handle.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_cleanup.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_cleanup.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_cleanup.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_fdset.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_fdset.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_fdset.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_info_read.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_info_read.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_info_read.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_init.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_init.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_init.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_perform.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_perform.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_perform.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_remove_handle.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_remove_handle.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_multi_remove_handle.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_slist_append.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_slist_append.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_slist_append.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_slist_free_all.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_slist_free_all.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_slist_free_all.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_strequal.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_strequal.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_strequal.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_strnequal.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_strnequal.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_strnequal.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_unescape.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_unescape.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_unescape.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_version.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_version.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_version.pdf +%%PORTDOCS%%share/doc/curl/libcurl/curl_version_info.3 +%%PORTDOCS%%share/doc/curl/libcurl/curl_version_info.html +%%PORTDOCS%%share/doc/curl/libcurl/curl_version_info.pdf +%%PORTDOCS%%share/doc/curl/libcurl/index.html +%%PORTDOCS%%share/doc/curl/libcurl/libcurl-errors.3 +%%PORTDOCS%%share/doc/curl/libcurl/libcurl-errors.html +%%PORTDOCS%%share/doc/curl/libcurl/libcurl-errors.pdf +%%PORTDOCS%%share/doc/curl/libcurl/libcurl-multi.3 +%%PORTDOCS%%share/doc/curl/libcurl/libcurl-multi.html +%%PORTDOCS%%share/doc/curl/libcurl/libcurl-multi.pdf +%%PORTDOCS%%share/doc/curl/libcurl/libcurl.3 +%%PORTDOCS%%share/doc/curl/libcurl/libcurl.html +%%PORTDOCS%%share/doc/curl/libcurl/libcurl.pdf +%%PORTDOCS%%@dirrm share/doc/curl/libcurl +%%PORTDOCS%%@dirrm share/doc/curl/examples +%%PORTDOCS%%@dirrm share/doc/curl Index: ports/ftp/curl/files/patch-lib::url.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: ports/ftp/curl/files/patch-lib::url.c diff -N ports/ftp/curl/files/patch-lib::url.c --- ports/ftp/curl/files/patch-lib::url.c 1 Jan 1970 00:00:00 -0000 +++ ports/ftp/curl/files/patch-lib::url.c 27 Nov 2002 15:23:37 -0000 @@ -0,0 +1,13 @@ +--- lib/url.c.old Wed Nov 27 17:22:24 2002 ++++ lib/url.c Wed Nov 27 17:23:29 2002 +@@ -288,6 +288,10 @@ + =20 + data->set.proxytype =3D CURLPROXY_HTTP; /* defaults to HTTP proxy */ +=20 ++#if defined(__FreeBSD_version) ++ data->set.no_signal =3D TRUE; /* different handling of signals and thre= ads */ ++#endif /* __FreeBSD_version */ ++ + /* create an array with connection data struct pointers */ + data->state.numconnects =3D 5; /* hard-coded right now */ + data->state.connects =3D (struct connectdata **) --Q68bSM7Ycu6FN28Q-- --l76fUT7nc3MelDdI Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (FreeBSD) iD8DBQE95Oh17Ri2jRYZRVMRAg38AJ93djOqmxFiPXXno2ajH7oVvLAicgCeKeIo a7Yl0cl074dmoGfhWAT2KC4= =dPDh -----END PGP SIGNATURE----- --l76fUT7nc3MelDdI-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message