【问题标题】:Accelerated (with HAXM) android mac emulator freezes加速(使用 HAXM)android mac 模拟器冻结
【发布时间】:2014-05-22 22:50:30
【问题描述】:

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

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

模拟器重启后问题消失,一段时间后再次出现。

适用于非加速模拟器。仅在打开 HAXM 时才会出现问题。

我试过了

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

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

这不是 this question 的重复,因为:

  1. Mac OS X 版本低于 10.9,我无法使用 Intel 提供的修补程序
  2. 此处未观察到崩溃
  3. 计算机不死机(但模拟器停止工作)
  4. 在模拟器运行一段时间(最长 30 分钟)后发生冻结

可能与this question有关,但是

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

系统信息:

型号标识符:iMac10,1

内存:8 GB

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

内核版本:Darwin 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

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

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

附言

$ 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

【问题讨论】:

    标签: android macos android-emulator haxm


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答!我在 HAXM 安装期间分配了 2048 Mb,并使用了 512 Mb RAM 的模拟器。我觉得没问题。
    【解决方案2】:

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

    做扩展测试需要很长时间,但如果你想在这里找到问题,确实需要排除。

    【讨论】:

      【解决方案3】:

      不确定您是否仍然遇到此问题,但您使用的是旧版本的英特尔 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 虚拟设备)只需“删除”虚拟设备中的所有模拟器。然后重新开始。

      如果您收到以下错误:

      执行以下操作:

      1. 打开一个终端窗口。
      2. 类型:~/.android/avd
      3. 从这里通过以下命令删除所有内容:rm -rf .
      4. 注意:您将删除运行它的路径中的所有内容。所有方法都很好:pwd
      5. 再次启动 AVD 并重新创建所需的设备。

      我希望对某人有所帮助。

      【讨论】:

      • 目前为止为我工作。好奇 AVD CPU 是否与它有关?
      猜你喜欢
      • 2014-12-17
      • 1970-01-01
      • 2012-12-03
      • 2011-12-20
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      相关资源
      最近更新 更多