为什么我不能在node.js中结束活动的套接字而不会导致分段错误?

我试图阻止node.js中的一些HTTP服务器,但我不想等待所有keep-alive连接超时,才能完全closures服务器。 所以,我一直试图跟踪所有活动的套接字,然后当服务器需要被停止时,我想调用.end()让客户端知道我想closures套接字。 但是,当我这样做时,我得到了一个分段错误。

我已经使用了分段error handling程序来获得更好的堆栈跟踪,但我无法弄清楚会出现什么问题。

这里是跟踪连接的代码:

 connectionNum = 1 activeHttpConnections = {} trackConnection = (map, socket) -> # save active socket id = connectionNum map[id.toString()] = socket # remove socket once it closes socket.on 'close', -> map[id.toString()] = null delete map[id.toString()] # reset connection number eventually if connectionNum > 1000000 connectionNum = 1 else connectionNum++ 

当服务器启动时,我打电话给:

 httpServer.on 'connection', (socket) -> trackConnection activeHttpConnections, socket 

当我停止我打电话的服务器时:

 # close active connection so that servers can stop for key, socket of activeHttpConnections socket.end() 

.end()被调用时,我得到以下堆栈跟踪:

 PID 29943 received SIGSEGV for address: 0x58 /home/ryan/git/openhim-core-js/node_modules/segfault-handler/build/Release/segfault-handler.node(+0x1185)[0x7f50a037e185] /lib/x86_64-linux-gnu/libpthread.so.0(+0x10340)[0x7f50a2384340] node(_ZN4node10StreamWrap8ShutdownERKN2v820FunctionCallbackInfoINS1_5ValueEEE+0x166)[0x9d1846] node(_ZN2v88internal25FunctionCallbackArguments4CallEPFvRKNS_20FunctionCallbackInfoINS_5ValueEEEE+0x9b)[0x616d9b] node[0x6356b6] [0x270b80a060a2] 

任何想法,我可能做错了,或者这个stacktrace可以指向什么?