#39314·gitea

Global git pull/clone instant disconnect (Broken Pipe)

Author: danielecrCreated Sep 14, 2026Updated Sep 15, 2026
Labelstype/bug

Gitea Version

1.27.3

What happened?

Global git pull/clone instant disconnect (Broken Pipe) following Web UI Merge — Push works, local clone works

Environment

  • Gitea Version: 1.24.6 (Prod mode)
  • Git Version (Server): 2.49.1 (Linux)
  • Database Backend: SQLite
  • Deployment: Docker Swarm (Internal overlay networking tested)

The Problem / Symptoms

Following a branch merge completed via the Gitea Web UI, a global anomaly has triggered across all repositories on the instance:

  1. git push works perfectly across all repositories.
  2. git pull / git clone fails instantly (within 2ms) across both SSH and HTTPS channels universally.
  3. Local clones work flawlessly: Running git clone /data/... directly from inside the container filesystem works with zero errors. Running git-upload-pack . manually on the bare repository returns clean protocol refs.

Server-Side Behavior (gitea.log)

When a client attempts a pull, the Gitea routing engine successfully authorizes the request and updates the keys. It writes a 200 OK response and logs absolutely zero errors, warnings, or panic traces:

2026/09/11 19:27:11 HTTPRequest [I] router: completed GET /api/internal/serv/command/60/xWave/ai-server?mode=1&verb=git-upload-pack for 10.0.0.7:0, 200 OK in 1.5ms @ private/serv.go:79(private.ServCommand) 2026/09/11 19:27:11 HTTPRequest [I] router: completed POST /api/internal/ssh/60/update/316 for 10.0.0.7:0, 200 OK in 5.5ms @ private/key.go:16(private.UpdatePublicKeyInRepo)

Client-Side Behavior (ssh -vvv git pull)

Immediately after Gitea processes the internal validation, the container drops the socket connection cleanly, causing the client to encounter a Broken pipe right when opening the standard read buffer:

debug1: channel 0: setting env GIT_PROTOCOL = "version=2" debug2: channel 0: request env confirm 0 debug3: send packet: type 98 debug1: Sending command: git-upload-pack '/xWave/ai-server.git' debug2: channel 0: request exec confirm 1 debug3: send packet: type 98 debug2: exec request accepted on channel 0 debug2: channel 0: read failed rfd 6 maxlen 32768: Broken pipe debug2: channel 0: read failed debug2: chan_shutdown_read: channel 0: (i0 o0 sock -1 wfd 4 efd 6 [write]) fatal: early EOF fatal: fetch-pack: invalid index-pack output Killed by signal 15.

Steps Taken / Diagnostics Verified

  • No Database Locks: Confirmed that gitea.db has no active WAL or journal locks (wal_checkpoint completed, no temporary files present).
  • No Filesystem Corruption: git fsck runs completely clean across the repositories.
  • No File Permissions Changes: Repository structures and reference files are intact (git:git 644).
  • Isolated Networking: The issue reproduces identically from a testing container connected directly to the same internal Docker overlay network, ruling out external reverse proxies or host-level firewalls.

It appears that a state change triggered during the Web UI merge has placed Gitea's internal Go orchestration layer or process execution flow into a deadlock or routing loop specifically for outbound data streams (git-upload-pack), while leaving the inbound path (git-receive-pack) completely unaffected.

How are you running Gitea?

docker image. I upgrade also to gitea/gitea:1.27.3 , same problem