# WARNING: DATA RACE
Read at 0x... by goroutine N:
  runtime.growslice()
Previous write at 0x... by goroutine M:
  main.append()

- **ID:** `go/race-detector-unsynchronized-slice-append`
- **Domain:** go
- **Category:** runtime_error
- **Verification:** ai_generated
- **Fix Rate:** 80%

## Root Cause

Multiple goroutines call append() on the same slice header without synchronization, causing races on the backing array and length field.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| 1.18 | active | — | — |
| 1.22 | active | — | — |

## Workarounds

1. **** (95% success)
   ```
   var mu sync.Mutex
var out []T
mu.Lock()
out = append(out, v)
mu.Unlock()
   ```
2. **** (93% success)
   ```
   results := make(chan T, n)
// producers: results <- v
// consumer: for v := range results { out = append(out, v) }
   ```

## Dead Ends

- **** — Preallocation avoids reallocation but the length field and slots are still written concurrently. (85% fail)
- **** — Concurrent writes to distinct indices of the same array are still data races unless synchronized. (80% fail)
