我正在用三部手机测试我的应用程序(运行 andorid 版本:4.1.2 - 4.0.4 - 2.3.6)。他们通过蓝牙毫无问题地交换数据,直到这个错误出现在 logcat 中并且手机完全关闭并重新启动。在此错误出现之前,一切正常。
这是崩溃的手机上的 logcat 输出(运行版本 4.1.2):
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)
我不知道我的应用程序是如何触发的,这个错误输出中甚至没有一行指向我的一个类。
同样在我的带有 android 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)
在正确工作 3 小时后,我的 S3 再次重置,并出现与三星 S plus (v 4.1.2) 相同的错误,这是日志:
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]