Skip to content

StackOverflowError: Potential Memory Leak in TCP/IP Encounter to ASAPPeer #7

@marv1913

Description

@marv1913

I have created an activity called ASAPExampleTCPEncounterActivity.

This activity enables establishing a TCP/IP connection to ASAPPeers within the same TCP/IP network as the ASAPAndroidPeer.

The target ASAPPeer should provide a TCP ServerSocket to which ASAPAndroid can connect.

For this purpose, I have added the package tcpEncounter. Inside this package there is the class TCPEncounterManagerApplicationSide.java for triggering the establishment of the TCP/IP connection to the target peer on app side. On service side there is the class TCPClientSocketThread which starts a thread for establashing a TCP connection to a ServerSocket and passes the sockets to an EncounterManager.

However, when establishing the TCP/IP connection to a target peer, the following StackOverflowError occurs:

2024-09-18 12:39:08.394 10992-11060 System.out              net.sharksystem.asap.android         I  ASAPEncounterManagerImpl(Y7lMIou0000WEN): socket called: handle new encounterStreamPair (no ID)
2024-09-18 12:39:08.394 10992-11060 System.out              net.sharksystem.asap.android         I  ASAPEncounterManagerImpl(Y7lMIou0000WEN): device/peer not in encounteredDevices - should connect
2024-09-18 12:39:08.395 10992-11060 System.out              net.sharksystem.asap.android         I  ASAPEncounterManagerImpl(Y7lMIou0000WEN): remember streamPair: StreamPair (no ID)
2024-09-18 12:39:08.406 10992-11060 System.out              net.sharksystem.asap.android         I  ASAPEncounterManagerImpl(Y7lMIou0000WEN): going to launch a new asap connection
2024-09-18 12:39:08.407 10992-11060 System.out              net.sharksystem.asap.android         I  ASAPEncounterManagerImpl(Y7lMIou0000WEN): call asap peer to handle connection
2024-09-18 12:39:08.408 10992-11060 System.out              net.sharksystem.asap.android         I  ASAPPersistentConnection(constructor): is: SocketInputStream | os: SocketOutputStream
2024-09-18 12:39:08.408 10992-11060 System.out              net.sharksystem.asap.android         I  ASAPInternalPeerFS(Y7lMIou0000WEN): handleConnection
2024-09-18 12:39:08.408 10992-11060 System.out              net.sharksystem.asap.android         I  ASAPInternalPeerFS(Y7lMIou0000WEN): announce new era
2024-09-18 12:39:08.409 10992-11060 System.out              net.sharksystem.asap.android         I  ASAPEngineFS(owner: Y7lMIou0000WEN | oldestEra: 0 | era: 0 | routing: true): content not changed - era not changed
2024-09-18 12:39:08.410 10992-11060 System.out              net.sharksystem.asap.android         I  ASAPInternalPeerFS(Y7lMIou0000WEN): launched new asapConnection thread, total number is now: 1
2024-09-18 12:39:08.416 10992-11061 System.out              net.sharksystem.asap.android         I  ASAPInternalPeerFS(Y7lMIou0000WEN): start sending interest for apps/formats
2024-09-18 12:39:08.418 10992-11061 System.out              net.sharksystem.asap.android         I  ASAPEngineFS(owner: Y7lMIou0000WEN | oldestEra: 0 | era: 0 | routing: true): send interest for app/format: ASAP_EXAMPLE_APP
2024-09-18 12:39:08.418 10992-11061 System.out              net.sharksystem.asap.android         I  ASAPEngineFS(owner: Y7lMIou0000WEN | oldestEra: 0 | era: 0 | routing: true): send encounterMap with interest: {}
2024-09-18 12:39:08.443 10992-11061 System.out              net.sharksystem.asap.android         I  ASAPPersistentConnection(to: unknown yet): start reading

2024-09-18 12:39:08.591 10992-11062 em.asap.android         net.sharksystem.asap.android         W  Throwing OutOfMemoryError "Failed to allocate a 1145123856 byte allocation with 3166270 free bytes and 188MB until OOM, target footprint 6398078, growth limit 201326592" (VmSize 16391008 kB)
2024-09-18 12:39:08.595 10992-11061 System.out              net.sharksystem.asap.android         I  ASAPPersistentConnection(to: unknown yet): back from reading
2024-09-18 12:39:08.595 10992-11061 System.out              net.sharksystem.asap.android         I  ASAPPersistentConnection(to: unknown yet): start reading
2024-09-18 12:39:08.595 10992-11062 AndroidRuntime          net.sharksystem.asap.android         E  FATAL EXCEPTION: Thread-4
                                                                                                    Process: net.sharksystem.asap.android, PID: 10992
                                                                                                    java.lang.OutOfMemoryError: Failed to allocate a 1145123856 byte allocation with 3166270 free bytes and 188MB until OOM, target footprint 6398078, growth limit 201326592
                                                                                                    	at net.sharksystem.asap.utils.ASAPSerialization.readCharSequenceParameter(ASAPSerialization.java:282)
                                                                                                    	at net.sharksystem.asap.protocol.PDU_Impl.readFormat(PDU_Impl.java:195)
                                                                                                    	at net.sharksystem.asap.protocol.InterestPDU_Impl.<init>(InterestPDU_Impl.java:24)
                                                                                                    	at net.sharksystem.asap.protocol.ASAP_Modem_Impl.readPDU(ASAP_Modem_Impl.java:251)
                                                                                                    	at net.sharksystem.asap.protocol.ASAPPersistentConnection$ASAPPDUReader.run(ASAPPersistentConnection.java:498)
2024-09-18 12:39:08.614   623-2062  ActivityTaskManager     system_server                        W    Force finishing activity net.sharksystem.asap.android/.example.ASAPExampleTCPEncounterActivity

This could be a hint for a memory leak.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions