调用adb start-server时,Linux系统会冻结

时间:2015-03-20 17:55:54

标签: linux adb fedora

命令adb start-server完全冻结了我的系统,需要硬重置才能恢复。

这是 Fedora 21(x86_64)的全新安装。当系统冻结时,它立即生效。桌面停止响应,计算机不再接受ping请求,系统消息中没有记录任何内容。

无论是以root身份还是普通用户身份运行adb,都会发生这种情况。当我运行命令时,它说:daemon not running. starting it now on port 5037 并立即冻结。守护进程从未启动过。

我安装了strace并运行:

# strace adb start-server

最后几行输出是:

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(5037), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 ECONNREFUSED (Connection refused)
close(3)                                = 0
fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf75ef000
write(1, "* daemon not running. starting i"..., 53* daemon not running. starting it now on port 5037 *
) = 53
pipe([3, 4])                            = 0
readlink("/proc/1880/exe", "/home/jon/Android/Sdk/platform-t"..., 4095) = 40
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xf727c768) = 1881
close(4)                                = 0
read(3, 

无论我是否插入USB设备,都会发生此冻结。除了这个问题,计算机似乎工作正常。

adb正在初始化的计算机上是否有某些硬件可能导致此冻结?我很感激有关如何排除故障的指示。

3 个答案:

答案 0 :(得分:4)

这不是一个真正的解决方案,因为冻结很难调试,而是一种解决方法。我怀疑这个问题与内核版本有关。

我降级了已安装的内核,adb正常工作,没有任何冻结。 转到存储库并手动下载这些包:

 - kernel-3.17.4-301.fc21.x86_64.rpm
 - kernel-debug-devel-3.17.4-301.fc21.x86_64.rpm  
 - kernel-modules-extra-3.17.4-301.fc21.x86_64.rpm
 - kernel-core-3.17.4-301.fc21.x86_64.rpm  
 - kernel-modules-3.17.4-301.fc21.x86_64.rpm

使用命令rpm -ivh --force kernel-*重启安装它 计算机并在grub显示时选择新内核。

答案 1 :(得分:3)

我和Acer Aspire E17有同样的问题,我没有找到确切的组件,但是在使用UEFI bios时效果很好,所以问题在于他们不会过多地制作和制作测试Legacy bios。

您可以通过一些努力在UEFI模式下安装Fedora。你不会修复BIOS失败问题。

Install Fedora UEFI

答案 2 :(得分:1)

编辑:

我的联想E40笔记本电脑上仍然存在Arch Linux x86_64的问题。当adb启动时,它会立即冻结机器。

从BIOS更改为UEFI启动并没有解决问题。

降级到内核版本3.16 LTS解决了它。 现在adb正常工作。现在它在BIOS和UEFI下工作,所以它与这些无关。

我还尝试了4.4 LTS内核,后来的4.x内核,两个不同的5.0.13内核,以及所有这些内核的adb冻结。

当我以前尝试过多次重启的解决方案直到它工作时,它是在早期的4.x内核之下。我不得不重启大约32-64次,直到它工作。对于后来的4.x和5.x内核,此解决方案停止工作。我尝试在这些后来的内核上重启机器大约128次,但没有成功。

现在adb在3.16 LTS内核下工作正常,我还没有尝试过其他3.x内核。

(这个内核似乎也能正确处理我的笔记本电脑的ACPI功能,现在软关机和软复位工作正常。这些在4.x和5.x下无效。)

原始答案:

我也有这个问题(但在Arch Linux x86_64上)。我无法解决它。

我注意到adb有时会在没有冻结的情况下工作,具体取决于重启。 adb工作一次后,它将一直有效,直到下次重启。

因此,如果重新启动几次直到它正常工作,就可以正常使用它。