加速(使用HAXM)的安卓Mac模拟器会冻结

6
情况:我在Mac OS X上使用android x86加速模拟器。它正常启动(并显示“HAX正在工作,模拟器以快速虚拟模式运行”行),我可以运行程序。在启动程序后,模拟器会运行一段时间然后冻结,因此我无法与之交互。
例如:如果我调用adb shell ls -l /sdcard/(或许多其他adb命令),控制台中没有任何内容打印出来,我必须按下control+C才能返回控制。
重新启动模拟器后,问题就消失了,过一段时间后又会出现。
在未加速的模拟器上运行正确。只有在启用HAXM时才会出错。
我已经尝试过:
  • 重新安装android SDK
  • 创建具有不同属性的模拟器
  • 在另一台mac机器上运行
  • 重新启动模拟器/计算机
  • 启用64位内核和扩展(之前被禁用)
我需要使模拟器始终正常工作(而不仅仅是前N分钟)。
这不是this question的重复,因为:
  1. Mac OS X 版本低于 10.9,我不能使用 Intel 提供的热补丁。
  2. 这里没有观察到崩溃。
  3. 计算机不会冻结(但模拟器停止工作)。
  4. 冻结发生在模拟器工作一段时间后(长达 30 分钟)。

可能与 这个问题 相关,但是:

  1. 无法分析是否为同一个问题。
  2. 那里没有有用的答案。

系统信息:

型号标识符:iMac10,1

内存:8 GB

系统版本:Mac OS X 10.6.8(10K549)

内核版本:Darwin 10.8.0

HAXM 发行版 1.0.6

它符合 Intel 的要求

支持的操作系统:

Mac OS X* 10.6 Snow Leopard 和 10.7 Lion (32/64位)

进行安装设置时,我按照developer.android的指示进行。在 HAXM 安装期间分配了 2048 Mb,并创建了具有 512 Mb RAM 的模拟器。

与此同时,dmesg 中出现了一些消息。历史记录如下:

1) 启动模拟器后(它可以正常工作)

Kext com.intel.kext.intelhaxm not found for unload request.
13

  possible map ffffffffffffffff cpu_online_map 3
haxm_error: fc_msr haxm_error: fc_msr 5
5
haxm_error: vt_enablhaxm_error: vt_enable e 1
haxm_error: nx_enable 1
haxm_error: nx_enable 2048
2048
haxm_error: ---- HAXM release 1.0.6 --------
haxm_error: This log collects runnging status of HAXM driver.

haxm_error: set memlimit 0x80000000

2)一段时间过去后(它仍然有效!)

23

 possible map ffffffffffffffff cpu_online_map 3
haxm_error: fc_msr h5
axm_error: fc_msr h5
ahaxm_error: vt_enable xm_error: vt_enable 1
1
haxm_error: nx_haxm_error: nx_enable ena2048
ble 2048
haxm_error: ---- HAXM release 1.0.6 --------
haxm_error: This log collects runnging status of HAXM driver.

.......hax_vm_create_ui 0
cvcpu 0x1d803000 vmid 0 vcpu_id 0
minor id 1000before the crate node
setup hax tunnel request for already setup one
haxm_error: hax_vm_alloc_ram: size 0x20000000
haxm_error: !VM_STATE_FLAGS_MEM_ALLOC
haxm_error: Memory allocation, va:123787000, size:20000000
haxm_error: !VM_STATE_FLAGS_MEM_ALLOC: spare_ram 0x5800000
haxm_error: hax_vm_alloc_ram: size 0x20000
haxm_error: spare alloc: mem_limit 0x0, size 0x20000, spare_ram 0x5800000
haxm_error: VM_STATE_FLAGS_MEM_ALLOC: spare_ram 0x5800000
haxm_error: hax_vm_alloc_ram: size 0x20000
haxm_error: spare alloc: mem_limit 0x0, size 0x20000, spare_ram 0x5800000
haxm_error: VM_STATE_FLAGS_MEM_ALLOC: spare_ram 0x5800000
haxm_error: 
...........hax_teardown_vm
.......hax_vm_create_ui 0
cvcpu 0x1d585800 vmid 0 vcpu_id 0
minor id 1000before the crate node
setup hax tunnel request for already setup one
haxm_error: hax_vm_alloc_ram: size 0x20000000
haxm_error: !VM_STATE_FLAGS_MEM_ALLOC
haxm_error: Memory allocation, va:123637000, size:20000000
haxm_error: !VM_STATE_FLAGS_MEM_ALLOC: spare_ram 0x5800000
haxm_error: hax_vm_alloc_ram: size 0x20000
haxm_error: spare alloc: mem_limit 0x0, size 0x20000, spare_ram 0x5800000
haxm_error: VM_STATE_FLAGS_MEM_ALLOC: spare_ram 0x5800000
haxm_error: hax_vm_alloc_ram: size 0x20000
haxm_error: spare alloc: mem_limit 0x0, size 0x20000, spare_ram 0x5800000
haxm_error: VM_STATE_FLAGS_MEM_ALLOC: spare_ram 0x5800000
haxm_error: 
...........hax_teardown_vm
.......hax_vm_create_ui 0
cvcpu 0x1d7a8800 vmid 0 vcpu_id 0
minor id 1000before the crate node
setup hax tunnel request for already setup one
haxm_error: hax_vm_alloc_ram: size 0x20000000
haxm_error: !VM_STATE_FLAGS_MEM_ALLOC
haxm_error: Memory allocation, va:123637000, size:20000000
haxm_error: !VM_STATE_FLAGS_MEM_ALLOC: spare_ram 0x5800000
haxm_error: hax_vm_alloc_ram: size 0x20000
haxm_error: spare alloc: mem_limit 0x0, size 0x20000, spare_ram 0x5800000
haxm_error: VM_STATE_FLAGS_MEM_ALLOC: spare_ram 0x5800000
haxm_error: hax_vm_alloc_ram: size 0x20000
haxm_error: spare alloc: mem_limit 0x0, size 0x20000, spare_ram 0x5800000
haxm_error: VM_STATE_FLAGS_MEM_ALLOC: spare_ram 0x5800000

3) 模拟器挂起后

.......hax_vm_create_ui 0
cvcpu 0xf5e5000 vmid 0 vcpu_id 0
minor id 1000before the crate node
setup hax tunnel request for already setup one
haxm_error: hax_vm_alloc_ram: size 0x20000000
haxm_error: !VM_STATE_FLAGS_MEM_ALLOC
haxm_error: Memory allocation, va:123641000, size:20000000
haxm_error: !VM_STATE_FLAGS_MEM_ALLOC: spare_ram 0x5800000
haxm_error: hax_vm_alloc_ram: size 0x20000
haxm_error: spare alloc: mem_limit 0x0, size 0x20000, spare_ram 0x5800000
haxm_error: VM_STATE_FLAGS_MEM_ALLOC: spare_ram 0x5800000
haxm_error: hax_vm_alloc_ram: size 0x20000
haxm_error: spare alloc: mem_limit 0x0, size 0x20000, spare_ram 0x5800000
haxm_error: VM_STATE_FLAGS_MEM_ALLOC: spare_ram 0x5800000

请原谅我提供这些类似的日志,但我希望它们可以帮助诊断问题。我没有发现其他与冻结相关的输出。
我在这里做错了吗?我能以某种方式修复或解决这些冻结吗?
附言:
$ top 
PID    COMMAND      %CPU TIME     #TH  #WQ  #POR #MREG RPRVT  RSHRD  RSIZE  VPRVT  VSIZE  PGRP  PPID  STATE    UID  FAULTS    COW     MSGSENT    MSGRECV    SYSBSD     SYSMACH   CSW        PAGEINS
35308  emulator64-x 99.9 93:35.44 2/1  1    67   114   13M    18M-   179M   297M   3459M  35303 35303 running  503  180922    477     134488     1390       604431027+ 1732      83769+     7
3个回答

1

不确定您是否仍然遇到此问题,但您使用的是较旧版本的Intel HAXM。当前版本为:HAX 1.0.8 Download

我看到了您的帖子并不断崩溃。

在Mac OSX 10.9上跟踪/var/log/system.log时,我会看到您上面的消息。当我尝试重新安装HAX时,我会看到以下内容:

Aug 19 12:03:55 3c15c2cf84fe kernel[0]: haxm_error: -------- HAXM release 1.0.7 --------
Aug 19 12:03:55 3c15c2cf84fe kernel[0]: haxm_error: This log collects runnging status of HAXM driver.
Aug 19 12:03:55 3c15c2cf84fe kernel[0]: haxm_error: set memlimit 0x80000000

我能够通过删除使用Android Studio创建的所有AVD(Android虚拟设备)来解决我的问题。从AVD(Android虚拟设备)中,只需“删除”您虚拟设备中的所有模拟器。然后重新开始。
如果您遇到以下错误:

enter image description here

请执行以下步骤:
  1. 打开终端窗口。
  2. 键入:~/.android/avd
  3. 然后运行此命令删除所有内容:rm -rf .
  4. 注意:此命令将从你运行它的路径中删除所有内容。最好使用pwd命令,查看将被删除的目录。
  5. 再次启动AVD,重新创建所需的设备。
我希望这能帮助到某些人。

到目前为止,对我来说还可以。不知道 AVD CPU 是否与此有关? - Tom Redman

0

我想要检查一下机器的RAM是否存在故障。如果内存有问题,可能会导致数据丢失,模拟器也不知道如何应对这种情况。CNET在最近的一篇文章中介绍了如何在Mac上测试内存http://www.cnet.com/uk/how-to/how-to-test-the-ram-on-your-mac/

进行完整的测试需要很长时间,但如果您想找到问题所在,这是必须排除的。


0
请确保在安装模拟器时分配的内存始终大于创建模拟器实例时指定的内存。

谢谢回答!我在安装HAXM时分配了2048 Mb,并使用512 Mb RAM的模拟器。对我来说看起来还不错。 - Sergey Fedorov

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