Potential memory leak in Mifare Lite SDK v 4.4.1610

Forum / MIFARE SDK / Potential memory leak in Mifare Lite SDK v 4.4.1610

Tagged: 

  • 2. April 2016 at 20:18
    Hi there,

    Using the app with leak canary several times, after closing the activity the library is registered, got a warn about a memory leak within your library.

    Attached you'll find the screenshot of leak canary trace.

    Please let me know if I can give more information.

    cheers



    04-02 20:03:48.538 13057-9063/package D/LeakCanary: * Device: samsung samsung SM-N915F tbltexx
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: * Android Version: 5.1.1 API: 22 LeakCanary: 1.3.1
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: * Durations: watch=5012ms, gc=200ms, heap dump=3737ms, analysis=54276ms
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: * Details:
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: * Class com.android.okhttp.ConfigAwareConnectionPool
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static $staticOverhead = byte[] [id=0x71bc10c9;length=32;size=48]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static CONNECTION_POOL_DEFAULT_KEEP_ALIVE_DURATION_MS = 300000
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static CONNECTION_POOL_KEEP_ALIVE_DURATION_MS = 300000
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static CONNECTION_POOL_MAX_IDLE_CONNECTIONS = 5
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static instance = com.android.okhttp.ConfigAwareConnectionPool [id=0x87706ec8]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: * Instance of com.android.okhttp.ConfigAwareConnectionPool
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static $staticOverhead = byte[] [id=0x71bc10c9;length=32;size=48]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static CONNECTION_POOL_DEFAULT_KEEP_ALIVE_DURATION_MS = 300000
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static CONNECTION_POOL_KEEP_ALIVE_DURATION_MS = 300000
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static CONNECTION_POOL_MAX_IDLE_CONNECTIONS = 5
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static instance = com.android.okhttp.ConfigAwareConnectionPool [id=0x87706ec8]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | connectionPool = com.android.okhttp.ConnectionPool [id=0x12eef670]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | networkEventListenerRegistered = true
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: * Instance of com.android.okhttp.ConnectionPool
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static $staticOverhead = byte[] [id=0x71bc15e1;length=24;size=40]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static DEFAULT_KEEP_ALIVE_DURATION_MS = 300000
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static MAX_CONNECTIONS_TO_CLEANUP = 2
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static systemDefault = com.android.okhttp.ConnectionPool [id=0x87706f20]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | cleanMode = com.android.okhttp.ConnectionPool$CleanMode [id=0x87706f10]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | connections = java.util.LinkedList [id=0x12f01680]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | connectionsCleanupRunnable = com.android.okhttp.ConnectionPool$2 [id=0x12e4cd10]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | drainModeRunnable = com.android.okhttp.ConnectionPool$1 [id=0x12e4cd00]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | executorService = java.util.concurrent.ThreadPoolExecutor [id=0x12e76a10]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | keepAliveDurationNs = 300000000000
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | maxIdleConnections = 5
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: * Instance of java.util.LinkedList
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static $staticOverhead = byte[] [id=0x71704bf9;length=8;size=24]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static serialVersionUID = 876323262645176354
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | size = 2
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | voidLink = java.util.LinkedList$Link [id=0x12f016a0]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | modCount = 12
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: * Instance of java.util.LinkedList$Link
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | data = null
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | next = java.util.LinkedList$Link [id=0x135217a0]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | previous = java.util.LinkedList$Link [id=0x1368fba0]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: * Instance of java.util.LinkedList$Link
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | data = com.android.okhttp.Connection [id=0x13553580]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | next = java.util.LinkedList$Link [id=0x12f016a0]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | previous = java.util.LinkedList$Link [id=0x135217a0]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: * Instance of com.android.okhttp.Connection
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static $staticOverhead = byte[] [id=0x71757801;length=24;size=40]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static INF_NUMBER = 2
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static INVALID_FD = -1
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static SOCK_CONN_TIME_OUT = 10000
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | bTagUidSet = false
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | connTimeout = 0
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | connected = true
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | destPorts = int[] [id=0x13684d80;length=2;size=24]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | handshake = com.android.okhttp.Handshake [id=0x1368af60]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | httpConnection = com.android.okhttp.internal.http.HttpConnection [id=0x13627190]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | httpMinorVersion = 1
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | idleStartTimeNs = 34957056648786
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | isSSL = false
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | logger = com.android.okhttp.internal.http.MultiratLog [id=0x136792a0]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | mDestIPver = 0
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | mProxy = java.net.Proxy[] [id=0x13684d60;length=2]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | mTag = 0
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | mUid = 0
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | mainTimeout = 0
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | multiSockDestAddr = java.net.InetAddress[] [id=0x13684ce0;length=2]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | multiSocket = java.net.Socket[] [id=0x13684d00;length=2]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | multiSocketStream = null
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | owner = null
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | pool = com.android.okhttp.ConnectionPool [id=0x12eef670]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | recycleCount = 1
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | route = com.android.okhttp.Route [id=0x13684cc0]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | socket = com.android.org.conscrypt.OpenSSLSocketImplWrapper [id=0x13553610]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | spdyConnection = null
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | ssl_oriReq = null
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | ssl_redirect = null
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | startExtremSocketCreation = 0
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | startSampleSocketCreation = 0
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | startSocketCreation = 0
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: * Instance of com.android.org.conscrypt.OpenSSLSocketImplWrapper
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | socket = java.net.Socket [id=0x1361bfd0]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | autoClose = true
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | channelIdPrivateKey = null
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | guard = dalvik.system.CloseGuard [id=0x7169eb18]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | handshakeSession = null
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | handshakeTimeoutMilliseconds = -1
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | is = com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream [id=0x1364f430]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | listeners = null
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | os = com.android.org.conscrypt.OpenSSLSocketImpl$SSLOutputStream [id=0x1364f4a0]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | peerHostname = java.lang.String [id=0x13677a20]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | peerPort = 443
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | readTimeoutMilliseconds = 0
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | resolvedHostname = null
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | socket = java.net.Socket [id=0x1361bfd0]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | sslNativePointer = -1371282432
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | sslParameters = com.android.org.conscrypt.SSLParametersImpl [id=0x13719330]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | sslSession = com.android.org.conscrypt.OpenSSLSessionImpl [id=0x13719420]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | state = 4
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | stateLock = java.lang.Object [id=0x1364f2c0]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | strictX509Check = 0
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | writeTimeoutMilliseconds = 0
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | connectLock = java.lang.Object [id=0x1364f260]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | impl = java.net.PlainSocketImpl [id=0x136212e0]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | isBound = false
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | isClosed = false
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | isConnected = false
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | isCreated = false
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | isInputShutdown = false
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | isOutputShutdown = false
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | localAddress = java.net.Inet4Address [id=0x87704bf8]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | proxy = null
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: * Instance of com.android.org.conscrypt.SSLParametersImpl
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static $staticOverhead = byte[] [id=0x71b66849;length=88;size=104]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static KEY_TYPE_DH_DSA = java.lang.String [id=0x7047cbc0]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static KEY_TYPE_DH_RSA = java.lang.String [id=0x7047cbd8]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static KEY_TYPE_DSA = java.lang.String [id=0x703e25d0]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static KEY_TYPE_EC = java.lang.String [id=0x703db9e8]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static KEY_TYPE_EC_EC = java.lang.String [id=0x703f1a98]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static KEY_TYPE_EC_RSA = java.lang.String [id=0x7047e600]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static KEY_TYPE_RSA = java.lang.String [id=0x703e34b8]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static defaultParameters = com.android.org.conscrypt.SSLParametersImpl [id=0x12e76970]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static defaultSecureRandom = null
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static defaultX509KeyManager = com.android.org.conscrypt.KeyManagerImpl [id=0x12e4cad0]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | static defaultX509TrustManager = com.android.org.conscrypt.TrustManagerImpl [id=0x12eef520]
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | alpnProtocols = null
    04-02 20:03:48.538 13057-9063/package D/LeakCanary: | channelIdEnabled = false
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | clientSessionContext = com.android.org.conscrypt.ClientSessionContext [id=0x132ff790]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | client_mode = true
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | enable_session_creation = true
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | enabledCipherSuites = java.lang.String[] [id=0x12ebcdd0;length=22]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | enabledProtocols = java.lang.String[] [id=0x8798b0d8;length=4]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | endpointIdentificationAlgorithm = null
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | need_client_auth = false
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | npnProtocols = null
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | pskKeyManager = null
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | secureRandom = java.security.SecureRandom [id=0x132ffa30]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | serverSessionContext = com.android.org.conscrypt.ServerSessionContext [id=0x1332cae0]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | useSessionTickets = true
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | useSni = java.lang.Boolean [id=0x7169ddc0]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | want_client_auth = false
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | x509KeyManager = com.android.org.conscrypt.KeyManagerImpl [id=0x12e4cad0]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | x509TrustManager = com.nxp.nfclib.ˊ$1 [id=0x13068c90]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: * Instance of com.nxp.nfclib.ˊ$1
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | ˊ = com.nxp.nfclib.ˊ [id=0x1332c320]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: * Instance of com.nxp.nfclib.ˊ
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | static $staticOverhead = byte[] [id=0x12d83a41;length=72;size=88]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | static ʻ = false
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | static ʿ = android.app.SharedPreferencesImpl [id=0x12db16c0]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | static ˈ = byte[] [id=0x12f51800;length=643;size=656]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | static ˉ = 197
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | static ˋ = java.lang.String [id=0x12c9b260]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | static ˎ = java.lang.String [id=0x12c9b280]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | static ͺ = byte[] [id=0x12c9b2a0;length=16;size=32]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | static ᐝ = null
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | static ι = byte[] [id=0x13176ea0;length=16;size=32]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | ʼ = package.presentation.android.ui.navigation.stationgroup.NavigationStationGroupActivity [id=0x13292a80]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | ʽ = java.lang.String [id=0x70331630]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | ʾ = com.nxp.nfclib.os.java.AESCryptoGram [id=0x13068ab0]
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | ˊ = false
    04-02 20:03:48.548 13057-9063/package D/LeakCanary: | ˏ = null

    + 0  |  - 0

    Re: Potential memory leak in Mifare Lite SDK v 4.4.1610

    6. April 2016 at 9:16
    Hi Arturo,

    Thank you very much for your investigation. I will inform the development team about your result.

    Kind regards,
    The MIFARE Team

    + 0  |  - 0
Viewing 2 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic.