libp2p / libp2p/go-mplex

possible concurrency bug causing lockup

Open
#118 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

P3
Dominant language
Go
Stars
37
Forks
20
PR merge metrics
No merged PRs in 30d

Description

Maybe related to #115

Had an issue developing starpc where sometimes (~10% of the time) the test would get stuck on recv() on both ends even after one side had sent the packet it was waiting for.

I was not able to figure out where the actual issue is located, but after I switched out mplex for yamux, the issue is gone.

So, I think the lockup issue must be in mplex somewhere.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing related issue #115 and reproducing the starpc test that can block in recv() on both ends. Compare the mplex behavior with the yamux configuration that avoids the lockup, then trace the relevant mplex receive path. Done means identifying the concurrency cause and demonstrating that the waiting packet is received without a hang.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.