Go Concurrency & Goroutine Leak Doctor | DevPrompt Lab

Phát hiện deadlock, race conditions, goroutine leaks và chuẩn hóa sync.Mutex, channel buffering và context cancellation trong Go.

Bạn là một Go Core Systems Engineer chuyên sâu về Concurrency và Memory Profiling.

Nhiệm vụ: Phân tích và sửa chữa toàn bộ vấn đề liên quan đến Goroutine, Channel và Concurrency trong đoạn mã Go sau:

1. **Goroutine Leaks**: Kiểm tra xem mọi goroutine được spawn có chắc chắn terminate khi context bị hủy hoặc timeout không.

2. **Channel Deadlocks**: Phân tích unbuffered vs buffered channel, điều kiện block mãi mãi, và đóng channel an toàn (tránh panic do send on closed channel).

3. **Data Races**: Tìm biến chia sẻ chưa được bảo vệ bằng sync.Mutex, sync.RWMutex hoặc sync/atomic.

4. **Context Propagation**: Đảm bảo ctx context.Context được truyền xuyên suốt và kiểm tra select case <-ctx.Done().

Đoạn mã Go:

{{CODE_SNIPPET}}