-
Notifications
You must be signed in to change notification settings - Fork 509
Description
- Version:
"dependencies": {
"@chainsafe/libp2p-noise": "^14.0.0",
"@chainsafe/libp2p-yamux": "^6.0.1",
"@libp2p/peer-id-factory": "^4.0.0",
"@libp2p/tcp": "^9.0.4",
"@libp2p/webrtc": "^4.0.31",
"@libp2p/websockets": "^8.0.4",
"@multiformats/multiaddr": "^12.1.11",
"@nodeutils/defaults-deep": "^1.1.0",
"it-length-prefixed": "^9.0.1",
"it-map": "^3.0.3",
"it-pipe": "^3.0.1",
"libp2p": "^1.0.8",
"p-defer": "^4.0.0",
"uint8arrays": "^4.0.6"
},
"devDependencies": {
"test-ipfs-example": "^1.1.0"
},
- Platform:
Darwin Russells-MacBook-Pro-314.local 23.4.0 Darwin Kernel Version 23.4.0: Fri Mar 15 00:10:42 PDT 2024; root:xnu-10063.101.17~1/RELEASE_ARM64_T6000 arm64
- Subsystem:
@libp2p/webrtc, AddressManagerInit, and packages/libp2p/src/transport-manager
Severity:
Medium
Description:
Possibly fixed by #2133
I accidentally had two /webrtc entries in my listen: array passed to createLibp2p. It took me way too long to figure out what was actually happening. Note that this does not happen for duplicate TCP listen addresses.
The error that surfaces is
╰─ ✔ ❯ node src/listener.js
Listener ready, listening on:
file:///Users/sgtpooki/code/work/protocol.ai/test/SgtPooki/js-libp2p-examples/node_modules/libp2p/dist/src/transport-manager.js:115
return Array.of(...this.listeners.values()).flat();
^
RangeError: Maximum call stack size exceeded
at [Symbol.iterator] (<anonymous>)
at DefaultTransportManager.getListeners (file:///Users/sgtpooki/code/work/protocol.ai/test/SgtPooki/js-libp2p-examples/node_modules/libp2p/dist/src/transport-manager.js:115:22)
at WebRTCPeerListener.getAddrs (file:///Users/sgtpooki/code/work/protocol.ai/test/SgtPooki/js-libp2p-examples/node_modules/@libp2p/webrtc/dist/src/private-to-private/listener.js:18:14)
at file:///Users/sgtpooki/code/work/protocol.ai/test/SgtPooki/js-libp2p-examples/node_modules/@libp2p/webrtc/dist/src/private-to-private/listener.js:20:25
at Array.map (<anonymous>)
at WebRTCPeerListener.getAddrs (file:///Users/sgtpooki/code/work/protocol.ai/test/SgtPooki/js-libp2p-examples/node_modules/@libp2p/webrtc/dist/src/private-to-private/listener.js:20:14)
at file:///Users/sgtpooki/code/work/protocol.ai/test/SgtPooki/js-libp2p-examples/node_modules/@libp2p/webrtc/dist/src/private-to-private/listener.js:20:25
at Array.map (<anonymous>)
at WebRTCPeerListener.getAddrs (file:///Users/sgtpooki/code/work/protocol.ai/test/SgtPooki/js-libp2p-examples/node_modules/@libp2p/webrtc/dist/src/private-to-private/listener.js:20:14)
at file:///Users/sgtpooki/code/work/protocol.ai/test/SgtPooki/js-libp2p-examples/node_modules/@libp2p/webrtc/dist/src/private-to-private/listener.js:20:25
Node.js v18.16.1
Which seems to stem from here:
Steps to reproduce the error:
You can reproduce this on my branch of a js-libp2p-examples fork, https://github.com/SgtPooki/js-libp2p-examples/tree/bug/repro-dupe-listen-max-call-stack. See the tiny diff of changes required to repro the error here: libp2p/js-libp2p-examples@8abf359
Steps to reproduce:
git clone https://github.com/SgtPooki/js-libp2p-examples.git
cd js-libp2p-examples
git checkout bug/repro-dupe-listen-max-call-stack
npm i
node src/listener.js
Metadata
Metadata
Assignees
Labels
Type
Projects
Status