error: git-upload-pack died of signal 13
Platform notice: Server and Data Center only. This article only applies to Atlassian products on the Server and Data Center platforms.
Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Problem
A clone operation of a Bitbucket Server repository fails and the following message appears in the atlassian-bitbucket.log:
14:17:27,102 INFO [io-pump:thread-9] admin @T42UKVx857x3705x0 0:0:0:0:0:0:0:1 "POST /scm/tes/testrepo.git/git-upload-pack HTTP/1.1" c.a.bitbucket.web.cgi.BaseCgiHandler Failed to copy SCM hosting process output to response output stream
14:17:27,104 ERROR [http-nio-7991-exec-1] admin @T42UKVx857x3705x0 0:0:0:0:0:0:0:1 "POST /scm/tes/testrepo.git/git-upload-pack HTTP/1.1" c.a.s.i.s.g.p.h.GitSmartExitHandler TES/bigrepo[11]: Read request from 0:0:0:0:0:0:0:1 failed: com.atlassian.utils.process.ProcessException: Non-zero exit code: 1
The following was written to stderr:
error: git-upload-pack died of signal 13
Prior to version 3.7 this clone failure presented as an exception
instead of being logged as an ERROR
.
Cause
The error above does not represent an issue with Bitbucket Server. It means that a Git client has closed its connection prematurely.
Resolution
You need to determine why the client connection closed before receiving all of the requested data. This is entirely a client-side issue.
We've updated the classification of the message (versions 3.10+) and it will now be displayed as INFO:
The remote client has aborted the connection
Previous versions of Bitbucket Server (up to 3.9) can be configured to display the updated message by installing the bitbucket-stream-guard-plugin-1.0.0.jar add-on. Follow the instructions to installing by file upload.
Subgit
In the past this error has been caused by the Subgit plugin. The problem is trying to sync "global" patterns in .gitignore
with a repo with many directories. This requires one permit per directory in subversion, which takes a lot of resources.
The fix in this case is to configure Subgit to turn off "ignore syncing" or use explicit file names in .gitignore
ELB
If you are using an Elastic Load Balancer we have noticed that the default ELB config has a low Idle timeout that should be increased. Git traffic often comes in bursts and can have long periods of silence that can trigger these timeouts. Search for "Idle Timeout" here for more information on how to configure this.