1

I am using retrofit, okhttp to make network calls in my app.

Recently app users are facing a strange OOM crash while making requests.

The stacktrace for the issue is :

Caused by java.lang.OutOfMemoryError: Failed to allocate a 39950 byte allocation with 8388512 free bytes and 62MB until OOM
   at libcore.io.IoUtils$FileReader.(IoUtils.java)
   at libcore.io.IoUtils.readFileAsString(IoUtils.java:116)
   at com.android.org.conscrypt.CertPinManager.readPinFile(CertPinManager.java:120)
   at com.android.org.conscrypt.CertPinManager.ensureInitialized(CertPinManager.java:92)
   at com.android.org.conscrypt.CertPinManager.lookup(CertPinManager.java:136)
   at com.android.org.conscrypt.CertPinManager.isChainValid(CertPinManager.java:72)
   at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:302)
   at com.android.org.conscrypt.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:219)
   at com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:113)
   at com.android.org.conscrypt.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:525)
   at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(NativeCrypto.java)
   at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:302)
   at okhttp3.internal.connection.RealConnection.connectTls(SourceFile:241)
   at okhttp3.internal.connection.RealConnection.establishProtocol(SourceFile:198)
   at okhttp3.internal.connection.RealConnection.buildConnection(SourceFile:174)
   at okhttp3.internal.connection.RealConnection.connect(SourceFile:114)
   at okhttp3.internal.connection.StreamAllocation.findConnection(SourceFile:193)
   at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(SourceFile:129)
   at okhttp3.internal.connection.StreamAllocation.newStream(SourceFile:98)
   at okhttp3.internal.connection.ConnectInterceptor.intercept(SourceFile:42)
   at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:92)
   at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:67)
   at okhttp3.internal.cache.CacheInterceptor.intercept(SourceFile:109)
   at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:92)
   at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:67)
   at okhttp3.internal.http.BridgeInterceptor.intercept(SourceFile:93)
   at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:92)
   at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(SourceFile:124)
   at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:92)
   at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:67)
   at okhttp3.logging.HttpLoggingInterceptor.intercept(SourceFile:212)
   at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:92)
   at okhttp3.internal.http.RealInterceptorChain.proceed(SourceFile:67)
   at okhttp3.RealCall.getResponseWithInterceptorChain(SourceFile:170)
   at okhttp3.RealCall.execute(SourceFile:60)
   at retrofit2.OkHttpCall.execute(SourceFile:174)
   at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$RequestArbiter.request(SourceFile:171)
   at rx.internal.producers.ProducerArbiter.setProducer(SourceFile:126)
   at rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.setProducer(SourceFile:158)
   at rx.Subscriber.setProducer(SourceFile:205)
   at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$CallOnSubscribe.call(SourceFile:152)
   at retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$CallOnSubscribe.call(SourceFile:138)
   at rx.internal.operators.OnSubscribeLift.call(SourceFile:50)
   at rx.internal.operators.OnSubscribeLift.call(SourceFile:30)
   at rx.internal.operators.OnSubscribeLift.call(SourceFile:50)
   at rx.internal.operators.OnSubscribeLift.call(SourceFile:30)
   at rx.Observable.unsafeSubscribe(SourceFile:8460)
   at rx.internal.operators.OnSubscribeRedo$2.call(SourceFile:278)
   at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.enqueue(SourceFile:76)
   at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.schedule(SourceFile:55)
   at rx.internal.operators.OnSubscribeRedo$5.request(SourceFile:366)
   at rx.internal.operators.OperatorSubscribeOn$1$1$1.request(SourceFile:80)
   at rx.Subscriber.setProducer(SourceFile:211)
   at rx.internal.operators.OperatorSubscribeOn$1$1.setProducer(SourceFile:76)
   at rx.internal.operators.OnSubscribeRedo.call(SourceFile:358)
   at rx.internal.operators.OnSubscribeRedo.call(SourceFile:55)
   at rx.Observable.unsafeSubscribe(SourceFile:8460)
   at rx.internal.operators.OperatorSubscribeOn$1.call(SourceFile:94)
   at rx.internal.schedulers.ScheduledAction.run(SourceFile:55)
   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
   at java.util.concurrent.FutureTask.run(FutureTask.java:237)
   at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
   at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
   at java.lang.Thread.run(Thread.java:818)

I am not able to figure out cause for this crash.

I am not downloading images or creating bitmaps from inputstream, the log above gives idea that it is going out of memory while reading the certificate file.

Rohan Peshkar
  • 65
  • 1
  • 11
  • are you working with some images? – Ankush Bist Jan 18 '17 at 04:41
  • I am not working with images here, this is failing in case of normal calls. – Rohan Peshkar Jan 18 '17 at 04:57
  • @DileepPatel the link u give above is not as the same question, that is about the BitMap OOM, and this question is about io.IoUtils.readFileAsString(IoUtils.java:116), the InputStream or outPutStream is out of memory, so its not dublicate – HAXM Jan 18 '17 at 11:29
  • @RohanPeshkar I think you must check this out for the crash you are facing. https://github.com/square/okhttp/issues/2768. It has the reason and solution as well for the crash. – Neernay Aug 02 '18 at 06:34

0 Answers0