Skip to content

java.lang.OutOfMemoryError: Could not allocate JNI Env #6283

@Trolldemorted

Description

@Trolldemorted

I have:


Bug description

Out of the blue, signal crashed.

02-21 12:26:42.279  2235  3222 E AndroidRuntime: java.lang.OutOfMemoryError: Could not allocate JNI Env
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at java.lang.Thread.nativeCreate(Native Method)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at java.lang.Thread.start(Thread.java:1063)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:921)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1339)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.ConnectionPool.put(ConnectionPool.java:134)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.OkHttpClient$1.put(OkHttpClient.java:152)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:191)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:132)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:101)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:179)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at okhttp3.RealCall.execute(RealCall.java:63)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at org.whispersystems.signalservice.internal.push.PushServiceSocket.getConnection(PushServiceSocket.java:655)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at org.whispersystems.signalservice.internal.push.PushServiceSocket.makeRequest(PushServiceSocket.java:529)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at org.whispersystems.signalservice.internal.push.PushServiceSocket.getMessages(PushServiceSocket.java:223)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at org.whispersystems.signalservice.api.SignalServiceMessageReceiver.retrieveMessages(SignalServiceMessageReceiver.java:143)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at org.thoughtcrime.securesms.jobs.PushNotificationReceiveJob.onRun(PushNotificationReceiveJob.java:36)
02-21 12:26:42.279  2235  3222 E AndroidRuntime: 	at org.whispersystems.jobqueue.JobConsumer.runJob(JobConsumer.java:76)
02-21 12:26:42.279 2235 3222 E AndroidRuntime: at org.whispersystems.jobqueue.JobConsumer.run(JobConsumer.java:46)

Pretty sure this is not related to my build, and the device had (after the crash) ~1.5GB free ram. An issue on so linked this error messages to leaked file descriptors, which is apparently intended in libsignal. The libsignal version i use has fixed that issue, but maybe there are other leaked FDs?

Steps to reproduce

  • cannot (yet) reproduce, happened only once

Device info

Device: Xiaomi Redmi Note 3 Pro
Android version: 6.0.1
Signal version: 3.29.6 + Trolldemorted@cdb8ac2

Link to debug log

https://gist.github.com/anonymous/51447caee0494fef9bb45994cd4fada3

Metadata

Metadata

Assignees

No one assigned

    Labels

    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