注册

环信Android SDK2.2.5 1月27号出现重复下载server.xml直到StackOverflowError的现象

今天抓到部分这样的崩溃, 测试部分未崩溃手机也出现了重复下载的现象, 应该是和网络环境也有一定的关系
重复下载的URL是http://www.easemob.com/easemob/server.xml?sdk_version=2.2.5&app_key=***&file_version=​ ,伴随着这么一条LOG 
retrieveDNSConfigWithCountDown error:Connection to http://www.easemob.com refused
这是今天服务器的问题么,之前都没有遇到过
 
一个典型的堆栈是这样的
java.lang.StackOverflowError
at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:147)
at java.lang.IntegralToString.convertInt(IntegralToString.java:209)
at java.lang.IntegralToString.appendInt(IntegralToString.java:173)
at java.lang.StringBuilder.append(StringBuilder.java:139)
at libcore.io.IoBridge.connectDetail(IoBridge.java:171)
at libcore.io.IoBridge.isConnected(IoBridge.java:223)
at libcore.io.IoBridge.connectErrno(IoBridge.java:165)
at libcore.io.IoBridge.connect(IoBridge.java:116)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:460)
at java.net.Socket.connect(Socket.java:838)
at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:152)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
at com.easemob.cloud.HttpClientManager.httpExecute(Unknown Source)
at com.easemob.cloud.EMHttpClient.httpExecute(Unknown Source)
at com.easemob.chat.core.h.p(Unknown Source)
at com.easemob.chat.core.h.o(Unknown Source)
at com.easemob.chat.core.j.c(Unknown Source)
...
[
at com.easemob.chat.core.l.h(Unknown Source)
at com.easemob.chat.core.h.p(Unknown Source)
at com.easemob.chat.core.h.o(Unknown Source)
at com.easemob.chat.core.j.c(Unknown Source)
]
...
at com.easemob.chat.core.l.j(Unknown Source)
at com.easemob.chat.core.h.g(Unknown Source)
at com.easemob.cloud.HttpClientManager.sendHttpRequest(Unknown Source)
at com.easemob.analytics.EMActiveCollector$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:848)
或者这样的
...
[
at com.easemob.chat.core.l.h(Unknown Source)
at com.easemob.chat.core.h.p(Unknown Source)
at com.easemob.chat.core.h.o(Unknown Source)
at com.easemob.chat.core.j.c(Unknown Source)
]
...

at com.easemob.chat.core.l.i(Unknown Source)
at com.easemob.chat.core.h.f(Unknown Source)
at com.easemob.chat.core.EMConnectionManager.connect(Unknown Source)
at com.easemob.chat.core.EMConnectionManager.connectSync(Unknown Source)
at com.easemob.chat.core.EMConnectionManager.reconnectSync(Unknown Source)
at com.easemob.chat.core.EMConnectionManager$3.run(Unknown Source)
已邀请:
我也有遇到吖 怎么搞吖 快把人都逼疯了 
能拿到完整的log日志吗,就是出问题时sdcard/android/app_packagename/log底下的文件
发行版, 没开日志, 我们自己的测试手机上又没复现
02-03 14:10:44.981 D/j       ( 3459): config server url : http://www.easemob.com/easemob/server.xml?sdk_version=2.2.5&app_key=easemob-demo%23chatdemoui&file_version=
02-03 14:10:44.986 I/System.out( 3459): httpget:http://www.easemob.com/easemob/server.xml?sdk_version=2.2.5&app_key=easemob-demo%23chatdemoui&file_version=
02-03 14:10:44.986 I/System.out( 3459): http://www.easemob.com/easemob/server.xml?sdk_version=2.2.5&app_key=easemob-demo%23chatdemoui&file_version=
02-03 14:10:44.987 I/System.out( 3459): [socket][13] connection /127.0.0.1:9280;LocalPort=38926(20000)

这个是在我们app上复现的log,testin上自动测试出来的结果。
分析原因是 取dns config时, 上级dns server,没有正确识别域名http://www.easemob.com/......
识别成一个错误的地址127.0.0.1:9280, 同时由于SDK的递归取dns,现在增加了一个hotfix,如果取的此时比较多,就不递归取了,避免stackoverflow.

春节后发2.2.6时,会采用一个新的策略,直接连IP, 而不是通过域名,避免DNS错误。
 
如果需要紧急的hotfix,请跟qq:2703226757  联系
 
 
连接wifi但wifi没连接网络的时候就出现这BUG了

要回复问题请先登录注册