Android Studio 在 Mac OS El Capitan 上随机崩溃,当 ADB 初始化时
Android Studio crashes on Mac OS El Capitan randomly, when ADB is initialized
我正在使用最新版本的 Android Studio (2.0.0-beta5),我观察到非常奇怪的行为。如果我从 Android Studio 中打开 ADB(无论出于什么目的 - 查看日志、调试或安装应用程序)Android Studio 反复崩溃。
到目前为止,我只找到了一个解决该问题的方法,这非常令人不满意:使 AS 无法本地化 adb(我通过将 adb 从平台工具移动到任何其他本地化来实现这一点。
我已经试过了:
1. 更新 java(我有 1.8 版。0_74-b02)但也发生在早期版本上(至少 u71)
2. 降级 Android Studio(到最新的稳定版本 - 1.5.0)
3. 运行 不同的设备连接到 adb。到目前为止还没有连接任何设备。
这是每次崩溃前发生的日志(来自 ~/Library/Logs/AndroidStudioXX.X/
2016-02-18 16:02:07,374 [1025648] INFO - #com.android.ddmlib - Opening a debugger listener at port 8602 for client with pid 1789
2016-02-18 16:02:07,374 [1025648] WARN - #com.android.ddmlib - Broken pipe
java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:29)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:69)
at sun.nio.ch.IOUtil.write(IOUtil.java:40)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:336)
at com.android.ddmlib.JdwpPacket.write(JdwpPacket.java:179)
at com.android.ddmlib.Client.send(Client.java:654)
at com.android.ddmlib.jdwp.JdwpAgent.send(JdwpAgent.java:92)
at com.android.ddmlib.HandleHeap.sendREAQ(HandleHeap.java:349)
at com.android.ddmlib.Client.requestAllocationStatus(Client.java:517)
at com.android.ddmlib.DeviceMonitor.createClient(DeviceMonitor.java:573)
at com.android.ddmlib.DeviceMonitor.openClient(DeviceMonitor.java:545)
at com.android.ddmlib.DeviceMonitor.processIncomingJdwpData(DeviceMonitor.java:507)
at com.android.ddmlib.DeviceMonitor.deviceClientMonitorLoop(DeviceMonitor.java:403)
at com.android.ddmlib.DeviceMonitor.access0(DeviceMonitor.java:65)
at com.android.ddmlib.DeviceMonitor.run(DeviceMonitor.java:326)
这是我发现它可能与 adb 连接的地方,因此决定禁用它。
感谢任何帮助,因为这让我的工作变得非常困难。
编辑:
全新安装最新的稳定版(1.5.1) 后仍然出现错误。不同的是,我看不到任何日志,似乎其中有一个黑洞,在崩溃前几分钟开始。粘贴崩溃后直接显示的MacOs问题报告。
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000020
Exception Note: EXC_CORPSE_NOTIFY
VM Regions Near 0x20:
-->
__TEXT 0000000100000000-000000010000b000 [ 44K] r-x/rwx SM=COW /Applications/Android Studio.app/Contents/MacOS/studio
Application Specific Information:
Java information:
Exception type: Bus Error (0xa) at pc=7fffa174f103
Java VM: Java HotSpot(TM) 64-Bit Server VM (20.65-b04-468 mixed mode macosx-amd64)
Current thread (1070d5800): JavaThread "AWT-AppKit" daemon [_thread_in_native, id=2116415488, stack(7fff5f400000,7fff5fc00000)]
Stack: [7fff5f400000,7fff5fc00000]
我还尝试将自己限制在一个 AS 实例上并禁用所有其他可能使用 adb 的应用程序(如 Vysor)。没有结果...
看来我终于找到了问题的根本原因...它与 adb、java 版本或 AS 版本无关。它是在多个屏幕上开发的结果。 google 网站上已经对此进行了讨论..
Google code discussion on this issue
为此还为 IntelliJ 打开了一个 issue。
所以解决办法就是停止在外屏上开发。
编辑:更新到 10.11.5 后一切正常。
我正在使用最新版本的 Android Studio (2.0.0-beta5),我观察到非常奇怪的行为。如果我从 Android Studio 中打开 ADB(无论出于什么目的 - 查看日志、调试或安装应用程序)Android Studio 反复崩溃。
到目前为止,我只找到了一个解决该问题的方法,这非常令人不满意:使 AS 无法本地化 adb(我通过将 adb 从平台工具移动到任何其他本地化来实现这一点。
我已经试过了:
1. 更新 java(我有 1.8 版。0_74-b02)但也发生在早期版本上(至少 u71)
2. 降级 Android Studio(到最新的稳定版本 - 1.5.0)
3. 运行 不同的设备连接到 adb。到目前为止还没有连接任何设备。
这是每次崩溃前发生的日志(来自 ~/Library/Logs/AndroidStudioXX.X/
2016-02-18 16:02:07,374 [1025648] INFO - #com.android.ddmlib - Opening a debugger listener at port 8602 for client with pid 1789
2016-02-18 16:02:07,374 [1025648] WARN - #com.android.ddmlib - Broken pipe
java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:29)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:69)
at sun.nio.ch.IOUtil.write(IOUtil.java:40)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:336)
at com.android.ddmlib.JdwpPacket.write(JdwpPacket.java:179)
at com.android.ddmlib.Client.send(Client.java:654)
at com.android.ddmlib.jdwp.JdwpAgent.send(JdwpAgent.java:92)
at com.android.ddmlib.HandleHeap.sendREAQ(HandleHeap.java:349)
at com.android.ddmlib.Client.requestAllocationStatus(Client.java:517)
at com.android.ddmlib.DeviceMonitor.createClient(DeviceMonitor.java:573)
at com.android.ddmlib.DeviceMonitor.openClient(DeviceMonitor.java:545)
at com.android.ddmlib.DeviceMonitor.processIncomingJdwpData(DeviceMonitor.java:507)
at com.android.ddmlib.DeviceMonitor.deviceClientMonitorLoop(DeviceMonitor.java:403)
at com.android.ddmlib.DeviceMonitor.access0(DeviceMonitor.java:65)
at com.android.ddmlib.DeviceMonitor.run(DeviceMonitor.java:326)
这是我发现它可能与 adb 连接的地方,因此决定禁用它。
感谢任何帮助,因为这让我的工作变得非常困难。
编辑:
全新安装最新的稳定版(1.5.1) 后仍然出现错误。不同的是,我看不到任何日志,似乎其中有一个黑洞,在崩溃前几分钟开始。粘贴崩溃后直接显示的MacOs问题报告。
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000020
Exception Note: EXC_CORPSE_NOTIFY
VM Regions Near 0x20:
-->
__TEXT 0000000100000000-000000010000b000 [ 44K] r-x/rwx SM=COW /Applications/Android Studio.app/Contents/MacOS/studio
Application Specific Information:
Java information:
Exception type: Bus Error (0xa) at pc=7fffa174f103
Java VM: Java HotSpot(TM) 64-Bit Server VM (20.65-b04-468 mixed mode macosx-amd64)
Current thread (1070d5800): JavaThread "AWT-AppKit" daemon [_thread_in_native, id=2116415488, stack(7fff5f400000,7fff5fc00000)]
Stack: [7fff5f400000,7fff5fc00000]
我还尝试将自己限制在一个 AS 实例上并禁用所有其他可能使用 adb 的应用程序(如 Vysor)。没有结果...
看来我终于找到了问题的根本原因...它与 adb、java 版本或 AS 版本无关。它是在多个屏幕上开发的结果。 google 网站上已经对此进行了讨论..
Google code discussion on this issue
为此还为 IntelliJ 打开了一个 issue。
所以解决办法就是停止在外屏上开发。
编辑:更新到 10.11.5 后一切正常。