jesseduffield.lazygit/pkg
Stefan Haller 01600042cd Guard taskKey with the mutex that already guards the task ID
taskKey is written on the goroutine NewTask spawns, under taskIDMutex, but
GetTaskKey read it without the lock — and the string renders in
tasks_adapter.go call that from the UI thread while a previous task's
goroutine may be writing. A Go string is a two-word value, so a torn read
can pair one string's pointer with another's length and index out of
bounds, not merely return the wrong key.

Take the lock in GetTaskKey, and read the field directly at the one call
site that already holds it.

No test: the failure needs two goroutines to interleave inside a
two-word assignment, which nothing can schedule deterministically.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-15 15:30:27 +02:00
..
app Recognize a repo that has no work tree instead of bailing out 2026-08-08 11:15:01 +02:00
cheatsheet Render every key for a binding in the cheatsheet 2026-05-25 15:18:18 +02:00
commands Recognize worktrees among the files from the worktrees model 2026-08-15 11:26:58 +02:00
common Move NewDummyCommon to pkg/common 2025-05-06 09:43:26 +02:00
config Remove a few unnecessary parentheses 2026-08-13 20:40:11 +02:00
constants Adapt links 2026-07-31 08:42:51 +02:00
env Remember how to get back to a repo we entered a submodule from 2026-08-08 11:15:01 +02:00
fakes Modernize all codes 2025-11-15 10:46:23 +01:00
gocui Draw the UI in a more inactive look when the window is not focused 2026-08-15 12:17:40 +02:00
gui Auto-select the conflicted commit when stopping in rebase 2026-08-15 15:24:36 +02:00
i18n Run the stash operations with a waiting status 2026-08-08 12:26:18 +02:00
integration Auto-select the conflicted commit when stopping in rebase 2026-08-15 15:24:36 +02:00
jsonschema Fold legacy quit-alt1 into the multi-key quit binding 2026-05-25 15:32:47 +02:00
logs Separate the runs in the debug log with a blank line 2026-08-15 09:48:11 +02:00
snake Remove a few unnecessary parentheses 2026-08-13 20:40:11 +02:00
tasks Guard taskKey with the mutex that already guards the task ID 2026-08-15 15:30:27 +02:00
theme Copy gocui files into lazygit repo under pkg/gocui 2026-04-30 14:29:08 +02:00
updates Change direct access to Common.UserConfig to a getter 2024-08-18 10:24:52 +02:00
utils Make StringStack generic 2026-08-08 11:15:01 +02:00