Skip to content

Fix race between Server.Serve() and Server.Close()#360

Merged
0pcom merged 1 commit intoskycoin:developfrom
0pcom:fix/server-wg-race
Mar 30, 2026
Merged

Fix race between Server.Serve() and Server.Close()#360
0pcom merged 1 commit intoskycoin:developfrom
0pcom:fix/server-wg-race

Conversation

@0pcom
Copy link
Copy Markdown
Collaborator

@0pcom 0pcom commented Mar 30, 2026

If Close() runs before Serve() calls wg.Add(1), the WaitGroup counter is 0, Wait() returns immediately, and then Serve() calls Add(1) on a completed WaitGroup — a data race. Check the done channel before wg.Add(1) so Serve() returns ErrClosed if the server is already shut down.

If Close() runs before Serve() calls wg.Add(1), the WaitGroup counter
is 0, Wait() returns immediately, and then Serve() calls Add(1) on a
completed WaitGroup — a data race. Check the done channel before
wg.Add(1) so Serve() returns ErrClosed if the server is already shut
down.
@0pcom 0pcom merged commit 8206a02 into skycoin:develop Mar 30, 2026
2 of 3 checks passed
@0pcom 0pcom deleted the fix/server-wg-race branch April 3, 2026 20:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant