java.lang.RuntimeException: 无法打开输入通道对。

20

我正在使用三部手机(分别运行安卓版本:4.1.2、4.0.4、2.3.6)对我的应用程序进行测试。它们可以通过蓝牙无问题地交换数据,直到这个错误出现在日志中并导致手机完全关闭并重新启动。在此错误出现之前,一切都工作得很完美。

以下是崩溃的手机(运行版本为4.1.2)的logcat输出:

05-29 12:11:36.887: E/InputTransport(2947): channel '418655a8 Toast' ~ Could not create socket pair.  errno=24
05-29 12:11:36.897: E/JavaBinder(2947): *** Uncaught remote exception!  (Exceptions are not yet supported across processes.)
05-29 12:11:36.897: E/JavaBinder(2947): java.lang.RuntimeException: Could not open input channel pair.  status=-24
05-29 12:11:36.897: E/JavaBinder(2947):     at android.view.InputChannel.nativeOpenInputChannelPair(Native Method)
05-29 12:11:36.897: E/JavaBinder(2947):     at android.view.InputChannel.openInputChannelPair(InputChannel.java:91)
05-29 12:11:36.897: E/JavaBinder(2947):     at com.android.server.wm.WindowManagerService.addWindow(WindowManagerService.java:2295)
05-29 12:11:36.897: E/JavaBinder(2947):     at com.android.server.wm.Session.add(Session.java:139)
05-29 12:11:36.897: E/JavaBinder(2947):     at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:70)
05-29 12:11:36.897: E/JavaBinder(2947):     at com.android.server.wm.Session.onTransact(Session.java:111)
05-29 12:11:36.897: E/JavaBinder(2947):     at android.os.Binder.execTransact(Binder.java:367)
05-29 12:11:36.897: E/JavaBinder(2947):     at dalvik.system.NativeStart.run(Native Method)
05-29 12:11:36.897: E/WindowManager(2947): Window Session Crash
05-29 12:11:36.897: E/WindowManager(2947): java.lang.RuntimeException: Could not open input channel pair.  status=-24
05-29 12:11:36.897: E/WindowManager(2947):  at android.view.InputChannel.nativeOpenInputChannelPair(Native Method)
05-29 12:11:36.897: E/WindowManager(2947):  at android.view.InputChannel.openInputChannelPair(InputChannel.java:91)
05-29 12:11:36.897: E/WindowManager(2947):  at com.android.server.wm.WindowManagerService.addWindow(WindowManagerService.java:2295)
05-29 12:11:36.897: E/WindowManager(2947):  at com.android.server.wm.Session.add(Session.java:139)
05-29 12:11:36.897: E/WindowManager(2947):  at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:70)
05-29 12:11:36.897: E/WindowManager(2947):  at com.android.server.wm.Session.onTransact(Session.java:111)
05-29 12:11:36.897: E/WindowManager(2947):  at android.os.Binder.execTransact(Binder.java:367)
05-29 12:11:36.897: E/WindowManager(2947):  at dalvik.system.NativeStart.run(Native Method)
05-29 12:11:36.907: D/AndroidRuntime(8234): Shutting down VM
05-29 12:11:36.907: W/dalvikvm(8234): threadid=1: thread exiting with uncaught exception (group=0x40abc300)
05-29 12:11:36.927: E/AndroidRuntime(8234): FATAL EXCEPTION: main
05-29 12:11:36.927: E/AndroidRuntime(8234): java.lang.RuntimeException: InputChannel is not initialized.
05-29 12:11:36.927: E/AndroidRuntime(8234):     at android.view.InputEventReceiver.nativeInit(Native Method)
05-29 12:11:36.927: E/AndroidRuntime(8234):     at android.view.InputEventReceiver.<init>(InputEventReceiver.java:68)
05-29 12:11:36.927: E/AndroidRuntime(8234):     at android.view.ViewRootImpl$WindowInputEventReceiver.<init>(ViewRootImpl.java:4221)
05-29 12:11:36.927: E/AndroidRuntime(8234):     at android.view.ViewRootImpl.setView(ViewRootImpl.java:626)
05-29 12:11:36.927: E/AndroidRuntime(8234):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:326)
05-29 12:11:36.927: E/AndroidRuntime(8234):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:220)
05-29 12:11:36.927: E/AndroidRuntime(8234):     at android.widget.Toast$TN.handleShow(Toast.java:391)
05-29 12:11:36.927: E/AndroidRuntime(8234):     at android.widget.Toast$TN$1.run(Toast.java:309)
05-29 12:11:36.927: E/AndroidRuntime(8234):     at android.os.Handler.handleCallback(Handler.java:615)
05-29 12:11:36.927: E/AndroidRuntime(8234):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-29 12:11:36.927: E/AndroidRuntime(8234):     at android.os.Looper.loop(Looper.java:137)
05-29 12:11:36.927: E/AndroidRuntime(8234):     at android.app.ActivityThread.main(ActivityThread.java:4931)
05-29 12:11:36.927: E/AndroidRuntime(8234):     at java.lang.reflect.Method.invokeNative(Native Method)
05-29 12:11:36.927: E/AndroidRuntime(8234):     at java.lang.reflect.Method.invoke(Method.java:511)
05-29 12:11:36.927: E/AndroidRuntime(8234):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
05-29 12:11:36.927: E/AndroidRuntime(8234):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
05-29 12:11:36.927: E/AndroidRuntime(8234):     at dalvik.system.NativeStart.main(Native Method)
05-29 12:11:36.947: W/ActivityManager(2947):   Force finishing activity com.vittorio/.tabContainer.FloatyTab
05-29 12:11:36.967: E/IMemory(2947): binder=0x23b2708 transaction failed fd=-2147483647, size=0, err=-2147483646 (Unknown error: 2147483646)
05-29 12:11:36.967: E/IMemory(2947): cannot dup fd=-2147483647, size=0, err=-2147483646 (Bad file number)
05-29 12:11:36.967: E/IMemory(2947): cannot map BpMemoryHeap (binder=0x23b2708), size=0, fd=-1 (Bad file number)

我不知道我的应用程序如何引发这个错误,甚至在这个错误输出中没有任何一行指向我的类。

此外,在我的安卓v4.1.1的S3手机上,我在正常使用80分钟后遇到了这个错误并导致手机重新启动:

05-29 16:13:47.455: E/InputChannel-JNI(7490): Error 9 dup channel fd -2147483647.
05-29 16:13:47.455: D/AndroidRuntime(7490): Shutting down VM
05-29 16:13:47.455: W/dalvikvm(7490): threadid=1: thread exiting with uncaught exception (group=0x4101a2a0)
05-29 16:13:47.465: E/AndroidRuntime(7490): FATAL EXCEPTION: main
05-29 16:13:47.465: E/AndroidRuntime(7490): java.lang.RuntimeException: Could not read input channel file descriptors from parcel.
05-29 16:13:47.465: E/AndroidRuntime(7490):     at android.view.InputChannel.nativeReadFromParcel(Native Method)
05-29 16:13:47.465: E/AndroidRuntime(7490):     at android.view.InputChannel.readFromParcel(InputChannel.java:135)
05-29 16:13:47.465: E/AndroidRuntime(7490):     at android.view.IWindowSession$Stub$Proxy.add(IWindowSession.java:523)
05-29 16:13:47.465: E/AndroidRuntime(7490):     at android.view.ViewRootImpl.setView(ViewRootImpl.java:663)
05-29 16:13:47.465: E/AndroidRuntime(7490):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:345)
05-29 16:13:47.465: E/AndroidRuntime(7490):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:220)
05-29 16:13:47.465: E/AndroidRuntime(7490):     at android.widget.Toast$TN.handleShow(Toast.java:431)
05-29 16:13:47.465: E/AndroidRuntime(7490):     at android.widget.Toast$TN$1.run(Toast.java:348)
05-29 16:13:47.465: E/AndroidRuntime(7490):     at android.os.Handler.handleCallback(Handler.java:615)
05-29 16:13:47.465: E/AndroidRuntime(7490):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-29 16:13:47.465: E/AndroidRuntime(7490):     at android.os.Looper.loop(Looper.java:137)
05-29 16:13:47.465: E/AndroidRuntime(7490):     at android.app.ActivityThread.main(ActivityThread.java:4898)
05-29 16:13:47.465: E/AndroidRuntime(7490):     at java.lang.reflect.Method.invokeNative(Native Method)
05-29 16:13:47.465: E/AndroidRuntime(7490):     at java.lang.reflect.Method.invoke(Method.java:511)
05-29 16:13:47.465: E/AndroidRuntime(7490):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
05-29 16:13:47.465: E/AndroidRuntime(7490):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
05-29 16:13:47.465: E/AndroidRuntime(7490):     at dalvik.system.NativeStart.main(Native Method)

我的S3再次出现了相同的错误,与我的三星S plus (v 4.1.2)一样,在正常工作了3个小时后进行了重置。以下是日志记录:

05-30 14:11:59.455: E/InputTransport(2262): channel '422b4910 Toast' ~ Could not create socket pair.  errno=24
05-30 14:11:59.465: E/JavaBinder(2262): *** Uncaught remote exception!  (Exceptions are not yet supported across processes.)
05-30 14:11:59.465: E/JavaBinder(2262): java.lang.RuntimeException: Could not open input channel pair.  status=-24
05-30 14:11:59.465: E/JavaBinder(2262):     at android.view.InputChannel.nativeOpenInputChannelPair(Native Method)
05-30 14:11:59.465: E/JavaBinder(2262):     at android.view.InputChannel.openInputChannelPair(InputChannel.java:91)
05-30 14:11:59.465: E/JavaBinder(2262):     at com.android.server.wm.WindowManagerService.addWindow(WindowManagerService.java:2931)
05-30 14:11:59.465: E/JavaBinder(2262):     at com.android.server.wm.Session.add(Session.java:139)
05-30 14:11:59.465: E/JavaBinder(2262):     at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:70)
05-30 14:11:59.465: E/JavaBinder(2262):     at com.android.server.wm.Session.onTransact(Session.java:111)
05-30 14:11:59.465: E/JavaBinder(2262):     at android.os.Binder.execTransact(Binder.java:367)
05-30 14:11:59.465: E/JavaBinder(2262):     at dalvik.system.NativeStart.run(Native Method)
05-30 14:11:59.465: E/WindowManager(2262): Window Session Crash
05-30 14:11:59.465: E/WindowManager(2262): java.lang.RuntimeException: Could not open input channel pair.  status=-24
05-30 14:11:59.465: E/WindowManager(2262):  at android.view.InputChannel.nativeOpenInputChannelPair(Native Method)
05-30 14:11:59.465: E/WindowManager(2262):  at android.view.InputChannel.openInputChannelPair(InputChannel.java:91)
05-30 14:11:59.465: E/WindowManager(2262):  at com.android.server.wm.WindowManagerService.addWindow(WindowManagerService.java:2931)
05-30 14:11:59.465: E/WindowManager(2262):  at com.android.server.wm.Session.add(Session.java:139)
05-30 14:11:59.465: E/WindowManager(2262):  at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:70)
05-30 14:11:59.465: E/WindowManager(2262):  at com.android.server.wm.Session.onTransact(Session.java:111)
05-30 14:11:59.465: E/WindowManager(2262):  at android.os.Binder.execTransact(Binder.java:367)
05-30 14:11:59.465: E/WindowManager(2262):  at dalvik.system.NativeStart.run(Native Method)
05-30 14:11:59.470: D/AndroidRuntime(13879): Shutting down VM
05-30 14:11:59.470: W/dalvikvm(13879): threadid=1: thread exiting with uncaught exception (group=0x410c92a0)
05-30 14:11:59.475: E/AndroidRuntime(13879): FATAL EXCEPTION: main
05-30 14:11:59.475: E/AndroidRuntime(13879): java.lang.RuntimeException: InputChannel is not initialized.
05-30 14:11:59.475: E/AndroidRuntime(13879):    at android.view.InputEventReceiver.nativeInit(Native Method)
05-30 14:11:59.475: E/AndroidRuntime(13879):    at android.view.InputEventReceiver.<init>(InputEventReceiver.java:68)
05-30 14:11:59.475: E/AndroidRuntime(13879):    at android.view.ViewRootImpl$WindowInputEventReceiver.<init>(ViewRootImpl.java:4477)
05-30 14:11:59.475: E/AndroidRuntime(13879):    at android.view.ViewRootImpl.setView(ViewRootImpl.java:738)
05-30 14:11:59.475: E/AndroidRuntime(13879):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:345)
05-30 14:11:59.475: E/AndroidRuntime(13879):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:220)
05-30 14:11:59.475: E/AndroidRuntime(13879):    at android.widget.Toast$TN.handleShow(Toast.java:431)
05-30 14:11:59.475: E/AndroidRuntime(13879):    at android.widget.Toast$TN$1.run(Toast.java:348)
05-30 14:11:59.475: E/AndroidRuntime(13879):    at android.os.Handler.handleCallback(Handler.java:615)
05-30 14:11:59.475: E/AndroidRuntime(13879):    at android.os.Handler.dispatchMessage(Handler.java:92)
05-30 14:11:59.475: E/AndroidRuntime(13879):    at android.os.Looper.loop(Looper.java:137)
05-30 14:11:59.475: E/AndroidRuntime(13879):    at android.app.ActivityThread.main(ActivityThread.java:4898)
05-30 14:11:59.475: E/AndroidRuntime(13879):    at java.lang.reflect.Method.invokeNative(Native Method)
05-30 14:11:59.475: E/AndroidRuntime(13879):    at java.lang.reflect.Method.invoke(Method.java:511)
05-30 14:11:59.475: E/AndroidRuntime(13879):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
05-30 14:11:59.475: E/AndroidRuntime(13879):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
05-30 14:11:59.475: E/AndroidRuntime(13879):    at dalvik.system.NativeStart.main(Native Method)
05-30 14:11:59.515: E/IMemory(2262): cannot dup fd=1023, size=765952, err=0 (Too many open files)
05-30 14:11:59.515: E/IMemory(2262): cannot map BpMemoryHeap (binder=0x5efc9c38), size=765952, fd=-1 (Bad file number)
05-30 14:11:59.515: A/libc(2262): Fatal signal 11 (SIGSEGV) at 0x000075df (code=1), thread 4933 (Binder_9)
05-30 14:11:59.515: A/libc(2262): Unable to open connection to debuggerd: Too many open files
05-30 14:11:59.685: W/Sensors(24753): sensorservice died [0x40d75010]

有关这个问题,您有什么想法吗?请分享。 - stack_ved
1
我报告了一个问题:https://code.google.com/p/android/issues/detail?id=108859 - Oleksii K.
1个回答

4

实际上这并不相同,在您提供的链接中存在以下错误:"Error 24 dup",它是EMFILE 24 / 打开文件太多。而在OP logcat中,您可以看到:"Error 9 dup channel",其中9是"坏文件号"。我遇到了与OP相同的问题,但还没有运气。 - marcinj
4
迄今为止解决这个问题的任何方案吗? - Shobhit Puri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接