[ https://issues.apache.org/jira/browse/THRIFT-4124?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16982546#comment-16982546 ]
Alexey Andronov commented on THRIFT-4124: ----------------------------------------- 1) good point 2) if I understand correctly `org.apache.thrift.async.TAsyncMethodCall.doReadingResponseSize(TAsyncMethodCall.java:250)` method is under your control and you could catch 1GB allocation request when only 122 MB is available? 3) I've caught the error during testing and was surprised that wrong address caused app to crash :) Anyway I'm totally ok with closing the issue > Connection to non-thrift server crashes android app > --------------------------------------------------- > > Key: THRIFT-4124 > URL: https://issues.apache.org/jira/browse/THRIFT-4124 > Project: Thrift > Issue Type: Bug > Components: Java - Library > Affects Versions: 0.10.0 > Environment: Android Studio > Reporter: Alexey Andronov > Assignee: Qinghui Xu > Priority: Major > Labels: async > > I connect to server like this: > {code}m_client = new DispatchBackend.AsyncClient( > new TBinaryProtocol.Factory(), > new TAsyncClientManager(), > new TNonblockingSocket("google.com", 80) > );{code} > Then I execute request: > {code} > try { > m_client.request(); > } catch (TException e) { > // never reaches here > }{code} > And my app crashes with OOM error. > The problem is that I can't catch exception from thrift library inside my > application i.e. > inner library exception always crashes my app which is very sad. > P.S. I tried to catch Throwable instead of TException and it didn't help > Stacktrace: > {code}E/art: Throwing OutOfMemoryError "Failed to allocate a 1213486172 byte > allocation with 3514240 free bytes and 122MB until OOM" > E/AndroidRuntime: FATAL EXCEPTION: TAsyncClientManager#SelectorThread 9112 > Process: com.myapp, PID: 20608 > java.lang.OutOfMemoryError: Failed to allocate a 1213486172 byte > allocation with 3514240 free bytes and 122MB until OOM > at java.nio.ByteBuffer.allocate(ByteBuffer.java:56) > at > org.apache.thrift.async.TAsyncMethodCall.doReadingResponseSize(TAsyncMethodCall.java:250) > at > org.apache.thrift.async.TAsyncMethodCall.transition(TAsyncMethodCall.java:198) > at > org.apache.thrift.async.TAsyncClientManager$SelectThread.transitionMethods(TAsyncClientManager.java:143) > at > org.apache.thrift.async.TAsyncClientManager$SelectThread.run(TAsyncClientManager.java:113){code} -- This message was sent by Atlassian Jira (v8.3.4#803005)