I’'ve tested non-blocking mode and found next exception. Looks like this issue can occur in blocking mode too.
Exception in thread “pool-3-thread-1” java.lang.StackOverflowError
at sun.nio.ch.SocketDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:33)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:104)
at sun.nio.ch.IOUtil.write(IOUtil.java:75)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:302)
at org.jivesoftware.wildfire.net.ServerTrafficCounter$WritableByteChannelWrapper.w rite(ServerTrafficCounter.java:304)
at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(StreamEncoder.java:333)
at sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer(StreamEncoder.java:404)
at sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:408)
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:152)
at org.jivesoftware.util.XMLWriter.flush(XMLWriter.java:190)
at org.jivesoftware.wildfire.net.XMLSocketWriter.flush(XMLSocketWriter.java:31)
at org.jivesoftware.wildfire.net.SocketConnection.deliver(SocketConnection.java:56 8)
at org.jivesoftware.wildfire.ClientSession.deliver(ClientSession.java:760)
at org.jivesoftware.wildfire.ClientSession.process(ClientSession.java:754)
at org.jivesoftware.wildfire.muc.spi.MUCRoleImpl.send(MUCRoleImpl.java:241)
at org.jivesoftware.wildfire.muc.spi.MUCRoomImpl.broadcastPresence(MUCRoomImpl.jav a:834)
at org.jivesoftware.wildfire.muc.spi.MUCRoomImpl.leaveRoom(MUCRoomImpl.java:643)
at org.jivesoftware.wildfire.muc.spi.MUCUserImpl.process(MUCUserImpl.java:477)
at org.jivesoftware.wildfire.muc.spi.MUCUserImpl.process(MUCUserImpl.java:133)
at org.jivesoftware.wildfire.muc.spi.MultiUserChatServerImpl.processPacket(MultiUs erChatServerImpl.java:235)
at org.jivesoftware.wildfire.muc.spi.MultiUserChatServerImpl.process(MultiUserChat ServerImpl.java:216)
at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.broadcastUnavailableFor DirectedPresences(PresenceUpdateHandler.java:435)
at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.process(PresenceUpdateH andler.java:110)
at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.process(PresenceUpdateH andler.java:153)
at org.jivesoftware.wildfire.PresenceRouter.handle(PresenceRouter.java:92)
at org.jivesoftware.wildfire.PresenceRouter.route(PresenceRouter.java:61)
at org.jivesoftware.wildfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:75)
at org.jivesoftware.wildfire.SessionManager.removeSession(SessionManager.java:1402 )
at org.jivesoftware.wildfire.SessionManager$ClientSessionListener.onConnectionClos e(SessionManager.java:1446)
at org.jivesoftware.wildfire.net.SocketConnection.notifyCloseListeners(SocketConne ction.java:637)
at org.jivesoftware.wildfire.net.SocketConnection.close(SocketConnection.java:453)
at org.jivesoftware.wildfire.net.SocketConnection.deliver(SocketConnection.java:58 0)
at org.jivesoftware.wildfire.ClientSession.deliver(ClientSession.java:760)
at org.jivesoftware.wildfire.ClientSession.process(ClientSession.java:754)
at org.jivesoftware.wildfire.muc.spi.MUCRoleImpl.send(MUCRoleImpl.java:241)
at org.jivesoftware.wildfire.muc.spi.MUCRoomImpl.broadcastPresence(MUCRoomImpl.jav a:834)
at org.jivesoftware.wildfire.muc.spi.MUCRoomImpl.leaveRoom(MUCRoomImpl.java:643)
at org.jivesoftware.wildfire.muc.spi.MUCUserImpl.process(MUCUserImpl.java:477)
at org.jivesoftware.wildfire.muc.spi.MUCUserImpl.process(MUCUserImpl.java:133)
at org.jivesoftware.wildfire.muc.spi.MultiUserChatServerImpl.processPacket(MultiUs erChatServerImpl.java:235)
at org.jivesoftware.wildfire.muc.spi.MultiUserChatServerImpl.process(MultiUserChat ServerImpl.java:216)
at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.broadcastUnavailableFor DirectedPresences(PresenceUpdateHandler.java:435)
at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.process(PresenceUpdateH andler.java:110)
at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.process(PresenceUpdateH andler.java:153)
at org.jivesoftware.wildfire.PresenceRouter.handle(PresenceRouter.java:92)
at org.jivesoftware.wildfire.PresenceRouter.route(PresenceRouter.java:61)
at org.jivesoftware.wildfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:75)
at org.jivesoftware.wildfire.SessionManager.removeSession(SessionManager.java:1402 )
at org.jivesoftware.wildfire.SessionManager$ClientSessionListener.onConnectionClos e(SessionManager.java:1446)
at org.jivesoftware.wildfire.net.SocketConnection.notifyCloseListeners(SocketConne ction.java:637)
at org.jivesoftware.wildfire.net.SocketConnection.close(SocketConnection.java:453)
at org.jivesoftware.wildfire.net.SocketConnection.deliver(SocketConnection.java:58 0)
at org.jivesoftware.wildfire.ClientSession.deliver(ClientSession.java:760)
at org.jivesoftware.wildfire.ClientSession.process(ClientSession.java:754)
at org.jivesoftware.wildfire.muc.spi.MUCRoleImpl.send(MUCRoleImpl.java:241)
at org.jivesoftware.wildfire.muc.spi.MUCRoomImpl.broadcastPresence(MUCRoomImpl.jav a:834)
at org.jivesoftware.wildfire.muc.spi.MUCRoomImpl.leaveRoom(MUCRoomImpl.java:643)
at org.jivesoftware.wildfire.muc.spi.MUCUserImpl.process(MUCUserImpl.java:477)
at org.jivesoftware.wildfire.muc.spi.MUCUserImpl.process(MUCUserImpl.java:133)
at org.jivesoftware.wildfire.muc.spi.MultiUserChatServerImpl.processPacket(MultiUs erChatServerImpl.java:235)
at org.jivesoftware.wildfire.muc.spi.MultiUserChatServerImpl.process(MultiUserChat ServerImpl.java:216)
at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.broadcastUnavailableFor DirectedPresences(PresenceUpdateHandler.java:435)
at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.process(PresenceUpdateH andler.java:110)
at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.process(PresenceUpdateH andler.java:153)
at org.jivesoftware.wildfire.PresenceRouter.handle(PresenceRouter.java:92)
at org.jivesoftware.wildfire.PresenceRouter.route(PresenceRouter.java:61)
at org.jivesoftware.wildfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:75)
at org.jivesoftware.wildfire.SessionManager.removeSession(SessionManager.java:1402 )
at org.jivesoftware.wildfire.SessionManager$ClientSessionListener.onConnectionClos e(SessionManager.java:1446)
at org.jivesoftware.wildfire.net.SocketConnection.notifyCloseListeners(SocketConne ction.java:637)
at org.jivesoftware.wildfire.net.SocketConnection.close(SocketConnection.java:453)
at org.jivesoftware.wildfire.net.SocketConnection.deliver(SocketConnection.java:58 0)
at org.jivesoftware.wildfire.ClientSession.deliver(ClientSession.java:760)
at org.jivesoftware.wildfire.ClientSession.process(ClientSession.java:754)
at org.jivesoftware.wildfire.muc.spi.MUCRoleImpl.send(MUCRoleImpl.java:241)
at org.jivesoftware.wildfire.muc.spi.MUCRoomImpl.broadcastPresence(MUCRoomImpl.jav a:834)
at org.jivesoftware.wildfire.muc.spi.MUCRoomImpl.leaveRoom(MUCRoomImpl.java:643)
at org.jivesoftware.wildfire.muc.spi.MUCUserImpl.process(MUCUserImpl.java:477)
at org.jivesoftware.wildfire.muc.spi.MUCUserImpl.process(MUCUserImpl.java:133)
at org.jivesoftware.wildfire.muc.spi.MultiUserChatServerImpl.processPacket(MultiUs erChatServerImpl.java:235)
at org.jivesoftware.wildfire.muc.spi.MultiUserChatServerImpl.process(MultiUserChat ServerImpl.java:216)
at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.broadcastUnavailableFor DirectedPresences(PresenceUpdateHandler.java:435)
at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.process(PresenceUpdateH andler.java:110)
at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.process(PresenceUpdateH andler.java:153)
at org.jivesoftware.wildfire.PresenceRouter.handle(PresenceRouter.java:92)
at org.jivesoftware.wildfire.PresenceRouter.route(PresenceRouter.java:61)
at org.jivesoftware.wildfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:75)
at org.jivesoftware.wildfire.SessionManager.removeSession(SessionManager.java:1402 )
at org.jivesoftware.wildfire.SessionManager$ClientSessionListener.onConnectionClos e(SessionManager.java:1446)
at org.jivesoftware.wildfire.net.SocketConnection.notifyCloseListeners(SocketConne ction.java:637)
at org.jivesoftware.wildfire.net.SocketConnection.close(SocketConnection.java:453)
at org.jivesoftware.wildfire.net.SocketConnection.deliver(SocketConnection.java:58 0)
at org.jivesoftware.wildfire.ClientSession.deliver(ClientSession.java:760)
at org.jivesoftware.wildfire.ClientSession.process(ClientSession.java:754)
at org.jivesoftware.wildfire.muc.spi.MUCRoleImpl.send(MUCRoleImpl.java:241)
at org.jivesoftware.wildfire.muc.spi.MUCRoomImpl.broadcastPresence(MUCRoomImpl.jav a:834)
at org.jivesoftware.wildfire.muc.spi.MUCRoomImpl.leaveRoom(MUCRoomImpl.java:643)
at org.jivesoftware.wildfire.muc.spi.MUCUserImpl.process(MUCUserImpl.java:477)
at org.jivesoftware.wildfire.muc.spi.MUCUserImpl.process(MUCUserImpl.java:133)
at org.jivesoftware.wildfire.muc.spi.MultiUserChatServerImpl.processPacket(MultiUs erChatServerImpl.java:235)
at org.jivesoftware.wildfire.muc.spi.MultiUserChatServerImpl.process(MultiUserChat ServerImpl.java:216)
at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.broadcastUnavailableFor DirectedPresences(PresenceUpdateHandler.java:435)
at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.process(PresenceUpdateH andler.java:110)
at org.jivesoftware.wildfire.handler.PresenceUpdateHandler.process(PresenceUpdateH andler.java:153)
at org.jivesoftware.wildfire.PresenceRouter.handle(PresenceRouter.java:92)
at org.jivesoftware.wildfire.PresenceRouter.route(PresenceRouter.java:61)
at org.jivesoftware.wildfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:75)
at org.jivesoftware.wildfire.SessionManager.removeSession(SessionManager.java:1402 )
at org.jivesoftware.wildfire.SessionManager$ClientSessionListener.onConnectionClos e(SessionManager.java:1446)
at org.jivesoftware.wildfire.net.SocketConnection.notifyCloseListeners(SocketConne ction.java:637)
at org.jivesoftware.wildfire.net.SocketConnection.close(SocketConnectio.java:453)
at org.jivesoftware.wildfire.net.SocketConnection.deliver(SocketConnection.java:58 0)
and so on…