消费者关闭输入通道或发生错误

Posted

技术标签:

【中文标题】消费者关闭输入通道或发生错误【英文标题】:Consumer closed input channel or an error occur 【发布时间】:2011-09-04 14:13:36 【问题描述】:

我正在开发一个 android 应用程序,它会打开 MIC 源并记录来自麦克风的音频。我在后台运行了另一个单独的线程,它会定期(每 1 秒)清除保存来自麦克风的音频输入的 ArrayList

它可以正常工作大约 5 到 7 分钟,我收到这样的错误消息

Consumer closed input channel or an error occur...

应用程序被终止。在我收到错误消息之前,它会显示此消息并终止应用程序。如何解决此问题以及可能导致此错误的原因是什么? 提前致谢。

05-26 18:51:08.137: INFO/DEBUG(2894): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-26 18:51:08.137: INFO/DEBUG(2894): Build fingerprint: 'google/passion_kt/passion:2.3.3/GRI40/49208:user/release-keys'
05-26 18:51:08.137: INFO/DEBUG(2894): pid: 2956, tid: 2956  >>> com.company.app.p2p <<<
05-26 18:51:08.137: INFO/DEBUG(2894): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 45088dbc
05-26 18:51:08.137: INFO/DEBUG(2894):  r0 42089000  r1 ffffffff  r2 00000000  r3 ffffffff
05-26 18:51:08.137: INFO/DEBUG(2894):  r4 20000000  r5 e8001200  r6 40009228  r7 00000001
05-26 18:51:08.137: INFO/DEBUG(2894):  r8 4051a3f8  r9 800a5600  10 80000000  fp 00000001
05-26 18:51:08.137: INFO/DEBUG(2894):  ip 00bfff6f  sp beb28d08  lr 80036028  pc 80035938  cpsr a0000010
05-26 18:51:08.137: INFO/DEBUG(2894):  d0  0000000000056b17  d1  6c675f6c6c6f7200
05-26 18:51:08.137: INFO/DEBUG(2894):  d2  6d6172662f6d6528  d3  72662f6b726f7707
05-26 18:51:08.137: INFO/DEBUG(2894):  d4  0000000000000000  d5  0000000000000000
05-26 18:51:08.137: INFO/DEBUG(2894):  d6  0000000000000000  d7  4080000000000000
05-26 18:51:08.137: INFO/DEBUG(2894):  d8  0000a27fb5b4b66f  d9  4325d5f141400000
05-26 18:51:08.137: INFO/DEBUG(2894):  d10 4269198840557fe0  d11 0000000042391988
05-26 18:51:08.137: INFO/DEBUG(2894):  d12 0000000000000000  d13 0000000000000000
05-26 18:51:08.137: INFO/DEBUG(2894):  d14 0000000000000000  d15 0000000000000000
05-26 18:51:08.137: INFO/DEBUG(2894):  d16 002b09c8000000a0  d17 bff0000000000000
05-26 18:51:08.137: INFO/DEBUG(2894):  d18 3ff0000000000000  d19 0000000000000000
05-26 18:51:08.137: INFO/DEBUG(2894):  d20 0000000000000000  d21 0000000000000000
05-26 18:51:08.137: INFO/DEBUG(2894):  d22 3ff0000000000000  d23 0000000000000000
05-26 18:51:08.137: INFO/DEBUG(2894):  d24 3ff0000000000000  d25 0000000000000000
05-26 18:51:08.137: INFO/DEBUG(2894):  d26 0000000000000000  d27 0000000000000000
05-26 18:51:08.137: INFO/DEBUG(2894):  d28 0100010001000100  d29 3ff8000000000000
05-26 18:51:08.137: INFO/DEBUG(2894):  d30 0000000000000000  d31 3fe5555555555555
05-26 18:51:08.137: INFO/DEBUG(2894):  scr 60000012
05-26 18:51:08.207: INFO/DEBUG(2894):          #00  pc 00035938  /system/lib/libdvm.so
05-26 18:51:08.207: INFO/DEBUG(2894):          #01  pc 00036024  /system/lib/libdvm.so
05-26 18:51:08.207: INFO/DEBUG(2894):          #02  pc 000368cc  /system/lib/libdvm.so
05-26 18:51:08.207: INFO/DEBUG(2894):          #03  pc 00020350  /system/lib/libdvm.so
05-26 18:51:08.207: INFO/DEBUG(2894): code around pc:
05-26 18:51:08.207: INFO/DEBUG(2894): 80035918 e065c003 e1530007 85803010 e5900000 
05-26 18:51:08.207: INFO/DEBUG(2894): 80035928 e1e051ac e1a0c42c e205701f e1a0771b 
05-26 18:51:08.207: INFO/DEBUG(2894): 80035938 e790510c e1170005 e1875005 e780510c 
05-26 18:51:08.207: INFO/DEBUG(2894): 80035948 1a00000c e5960014 e1530000 35960008 
05-26 18:51:08.207: INFO/DEBUG(2894): 80035958 3240c004 3586c008 35003004 e59d3004 
05-26 18:51:08.207: INFO/DEBUG(2894): code around lr:
05-26 18:51:08.207: INFO/DEBUG(2894): 80036008 0a000001 e3a02000 eb014474 e596209c 
05-26 18:51:08.207: INFO/DEBUG(2894): 80036018 eaffffd1 e1a01005 e1a00006 ebfffe1c 
05-26 18:51:08.207: INFO/DEBUG(2894): 80036028 e596102c e3510001 d8bd87f0 e5962058 
05-26 18:51:08.207: INFO/DEBUG(2894): 80036038 e3520000 d8bd87f0 e3a04000 e3a0a001 
05-26 18:51:08.207: INFO/DEBUG(2894): 80036048 e596305c e7931104 e3510000 0a000020 
05-26 18:51:08.207: INFO/DEBUG(2894): stack:
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28cc8  00000001  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28ccc  4342cbe0  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28cd0  000001e4  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28cd4  00000004  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28cd8  42263150  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28cdc  4342cbdb  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28ce0  44707fd0  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28ce4  8008eb86  /system/lib/libdvm.so
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28ce8  00000007  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28cec  002d7c02  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28cf0  00000007  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28cf4  8005e489  /system/lib/libdvm.so
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28cf8  42263150  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28cfc  00000004  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28d00  df002777  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28d04  e3a070ad  
05-26 18:51:08.207: INFO/DEBUG(2894): #00 beb28d08  80089a63  /system/lib/libdvm.so
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28d0c  fffffe84  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28d10  44707fe4  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28d14  4051a518  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28d18  40009228  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28d1c  4051a3f8  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28d20  800a5600  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28d24  fffffe84  
05-26 18:51:08.207: INFO/DEBUG(2894):     beb28d28  00000001  
05-26 18:51:08.217: INFO/DEBUG(2894):     beb28d2c  0000000c  
05-26 18:51:08.217: INFO/DEBUG(2894):     beb28d30  4051a400  
05-26 18:51:08.217: INFO/DEBUG(2894):     beb28d34  80036028  /system/lib/libdvm.so
05-26 18:51:08.217: INFO/DEBUG(2894): #01 beb28d38  00005113  
05-26 18:51:08.217: INFO/DEBUG(2894):     beb28d3c  40009228  
05-26 18:51:08.217: INFO/DEBUG(2894):     beb28d40  00511400  
05-26 18:51:08.217: INFO/DEBUG(2894):     beb28d44  00000000  
05-26 18:51:08.217: INFO/DEBUG(2894):     beb28d48  400092fc  
05-26 18:51:08.217: INFO/DEBUG(2894):     beb28d4c  80000000  /system/lib/libdvm.so
05-26 18:51:08.217: INFO/DEBUG(2894):     beb28d50  400091e8  
05-26 18:51:08.217: INFO/DEBUG(2894):     beb28d54  800368d0  /system/lib/libdvm.so

【问题讨论】:

我认为这意味着一些本机代码已经崩溃。调试它并不容易,需要额外的工具,另见this post 或this post 很难从这些崩溃消息中找到问题。也许一些示例代码会有所帮助 【参考方案1】:

THelper 是对的,您在问题中粘贴的堆栈跟踪可以通过 python 脚本转换为包含文件名和行号的更友好的格式:

http://code.google.com/p/android-ndk-stacktrace-analyzer/

我在做 NDK 工作时使用它,它为我节省了很多时间。希望对您有所帮助。

【讨论】:

以上是关于消费者关闭输入通道或发生错误的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQ:查找由于消费者异常而导致通道关闭的原因

Kotlin 协程Channel 通道 ④ ( Channel 通道的热数据流属性 | Channel 通道关闭过程 | Channel 通道关闭代码示例 )

发生错误时如何暂停或减少 Camel Hazelcast SEDA 消费者的吞吐量

Django 通道 JsonWebsocketConsumer self.send_json() 错误

Spring AMQP RPC使用者如何确定发布者通道是不是已关闭

9 异常处理 操作系统 进程线程 队列+生产消费者模型 进程同步 回调函数