From: Jeff King <peff@peff.net>
To: Greg M <morenzg@gmail.com>
Cc: Daniel Stenberg <daniel@haxx.se>, git@vger.kernel.org
Subject: Re: error: git-remote-https died of signal 13
Date: Thu, 24 Apr 2014 00:15:04 -0400 [thread overview]
Message-ID: <20140424041504.GA17398@sigill.intra.peff.net> (raw)
In-Reply-To: <CAEHyFQLPYh2b5CsmadazDJG3paHL7JDY4JhT=xf=wHXhLd=EkQ@mail.gmail.com>
On Wed, Apr 23, 2014 at 07:49:09AM -0400, Greg M wrote:
> > The easiest way to find it is probably to attach a debugger to the
> > running git-remote-https, and get a backtrace when it dies from SIGPIPE.
> > You'll probably want to install your system's debug packages for curl,
> > too.
> >
>
> The backtrace:
>
> Program received signal SIGPIPE, Broken pipe.
> 0x00007fdcfd511a2d in write () from /usr/lib/libpthread.so.0
> (gdb) bt
> #0 0x00007fdcfd511a2d in write () from /usr/lib/libpthread.so.0
> #1 0x00007fdcfd81a0f6 in sock_write () from /usr/lib/libcrypto.so.1.0.0
> #2 0x00007fdcfd817edb in BIO_write () from /usr/lib/libcrypto.so.1.0.0
> #3 0x00007fdcfc662902 in ssl3_write_pending () from /usr/lib/libssl.so.1.0.0
> #4 0x00007fdcfc664b77 in ssl3_dispatch_alert () from /usr/lib/libssl.so.1.0.0
> #5 0x00007fdcfc660822 in ssl3_shutdown () from /usr/lib/libssl.so.1.0.0
> #6 0x00007fdcfd2e944e in Curl_ossl_close () from /usr/lib/libcurl.so.4
> #7 0x00007fdcfd2b6459 in Curl_disconnect () from /usr/lib/libcurl.so.4
> #8 0x00007fdcfd2c8131 in curl_multi_cleanup () from /usr/lib/libcurl.so.4
> #9 0x000000000040764b in ?? ()
> #10 0x0000000000404e4d in ?? ()
> #11 0x00007fdcfcf0fb05 in __libc_start_main () from /usr/lib/libc.so.6
> #12 0x000000000040552e in ?? ()
Thanks, that's very helpful. I wasn't able to reproduce your problem
locally, but I suspect the curl patch below may fix it:
diff --git a/lib/multi.c b/lib/multi.c
index bc93264..72e4825 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -1804,10 +1804,13 @@ static void close_all_connections(struct Curl_multi *multi)
conn = Curl_conncache_find_first_connection(multi->conn_cache);
while(conn) {
+ SIGPIPE_VARIABLE(pipe_st);
conn->data = multi->closure_handle;
+ sigpipe_ignore(conn->data, &pipe_st);
/* This will remove the connection from the cache */
(void)Curl_disconnect(conn, FALSE);
+ sigpipe_restore(&pipe_st);
conn = Curl_conncache_find_first_connection(multi->conn_cache);
}
Let me know if you need any pointers on getting curl built or tested
with git.
Daniel, I think the similar fix to curl_multi_cleanup in commit a900d45
missed this code path, and we need something like the above patch. I
know you were trying to keep the SIGPIPE mess at the entrance-points to
the library, and this works against that. But we need a SessionHandle to
pass to sigpipe_ignore to look at its "no_signal" flag, and of course in
the case of multi we may have several such handles. If there's a similar
flag we can check on the multi handle, we could just cover all of
curl_multi_cleanup with a single ignore/reset pair.
-Peff
next prev parent reply other threads:[~2014-04-24 4:15 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-21 0:42 error: git-remote-https died of signal 13 Greg M
2014-04-23 6:59 ` Jeff King
2014-04-23 11:49 ` Greg M
2014-04-24 4:15 ` Jeff King [this message]
2014-04-24 12:11 ` Greg M
2014-04-24 12:15 ` Daniel Stenberg
-- strict thread matches above, loose matches on Subject: below --
2013-11-23 16:36 Stefan Beller
2013-11-24 6:54 ` Jeff King
2013-11-24 12:54 ` Stefan Beller
2013-11-24 13:33 ` Jeff King
2013-11-24 15:01 ` Stefan Beller
2013-11-24 15:54 ` Jeff King
2013-11-24 16:13 ` Stefan Beller
2013-11-24 16:32 ` Stefan Beller
2013-11-25 6:39 ` Jeff King
2013-11-25 7:20 ` Daniel Stenberg
2013-11-25 14:32 ` Jeff King
2013-11-25 14:46 ` Jeff King
2013-11-24 22:13 ` Daniel Stenberg
2013-11-24 23:51 ` brian m. carlson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140424041504.GA17398@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=daniel@haxx.se \
--cc=git@vger.kernel.org \
--cc=morenzg@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).