Re: [curl PATCH 2/2] ignore SIGPIPE during curl_multi_cleanup
I have curl 7.35.0 installed on my ubuntu14.04, version infos is as below I have recompiled git against openssl. the git version is 1.9.1. I encountered this error "error: git-remote-http died of signal 13" when I issue `git clone http://github.com/tensorflow/tensorflow.git`. Should I upgrade curl to a higher version? Or is there other easy solutions? Thanks. -- Sent from: http://git.661346.n2.nabble.com/
Re: [curl PATCH 2/2] ignore SIGPIPE during curl_multi_cleanup
On Tue, 22 May 2018, Suganthi wrote: We may not be able to upgrade to 7.60.0 any soon, Is the fix present in 7.45 , in this sequence of code. Please let me know. I don't know. I can't recall any SIGPIPE problems in recent days in libcurl, which is why I believe this problem doesn't exist anymore. libcurl 7.45.0 is 2.5 years and 1500+ bug fixes old after all. My casual searches for a curl problem like this - fixed in 7.45.0 or later - also failed. -- / daniel.haxx.se
Re: [curl PATCH 2/2] ignore SIGPIPE during curl_multi_cleanup
We may not be able to upgrade to 7.60.0 any soon, Is the fix present in 7.45 , in this sequence of code. Please let me know. -- Sent from: http://git.661346.n2.nabble.com/
Re: [curl PATCH 2/2] ignore SIGPIPE during curl_multi_cleanup
On Tue, 22 May 2018, curlUser wrote: Again SIGPIPE is seen with curl version 7.45.0 with multi interface. Backtrace shows : ... Looks like SIGPIPE_IGNORE to be added in prune_dead connections or in disconnect_if_dead? Can anyone comment on this. I'm pretty sure this issue isn't present in any recent libcurl versions, but if you can reproduce it with 7.60.0, I'll be very interested. -- / daniel.haxx.se
Re: [curl PATCH 2/2] ignore SIGPIPE during curl_multi_cleanup
Hi, Again SIGPIPE is seen with curl version 7.45.0 with multi interface. Backtrace shows : #7 0x7f141bea40cd in Curl_ossl_close (conn=0x7f14193f9848, sockindex=0) at vtls/openssl.c:881 #8 0x7f141bea8f54 in Curl_ssl_close (conn=0x7f14193f9848, sockindex=0) at vtls/vtls.c:527 #9 0x7f141be63969 in Curl_disconnect (conn=0x7f14193f9848, dead_connection=true) at url.c:2791 #10 0x7f141be63f4b in disconnect_if_dead (conn=0x7f14193f9848, data=0xb6a598) at url.c:3050 #11 0x7f141be63f84 in call_disconnect_if_dead (conn=0x7f14193f9848, param=0xb6a598) at url.c:3066 #12 0x7f141bea01c2 in Curl_conncache_foreach (connc=0xae0f48, param=0xb6a598, func=0x7f141be63f59 ) at conncache.c:295 #13 0x7f141be6400f in prune_dead_connections (data=0xb6a598) at url.c:3081 Looks like SIGPIPE_IGNORE to be added in prune_dead connections or in disconnect_if_dead? Can anyone comment on this. -- Sent from: http://git.661346.n2.nabble.com/
Re: [curl PATCH 2/2] ignore SIGPIPE during curl_multi_cleanup
On Mon, 25 Nov 2013, Jeff King wrote: This is an extension to the fix in 7d80ed64e43515. We may call Curl_disconnect() while cleaning up the multi handle, which could lead to openssl sending packets, which could get a SIGPIPE. Thanks a lot. I'll merge these ones in a second and they will be included in the coming 7.34.0 release (due to ship in mid December). -- / daniel.haxx.se -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[curl PATCH 2/2] ignore SIGPIPE during curl_multi_cleanup
This is an extension to the fix in 7d80ed64e43515. We may call Curl_disconnect() while cleaning up the multi handle, which could lead to openssl sending packets, which could get a SIGPIPE. Signed-off-by: Jeff King --- I really am just cargo-culting here. I have no idea what multi->closure_handle does, except that it gets used as conn->data for the connection we pass to Curl_disconnect, so it seems like a reasonable place to check for the magic no_signal variable. lib/multi.c | 9 + 1 file changed, 9 insertions(+) diff --git a/lib/multi.c b/lib/multi.c index 923e2ce..2ecb1a4 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -41,6 +41,7 @@ #include "bundles.h" #include "multihandle.h" #include "pipeline.h" +#include "sigpipe.h" #define _MPRINTF_REPLACE /* use our functions only */ #include @@ -1786,12 +1787,18 @@ CURLMcode curl_multi_cleanup(CURLM *multi_handle) struct SessionHandle *nextdata; if(GOOD_MULTI_HANDLE(multi)) { +SIGPIPE_VARIABLE(pipe); +bool restore_pipe = FALSE; + multi->type = 0; /* not good anymore */ /* Close all the connections in the connection cache */ close_all_connections(multi); if(multi->closure_handle) { + sigpipe_ignore(multi->closure_handle, &pipe); + restore_pipe = TRUE; + multi->closure_handle->dns.hostcache = multi->hostcache; Curl_hostcache_clean(multi->closure_handle, multi->closure_handle->dns.hostcache); @@ -1836,6 +1843,8 @@ CURLMcode curl_multi_cleanup(CURLM *multi_handle) Curl_pipeline_set_server_blacklist(NULL, &multi->pipelining_server_bl); free(multi); +if (restore_pipe) + sigpipe_restore(&pipe); return CURLM_OK; } -- 1.8.5.rc3.491.ge1614cf -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html