加速(使用HAXM)android mac模拟器冻结

时间:2014-04-09 15:42:11

标签: android macos android-emulator haxm

情况:我在Mac OS X上有android x86加速模拟器。它正常启动(并显示HAX is working and emulator runs in fast virt mode行),我可以运行程序。程序启动后,模拟器会工作一段时间并冻结,所以我无法与之交互。

示例:如果我调用adb shell ls -l /sdcard/(或许多其他adb命令),控制台中不会打印任何内容,我必须按control + C才能返回控件。

模拟器重启问题消失后,再次发生。

适用于非加速模拟器。仅在启用HAXM时才能正常工作。

我试过

  • 重新安装Android SDK
  • 创建具有不同属性的模拟器
  • 在另一台mac机器上运行
  • 重新启动模拟器/计算机
  • 启用64位内核和扩展(已禁用)

我需要让模拟器始终工作(不仅仅是前N分钟)。

这不是this question的副本,因为:

  1. Mac OS X版本低于10.9,我无法使用英特尔提供的修补程序
  2. 此处未发现崩溃
  3. 计算机不会冻结(但模拟器停止工作)
  4. 仿真器工作一段时间后(最长30分钟)冻结
  5. 可能与this question有关,但

    1. 无法分析是否是同一个问题
    2. 那里没有有用的答案
    3. 系统信息:

        

      模型标识符:iMac10,1

           

      内存:8 GB

           

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

           

      内核版本:达尔文10.8.0

           

      HAXM版本1.0.6

      符合Intel requirements

        

      支持的操作系统:

           

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

      进行设置我跟着instructions from 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
      

      请原谅我所有这些类似的日志,但我希望他们可以帮助诊断。我没有发现其他输出面临冻结。

      我在这里做错了吗?我可以以某种方式修复/解决这些冻结吗?

      P.S。

      $ 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 个答案:

答案 0 :(得分:1)

不确定您是否仍然遇到此问题,但不是您在旧版本的英特尔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,我能够解决我的问题。来自AVD(Android虚拟设备)只是"删除"虚拟设备中的所有模拟器。然后重新开始。

如果您收到以下错误:

enter image description here

执行以下操作:

  1. 打开一个终端窗口。
  2. 类型:〜/ .android / avd
  3. 从此处按此命令删除所有内容:rm -rf
  4. 注意:您将删除运行它的路径中的所有内容。所有好的方法:pwd< - 打印工作目录,看看你要删除的内容。
  5. 再次启动AVD并重新创建所需的设备。
  6. 我希望能帮助别人。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我想检查一下机器上的RAM是否有故障。如果内存有问题,则可能意味着数据丢失且模拟器不知道如何应对这种情况。 CNET在最近的文章http://www.cnet.com/uk/how-to/how-to-test-the-ram-on-your-mac/

中介绍了如何在Mac上测试内存

进行扩展测试需要很长时间,但如果您想在此处找到问题,则需要排除。