Sip.js: 警告:检测到可能的 EventEmitter 内存泄漏。 添加了 11 个听众。 使用emitter.setMaxListeners() 增加限制。

创建于 2018-06-07  ·  8评论  ·  资料来源: onsip/SIP.js

切换到 0.11.0 后,我现在在控制台中收到一个可能的 EventEmitter 内存泄漏错误。 这是随错误提供的跟踪:
来自火狐:

EventEmitter.prototype.addListener    webpack://SIP/./node_modules/events/events.js?:138:7
InviteClientTransaction               webpack://SIP/./src/Transactions.js?:148:5
send                                  webpack://SIP/./src/RequestSender.js?:40:36
sendRequest                           webpack://SIP/./src/Session.js?:198:7
sendReinvite/<                        webpack://SIP/./src/Session.js?:466:9

从铬:

EventEmitter.addListener | @ | events.js:144
InviteClientTransaction | @ | Transactions.js:148
send | @ | RequestSender.js:40
sendRequest | @ | Session.js:209
(anonymous) | @ | Session.js:466
Promise.then (async) |   |  
sendReinvite | @ | Session.js:465
unhold | @ | Session.js:359

当我取消保持通话时会发生这种情况。 如果我能提供更多信息,请告诉我。

最有用的评论

是的,这似乎与运输工作有关。 我们将一些职责转移到各个组件上,您看到的问题可能是相关的。 我希望在星期一或星期二之前得到一个补丁。 非常感谢您花时间追踪此事。

所有8条评论

你能发布完整的日志吗?


raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | configuration parameters after validation:
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · viaHost: "a6dspn71f48f.invalid"
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · uri: sip:[email protected]
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · custom: {}
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · displayName: "Softphone"
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · password: NOT SHOWN
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · registerExpires: 600
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · register: true
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · registrarServer: sip:ian-web-phone.datto.net
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · transportConstructor: undefined
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · transportOptions: {"wsServers":"wss://127.0.0.1:8089/ws"}
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · userAgentString: "SIP.js/0.11.0"
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · noAnswerTimeout: 30000
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · hackViaTcp: false
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · hackIpInContact: false
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · hackWssInTransport: true
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · hackAllowUnregisteredOptionTags: false
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · sessionDescriptionHandlerFactoryOptions: {"constraints":{"audio":true,"video":false}}
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · contactName: "jiavbjr5"
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · contactTransport: "wss"
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · forceRport: false
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · autostart: true
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · autostop: true
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · rel100: "none"
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · dtmfType: "info"
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · replaces: "none"
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · sessionDescriptionHandlerFactory: function defaultFactory(session, observer, options) {
    return new SessionDescriptionHandler(session, observer, options);
  }
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · authenticationFactory: undefined
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · allowLegacyNotifications: false
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · allowOutOfDialogRefers: false
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · authorizationUser: "1060"
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · instanceId: "96fb555d-f116-41d6-8ced-bc5e7a47f0cd"
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · sipjsId: "k6gsk"
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | · hostportParams: "ian-web-phone.datto.net"
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.ua | user requested startup...
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.transport | configuration parameters after validation:
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.transport | · wsServers: [{"ws_uri":"wss://ian-web-phone.datto.net:8089/ws","sip_uri":"<sip:ian-web-phone.datto.net:8089;transport=ws;lr>","weight":0,"isError":false,"scheme":"WSS"}]
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.transport | · connectionTimeout: 5
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.transport | · maxReconnectionAttempts: 3
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.transport | · reconnectionTimeout: 4
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.transport | · keepAliveInterval: 0
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.transport | · keepAliveDebounce: 10
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.transport | · traceSip: false
raven.js:55 Fri Jun 08 2018 10:58:18 GMT-0400 (Eastern Daylight Time) | sip.transport | connecting to WebSocket wss://ian-web-phone.datto.net:8089/ws
raven.js:55 Fri Jun 08 2018 10:58:19 GMT-0400 (Eastern Daylight Time) | sip.transport | WebSocket wss://ian-web-phone.datto.net:8089/ws connected
raven.js:55 Fri Jun 08 2018 10:58:26 GMT-0400 (Eastern Daylight Time) | sip.invitecontext.sessionDescriptionHandler | SessionDescriptionHandlerOptions: {"constraints":{"audio":true,"video":false}}
raven.js:55 Fri Jun 08 2018 10:58:26 GMT-0400 (Eastern Daylight Time) | sip.invitecontext.sessionDescriptionHandler | initPeerConnection
raven.js:55 Fri Jun 08 2018 10:58:26 GMT-0400 (Eastern Daylight Time) | sip.invitecontext.sessionDescriptionHandler | New peer connection created
raven.js:55 Fri Jun 08 2018 10:58:26 GMT-0400 (Eastern Daylight Time) | sip.invitecontext.sessionDescriptionHandler | acquiring local media
raven.js:55 Fri Jun 08 2018 10:58:26 GMT-0400 (Eastern Daylight Time) | sip.invitecontext.sessionDescriptionHandler | acquired local media streams
raven.js:55 Fri Jun 08 2018 10:58:26 GMT-0400 (Eastern Daylight Time) | sip.invitecontext.sessionDescriptionHandler | RTCIceGatheringState changed: gathering
raven.js:55 Fri Jun 08 2018 10:58:26 GMT-0400 (Eastern Daylight Time) | sip.invitecontext.sessionDescriptionHandler | ICE candidate received: candidate:1051995033 1 udp 2122260223 172.18.0.1 33419 typ host generation 0 ufrag hUwX network-id 1 network-cost 50
raven.js:55 Fri Jun 08 2018 10:58:26 GMT-0400 (Eastern Daylight Time) | sip.invitecontext.sessionDescriptionHandler | ICE candidate received: candidate:434636113 1 udp 2122194687 10.70.81.124 52730 typ host generation 0 ufrag hUwX network-id 2 network-cost 10
raven.js:55 Fri Jun 08 2018 10:58:26 GMT-0400 (Eastern Daylight Time) | sip.invitecontext.sessionDescriptionHandler | ICE candidate received: candidate:3717574005 1 udp 1686052607 69.195.39.134 1929 typ srflx raddr 172.18.0.1 rport 33419 generation 0 ufrag hUwX network-id 1 network-cost 50
raven.js:55 Fri Jun 08 2018 10:58:26 GMT-0400 (Eastern Daylight Time) | sip.invitecontext.sessionDescriptionHandler | ICE candidate received: candidate:4026039429 1 udp 1685987071 69.195.39.134 26353 typ srflx raddr 10.70.81.124 rport 52730 generation 0 ufrag hUwX network-id 2 network-cost 10
raven.js:55 Fri Jun 08 2018 10:58:26 GMT-0400 (Eastern Daylight Time) | sip.invitecontext.sessionDescriptionHandler | ICE candidate received: candidate:1882707817 1 tcp 1518280447 172.18.0.1 9 typ host tcptype active generation 0 ufrag hUwX network-id 1 network-cost 50
raven.js:55 Fri Jun 08 2018 10:58:26 GMT-0400 (Eastern Daylight Time) | sip.invitecontext.sessionDescriptionHandler | ICE candidate received: candidate:1466694049 1 tcp 1518214911 10.70.81.124 9 typ host tcptype active generation 0 ufrag hUwX network-id 2 network-cost 10
raven.js:55 Fri Jun 08 2018 10:58:26 GMT-0400 (Eastern Daylight Time) | sip.invitecontext.sessionDescriptionHandler | RTCIceGatheringState changed: complete
raven.js:55 Fri Jun 08 2018 10:58:26 GMT-0400 (Eastern Daylight Time) | sip.dialog | new UAC dialog created with status EARLY
raven.js:55 {success: true, returnValue: {…}, errors: null}
raven.js:55 Fri Jun 08 2018 10:58:28 GMT-0400 (Eastern Daylight Time) | sip.dialog | dialog k6gsk85mol4dbbf6tmqhlmvr81j9b1as6550d4ad  changed to CONFIRMED state
raven.js:55 Fri Jun 08 2018 10:58:28 GMT-0400 (Eastern Daylight Time) | sip.invitecontext.sessionDescriptionHandler | track added
raven.js:55 (node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
EventEmitter.addListener @ events.js:138
InviteClientTransaction @ Transactions.js:148
send @ RequestSender.js:40
sendRequest @ Session.js:209
(anonymous) @ Session.js:466
Promise.then (async)
sendReinvite @ Session.js:465
unhold @ Session.js:359
unholdCall @ Phone.js:621
toggleHold @ Phone.js:568
raven.js:55 Fri Jun 08 2018 10:58:31 GMT-0400 (Eastern Daylight Time) | sip.invitecontext.sessionDescriptionHandler | track added

我在测试中没有看到这一点。 为什么一切都说 raven.js 和行号并没有真正意义。 您是否有一些可能导致此问题的自定义代码?

我正在使用Sentry进行日志记录,它使用 raven,这就是 raven.js 和第 55 行的来源。 如果我禁用 Sentry,我仍然会收到相同的错误,而不是 raven 它是LoggerFactory.js:78 。 软电话充当 salesforce 的 CTI 适配器,但即使在 salesforce 之外,我仍然收到错误消息。 我在 0.10.0 中没有看到这个,所以我想知道它是否与传输更改有关。

新的事件侦听器已在内部添加到 SIP.js 以用于传输工作,因此这绝对可以解释您看到它的原因。 这就是我们试图确定的。 话虽如此,这只是一个警告,如果数量没有失控,可以放心地忽略它。

@JimGreenberg将调查在 SIP.js 中增加此限制,以便警告将在未来版本中消失。 或者,您可以提交 PR 来解决此问题。 谢谢

在进一步调查和增加听众人数后,我发现听众人数不断增加可能确实存在问题。 在EventEmitter.js我添加了NodeEventEmitter.prototype._maxListeners = 15并且错误出现在几个 un-holds 说 16 个听众之后。 然后我将它增加到 100 并在多次取消保持后得到相同的错误。 该错误指出已添加 101 个侦听器。

是的,这似乎与运输工作有关。 我们将一些职责转移到各个组件上,您看到的问题可能是相关的。 我希望在星期一或星期二之前得到一个补丁。 非常感谢您花时间追踪此事。

这是在 0.11.1+ 中修复的

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

DenisButCheR picture DenisButCheR  ·  7评论

Pjata picture Pjata  ·  11评论

Fzwael picture Fzwael  ·  5评论

tm1000 picture tm1000  ·  12评论

raphaelhovsepyan picture raphaelhovsepyan  ·  6评论