Hi,
It seems like there is a memory leak in the smack 3.2 (PacketReader.java) even in latest smack version i.e. 3.3.
So when connection breaks abruptly , then notifyConnectionError() method is getting called in PacketReader.java. In this method , on the very first line they are setting the done variable to true and then calling connection.shutdown(new Presence(Presence.Type.unavailable)) in XMPPConnection.java class.
In shutdown method in XMPPConnection.java , they are calling packetReader.shutdown(); , in whiich they are checking again done variable , which is already set as true and the block of code which clears some data structure is not getting called , leading to OOME.
We are getting OOME in InBandBytestreamManager.java class where a Map known as managers is failing. The code to clear this Map is written in block which is not getting called because of done variable.
Please suggest some solution.
Best regards,
Keshav