Найди баг: func process(data []byte) { go func() { handle(data) }() }

Middle
116 просмотров
AFK Offer AI

Потенциальный data race. Caller может модифицировать или reuse slice data после вызова process, а горутина ещё работает с ним. Slice — это header (pointer, len, cap), горутина держит тот же pointer. Фикс: скопировать данные: cp := make([]byte, len(data)); copy(cp, data); go func() { handle(cp) }(). Или гарантировать ownership transfer.

Следующий вопрос

Что такое corpus в fuzzing?