Consumer closed input channel or an error occurred. events=0x8

在将代码从其他平台移植到Android时遇到了'Consumer closed input channel or an error occurred. events=0x8'的问题。尝试了修改manifest.xml设置、删除SD卡缓存、检查2.3系统bug等方法均未解决问题。最后通过分析老外的建议,发现是内存泄漏导致,但添加autorelease并未修复。深入排查后,发现是XML读取方式在Android上不适用,需要使用xmlReadMemory。修改后成功解决问题,强调了解决问题需要冷静分析和对库的深入理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将代码移植到android的过程中出现了一个问题:

04-18 15:30:54.854: E/InputDispatcher(1568): channel '407d93b0 com.mobiap.casino/com.mobiap.casino.android_casino (server)' ~ Consumer closed input channel or an error occurred. events=0x8
04-18 15:30:54.854: E/InputDispatcher(1568): channel '407d93b0 com.mobiap.casino/com.mobiap.casino.android_casino (server)' ~ Channel is unrecoverably broken and will be disposed!

我用的是魅族M9,系统为2.3的,coco2d-x版本为2.0.1的

经过baidu+google后,搜索到了以下几种解决方案:

1.由于横竖屏切换导致出现该错误。(找到最多的一种解决方案)

具体修正方法为:在manifest.xml中设置android:launchMode="singleTask" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden"

结果:果然不行!在进行过以上设置后发现,该咋样还是咋样,查找程序代码发现根本就不是进行了横竖屏的切换,该方法放弃,继续搜索。

2.将sd卡中的缓存删掉。

操作:果断删之,连程序都给卸了。

结果:果然还是不行,总不能将系统给重装吧!

3.网上说是2.3系统的bug

操作:这。。。

结果:继续找吧!

4.找到cocos2d-x官网论坛中的一个老外的帖子,其出现的结果跟我一模一样啊,内容如下:

WIN DEATH: but why?

发帖数

49

由 Ron Mobi 在 5 个月 之前添加

Hi, two days i try to avoid this error :( After this my app closes.

04-18 15:30:54.404: I/DEBUG*
04-18 15:30:54.404: I/DEBUG: Build fingerprint: 'lge/thunderg/thunderg:2.3.3/GRI40/LG-P500-V20c.19C1E59AC2:user/ota-rel-keys,release-keys'
04-18 15:30:54.404: I/DEBUG: >>> com.mobiap.casino <<<
04-18 15:30:54.404: I/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
04-18 15:30:54.404: I/DEBUG: r0 ffffffff r1 73746000 r2 00000004 r3 ffff0ff0
04-18 15:30:54.414: I/DEBUG: r4 00000000 r5 73746000 r6 afd46470 r7 00000000
04-18 15:30:54.414: I/DEBUG: r8 aca4a965 r9 00098450 10 00100000 fp 00000001
04-18 15:30:54.414: I/DEBUG: ip afd24579 sp 100ffe28 lr afd24571 pc aca652c2 cpsr 80000030
04-18 15:30:54.414: I/DEBUG: d0 400000003eaaaaab d1 3ff0000041f00000
04-18 15:30:54.424: I/DEBUG: d2 bfd3441350baf6de d3 c1493000c1323800
04-18 15:30:54.424: I/DEBUG: d4 4900000040f7b000 d5 000000000007bd80
04-18 15:30:54.424: I/DEBUG: d6 4515a00000000800 d7 40800000c48ee000
04-18 15:30:54.424: I/DEBUG: d8 0000000000000000 d9 0000000000000000
04-18 15:30:54.424: I/DEBUG: d10 0000000000000000 d11 0000000000000000
04-18 15:30:54.424: I/DEBUG: d12 0000000000000000 d13 0000000000000000
04-18 15:30:54.424: I/DEBUG: d14 0000000000000000 d15 0000000000000000
04-18 15:30:54.424: I/DEBUG: scr 80000012
04-18 15:30:54.534: I/DEBUG: #00 pc 000652c2 /system/lib/libdvm.so
04-18 15:30:54.534: I/DEBUG: #01 lr afd24571 /system/lib/libc.so
04-18 15:30:54.534: I/DEBUG: code around pc:
04-18 15:30:54.534: I/DEBUG: aca652a0 000267ab 4b09b570 0b0d1c14 0b1018c2 
04-18 15:30:54.534: I/DEBUG: aca652b0 032d0300 d20742a8 1c291a2d f7ac2204 
04-18 15:30:54.534: I/DEBUG: aca652c0 6820eaf8 60211941 46c0bd70 00000fff 
04-18 15:30:54.534: I/DEBUG: aca652d0 4b10b5f8 447b1c01 6d066818 d0162900 
04-18 15:30:54.534: I/DEBUG: aca652e0 23001c02 e00b251c 42a16ad4 1c2cd306 
04-18 15:30:54.544: I/DEBUG: code around lr:
04-18 15:30:54.544: I/DEBUG: afd24550 ffffff8c 00028e2e 0000076c 2301b510 
04-18 15:30:54.544: I/DEBUG: afd24560 fdd0f7ff 46c0bd10 1c04b510 fd36f7ed 
04-18 15:30:54.544: I/DEBUG: afd24570 20016004 bd104240 1c03b510 db0233ff 
04-18 15:30:54.544: I/DEBUG: afd24580 f7ff4240 bd10fff1 4d1bb5f0 4f1c4b1b 
04-18 15:30:54.544: I/DEBUG: afd24590 58ea447d 880359ec 88278811 1c0eb087 
04-18 15:30:54.544: I/DEBUG: stack:
04-18 15:30:54.544: I/DEBUG: 100ffde8 00000000 
04-18 15:30:54.544: I/DEBUG: 100ffdec 00000000 
04-18 15:30:54.544: I/DEBUG: 100ffdf0 00000000 
04-18 15:30:54.544: I/DEBUG: 100ffdf4 00000000 
04-18 15:30:54.544: I/DEBUG: 100ffdf8 00000000 
04-18 15:30:54.544: I/DEBUG: 100ffdfc 00000000 
04-18 15:30:54.544: I/DEBUG: 100ffe00 00000000 
04-18 15:30:54.544: I/DEBUG: 100ffe04 00000000 
04-18 15:30:54.544: I/DEBUG: 100ffe08 00000000 
04-18 15:30:54.544: I/DEBUG: 100ffe0c 00000000 
04-18 15:30:54.544: I/DEBUG: 100ffe10 00000000 
04-18 15:30:54.544: I/DEBUG: 100ffe14 00000000 
04-18 15:30:54.544: I/DEBUG: 100ffe18 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe1c afd24587 /system/lib/libc.so
04-18 15:30:54.554: I/DEBUG: 100ffe20 df002777 
04-18 15:30:54.554: I/DEBUG: 100ffe24 e3a070ad 
04-18 15:30:54.554: I/DEBUG: #00 100ffe28 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe2c 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe30 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe34 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe38 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe3c 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe40 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe44 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe48 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe4c 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe50 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe54 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe58 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe5c 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe60 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe64 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe68 00000000 
04-18 15:30:54.554: I/DEBUG: 100ffe6c 00000000 
04-18 15:30:54.674: I/DEBUG: debuggerd committing suicide to free the zombie!
04-18 15:30:54.674: I/BootReceiver(1568): Copying /data/tombstones/tombstone_02 to DropBox (SYSTEM_TOMBSTONE)
04-18 15:30:54.704: I/DEBUG: debuggerd: Jun 27 2011 23:27:49
04-18 15:30:54.754: D/StatusBarPolicy(1649): [BRIGHTHY] 0. mDataNetType: 2
04-18 15:30:54.754: D/StatusBarPolicy(1649): [BRIGHTHY] curNetwork=25020 curHPLMN=25020
04-18 15:30:54.834: I/ActivityManager(1568): Process com.mobiap.casino (pid 1051) has died.
04-18 15:30:54.854: E/InputDispatcher(1568): channel '407d93b0 com.mobiap.casino/com.mobiap.casino.android_casino (server)' ~ Consumer closed input channel or an error occurred. events=0x8
04-18 15:30:54.854: E/InputDispatcher(1568): channel '407d93b0 com.mobiap.casino/com.mobiap.casino.android_casino (server)' ~ Channel is unrecoverably broken and will be disposed!
04-18 15:30:54.854: I/WindowManager(1568): WIN DEATH: Window{407d93b0 com.mobiap.casino/com.mobiap.casino.android_casino paused=false}
04-18 15:30:54.904: I/WindowManager(1568): WIN DEATH: Window{407e4130 SurfaceView paused=false}
04-18 15:30:54.924: I/WindowManager(1568): Setting rotation to 0, animFlags=1
04-18 15:30:54.924: I/ActivityManager(1568): Config changed: { scale=1.0 imsi=250/20 loc=ru_RU touch=3 keys=1/1/2 nav=1/1 orien=1 layout=18 uiMode=17 seq=606}

It happens on all game screens in random time, i can't understand why. What the reason of this error, who knows ?

F Es

RE: WIN DEATH: but why?

发帖数

29

 

由 F Es 在 5 个月 之前添加

I am also getting a couple of this random crashes from time to time.

Ron Mobi

RE: WIN DEATH: but why?

发帖数

49

 

由 Ron Mobi 在 5 个月 之前添加

And how did you resolve this problem?

Milda Genius

RE: WIN DEATH: but why?

发帖数

105

 

由 Milda Genius 在 5 个月 之前添加

Me too. I dont have solution yet.

Ron Mobi

RE: WIN DEATH: but why?

发帖数

49

 

由 Ron Mobi 在 5 个月 之前添加

What is the reason of this error ? Graphics? Version of sdk and ndk ? Developers of cocos2d-x , please, help us ! :) Our customer complains ! :(

Milda Genius,
What version of sdk and ndk does you use?
I use cocos2d-x 0.10.0 and ndk by crystax nr7

Ron Mobi

RE: WIN DEATH: but why?

发帖数

49

 

由 Ron Mobi 在 5 个月 之前添加

I downloaded sdk ver. 12, and... My App shut at the beginning ! With WIN DEATH again :(

Ron Mobi

RE: WIN DEATH: but why?

发帖数

49

 

由 Ron Mobi 在 5 个月 之前添加

I checked game under all versions of cocos2d-x. I got to run the program. But I always get WIN DEATH: in random time.
So idea, that this mistake depends on versions of sdk and ndk, can be ignored.

Ron Mobi

RE: WIN DEATH: but why?

发帖数

49

 

由 Ron Mobi 在 5 个月 之前添加

Could it be call UserDefaults?

Minggo Zhang

RE: WIN DEATH: but why?

发帖数

1409

 

由 Minggo Zhang 在 5 个月 之前添加

Why not use official ndk?

Ron Mobi

RE: WIN DEATH: but why?

发帖数

49

 

由 Ron Mobi 在 5 个月 之前添加

Dear Minggo, I downloaded official ndk r7. Same problem. Maybe try ndk r6 ? But where i can get it?

Ron Mobi

RE: WIN DEATH: but why?

发帖数

49

 

由 Ron Mobi 在 5 个月 之前添加

I downloaded ndk 6, but in cygwin i get:

make: Entering directory `/cygdrive/d/cocos2d-1.0.1-x-0.12.0/casinoshka/android'
Gdbserver : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
Install : libcocosdenshion.so => libs/armeabi/libcocosdenshion.so
SharedLibrary : libgame.so
D:/android-ndk-r6/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld.exe: cannot find -lGLESv1_CM
collect2: ld returned 1 exit status
/cygdrive/d/android-ndk-r6/build/core/build-binary.mk:280: recipe for target `/cygdrive/d/cocos2d-1.0.1-x-0.12.0/casinoshka/android/obj/local/armeabi/libgame.so' failed
make: *** [/cygdrive/d/cocos2d-1.0.1-x-0.12.0/casinoshka/android/obj/local/armeabi/libgame.so] Error 1
make: Leaving directory `/cygdrive/d/cocos2d-1.0.1-x-0.12.0/casinoshka/android'

Minggo Zhang

RE: WIN DEATH: but why?

发帖数

1409

 

由 Minggo Zhang 在 5 个月 之前添加

May be these documents can help 
Build project with ndk-r7
Some cautions of Android 4.0

Ron Mobi

RE: WIN DEATH: but why?

发帖数

49

 

由 Ron Mobi 在 5 个月 之前添加

I tried it. Same result. Please, say, in what cause of problem ? Big size of graphics, using of UserDefaults, anything else ?

Minggo Zhang

RE: WIN DEATH: but why?

发帖数

1409

 

由 Minggo Zhang 在 5 个月 之前添加

I haven't meet the problem.
If you can provide a demo to reproduce it. It may be helpful for us to resolve it.

Ron Mobi

RE: WIN DEATH: but why?

发帖数

49

 

由 Ron Mobi 在 5 个月 之前添加

Ok, there is last version
http://depositfiles.com/files/7g4m1oqmq
Sorry for erotic content, requirement of customer :) Our game not for market.

Ron Mobi

RE: WIN DEATH: but why?

发帖数

49

 

由 Ron Mobi 在 5 个月 之前添加

Anybody tryed? I still can not resolve problem :(

Andre Rudlaff

RE: WIN DEATH: but why?

发帖数

15

 

由 Andre Rudlaff 在 5 个月 之前添加

I have not tried your code.

Are you building your naitve code for arm and armv7a?
There was a bug in ndk7b which caused crashes on armv7a devices without the NEON instruction set (like Tegra 2 devices)
Maybe it helps if you update to ndk7c.

If you are not sure, simply look at the libs directory of your project if it contains both the arm and armv7 folder you are building for armv7a.

If that doesn't help, is there any output before the crash? like a jni warning or something like that?

Can you reproduce the error when building for Linux/Windows/iOS.
In that case it may be helpful to attach a debugger or do some valgrind checking (Linux only)

Ron Mobi

RE: WIN DEATH: but why?

发帖数

49

 

由 Ron Mobi 在 4 个月 之前添加

I used only 1 scene. Without scene's pushes and pops. I had 7 Scenes. Now I put Layers on 1 Scene. Please, tell, why with may scenes we have memory leaks?

操作:看~!当时看到这篇帖子,心情那个激动啊,从第一个英文到最后一个英文字母看完后。

结果:发现到最后也没给个具体解决方案。心情当时那个凉啊。

没办法只好找该作者本人,发个email,纯英文的,内容大概是看他搞定没,搞定了给咱个具体解决方案啊什么的,呵呵,上午发过去,下午人家就回过来了,不错,这个老外真心不错,不坑爹啊!接下来,我把他发的内容公布下:

My mistake was in code, for example:


//create new csene
 CCScene *levelsScene = new CCScene( );
 levelsScene -> autorelease( );


 //create new layer for game
 CCLayer *levels = new Levels( );
 levels -> autorelease( );
 levels -> setPosition( ccp( 0, 0 ) );


 //add our layer to scene
 levelsScene -> addChild( levels, 0 );


 //push new scene
 CCDirector::sharedDirector( ) -> pushScene( CCTransitionFade::create( 0.5f, levelsScene, ccBLACK ) );


In that case I didn't use autorelease( ) and got memory leaks! So now I use it and all is ok.


And as I understand - WIN DEATH: is not mistake. So the app close itself. Try to quit and in eclipse logcat you will see win death =)

 

Hope, that it will help.

 

原来是他的一个scene没autorelease才出现了该错误的。接下来我按照他给的方案检查下代码,并将每个scene都加了autorelease了,运行下,发现,结果:还是不行!难道老外也坑爹?不行,再试试,运行了3遍后,果断放弃。

坑爹啊,马上一个下午都快没了,得赶紧找个解决方案出来啊。

得!还是静下心来找具体的出错原因吧,根据老外的思路,他应该是在运行的过程中出现了错误提示,但是在编译的过程中没有出现,也就是说这个错误是由于错误的运行结果导致的。根据这个思路,继续查找代码,打log查看每个变量的值,终于,发现了,是的,真的发现了!

具体原因:由于在加载程序时需要解析xml配置文件,而在win32下面解析xml文件的话只需要xmlReadFile,找到xml的路径加载就可以了,但是在android中继续使用xmlReadFile的话是不行的,需要xmlReadMemory,而之前读取xml的方式也需要改变,改为:(代码仅供参考,只提供具体思路)

  CCFileUtils* fileUtils;

const char* path = fileUtils->fullPathFromRelativePath(yourfilename);    

unsigned long size ;

char* data=(char*)fileUtils->getFileData (path, "rt", &size )

doc = xmlReadMemory(data, size, NULL, "UTF-8", XML_PARSE_RECOVER);

//接下来就是解析xml的操作了。。。你想干嘛就干嘛吧

。。。。。。。。。。。。

总结:遇到问题不能太急,这样反而起到反作用,需要冷静下来,观察到底哪里出了错,这样才能找到最终的原因。该问题主要原因还是出在对libxml的了解不清楚,对不同平台下的支持不同,从这个问题中值得反思啊!!!

最后感谢以下文章的大力支持!

http://blog.csdn.net/yuanhong2910/article/details/7030289

http://www.cocos2d-x.org/boards/6/topics/10378

 

 

 

完!

 

 

 

 

07-07 14:44:01.144 1936 3340 W ActivityManager: Force finishing activity com.zhiying.settings/.about.LegalInformationActivity 07-07 14:44:01.152 1936 1936 E PowerManagerService: screensaver enable true 07-07 14:44:01.166 1936 1952 E memtrack: Couldn't load memtrack module 07-07 14:44:01.166 1936 1952 W android.os.Debug: failed to get memory consumption info: -1 07-07 14:44:01.215 1936 2009 W InputDispatcher: channel '5cfd4ab com.zhiying.settings/com.zhiying.settings.about.LegalInformationStartWebActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9 07-07 14:44:01.215 1936 2009 E InputDispatcher: channel '5cfd4ab com.zhiying.settings/com.zhiying.settings.about.LegalInformationStartWebActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 07-07 14:44:01.215 1936 2009 W InputDispatcher: channel 'c486525 com.zhiying.settings/com.zhiying.settings.about.LegalInformationStartWebActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9 07-07 14:44:01.215 1936 2009 E InputDispatcher: channel 'c486525 com.zhiying.settings/com.zhiying.settings.about.LegalInformationStartWebActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 07-07 14:44:01.216 1936 2009 W InputDispatcher: channel 'b3becb6 com.zhiying.settings/com.zhiying.settings.about.LegalInformationActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9 07-07 14:44:01.216 1936 2009 E InputDispatcher: channel 'b3becb6 com.zhiying.settings/com.zhiying.settings.about.LegalInformationActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 07-07 14:44:01.216 1936 2009 W InputDispatcher: channel '1712ca6 com.zhiying.settings/com.zhiying.settings.about.SystemInfoActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9 07-07 14:44:01.216 1936 2009 E InputDispatcher: channel '1712ca6 com.zhiying.settings/com.zhiying.settings.about.SystemInfoActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 07-07 14:44:01.216 1936 2009 W InputDispatcher: channel 'd7b4fb2 com.zhiying.settings/com.zhiying.settings.MainZYActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9 07-07 14:44:01.217 1936 2009 E InputDispatcher: channel 'd7b4fb2 com.zhiying.settings/com.zhiying.settings.MainZYActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
07-08
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值