android Win death的问题-1

来源:互联网 发布:豆瓣最低分电影知乎 编辑:程序博客网 时间:2024/04/27 19:30

今天在修改安全登录的代码,实现socket和服务器1、版本交互、2、鉴权信息交互。写完调试时,第一步版本交互成功,但是在第二步发完鉴权消息后(从服务器侧看到我发的消息),在socket recv时出现android死机的问题,错误的log如下:

05-15 12:25:04.830: I/ActivityManager(370): Process com.xxx.xxx (pid 3805) has died.
05-15 12:25:04.830: I/WindowState(370): WIN DEATH: Window{420154d0 u0 SurfaceView}
05-15 12:25:04.830: I/qtaguid(370): Failed write_ctrl(s 0 10060) res=-1 errno=1
05-15 12:25:04.830: W/InputDispatcher(370): channel '41fb9d20 com.xxx.xxx/com.xxx.xxx.xxx(server)' ~ Consumer closed input channel or an error occurred.  events=0x9
05-15 12:25:04.830: W/NetworkManagementSocketTagger(370): setKernelCountSet(10060, 0) failed with errno -1
05-15 12:25:04.830: E/InputDispatcher(370): channel '41fb9d20 com.xxx.xxx/com.xxx.xxx.xxx(server)' ~ Channel is unrecoverably broken and will be disposed!
05-15 12:25:04.830: W/InputDispatcher(370): channel '4208b880 Connecting... (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
05-15 12:25:04.830: E/InputDispatcher(370): channel '4208b880 Connecting... (server)' ~ Channel is unrecoverably broken and will be disposed!

或者下面的错误

I/WindowState(  370): WIN DEATH: Window{41f85bb0 u0 com.xxx.xxx/com.xxx.xxx.CanvasActivity}
W/WindowManager(  370): Force-removing child win Window{41f9a458 u0 SurfaceView} from container Window{41f85bb0 u0 com.xxx.xxx/com.xxx.xxx.xxx}
I/ActivityManager(  370): Process com.xxx.xxx(pid 4051) has died.
I/qtaguid (  370): Failed write_ctrl(s 0 10060) res=-1 errno=1
W/NetworkManagementSocketTagger(  370): setKernelCountSet(10060, 0) failed with errno -1
W/InputDispatcher(  370): channel '41ea2e88 com.xxx.xxx/com.xxx.xxx.xxx(server)' ~ Consumer closed input channel or an error occurred.  events=0x9
E/InputDispatcher(  370): channel '41ea2e88 com.xxx.xxx/com.xxx.xxx.xxx(server)' ~ Channel is unrecoverably broken and will be disposed!


对于修改的socket通信进行了额外的检查,没发现什么问题,网上查查,众说纷纭啊,但是我觉得有一个人提到,和写入非法数据相关,我感觉也是这个问题,并打印一些log,跟踪程序是死在哪儿,结果发现我加打印后死的位置变化了,这让我很疑惑,而且打出了如下的打印(错误log没保留,这儿示例一下)

05-15 12:25:04.830: [ 05-15 12:25:04.755:......

05-15 12:25:04.830: ]test1              /*test是我想输出的*/

突然想到打印log有问题,因为之前可能随手一改,把打印消息的参数从2变成了1个,导致错误,改了OK

__android_log_print(6,"ssl_client","auth err, auth_result = %d\n", info->auth_result);

写成了__android_log_print(6,"ssl_client  auth err, auth_result = %d\n", info->auth_result);

这样导致了错误,居然编译无错误啊,坑人啊。


总结,因为时间比较急,改代码也是急了些,并且用了好多拷贝,对于打印信息没特别关注,导致问题,要注意,不过这次也是对于win death有了一点点了解,不怎么害怕了。Win death多可能是因为出现非法读写和访问,指针空操作访问什么,还有程序参数不匹配,(有些猜测的成分)以后遇到再补充

0 0
原创粉丝点击