I use Android Studio 3.0.1 on Ubuntu 16.04.
Yesterday, Android Studio popped up a message saying that there's an update available, and I always click those. It then notified me that it had successfully updated the emulator.
My AVD worked perfectly before, but after the update finished, now when I launch it, it shows a black screen in the emulator window for 15 seconds and then crashes with the following error message:
ERROR: detected a hanging thread 'QEMU2 main loop'. No response for 15000 ms
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
I tried the solutions suggested in all the threads describing similar emulator problems. (I verified that the emulator is still installed via the SDK Manager, I tried switching between the software and the hardware graphics settings of the AVD, I tried replacing libstdc++ with a newer version 6.0.24, I tried instead to ln -sf my /usr/lib.. libstdc++ 6.0.21 into the SDK emulator lib64/libstdc++ folder, I even downloaded Android Studio and ran a fresh installation with its own new SDK folder with freshly downloaded SDKs, I tried creating new AVDs with different architectures (arm) and different API levels (24, 27), I tried restarting ADB, and even restarting the computer. Nothing helped.
My SDK tools menu doesn't have an entry for emulator accelerator (HAXM), though my PC has an Intel CPU: I shouldn't have to change this since my AVD worked just yesterday! What broke?
What's causing the 'QEMU2 main loop' to hang, and how can I fix it?
解决方案
I found an interim workaround - make sure IPv6 is enabled.
$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6
0
If you see 1 above, edit your /etc/sysctl.conf file and comment out all the IPv6 disable directives:
# net.ipv6.conf.all.disable_ipv6 = 1
# net.ipv6.conf.default.disable_ipv6 = 1
# net.ipv6.conf.lo.disable_ipv6 = 1
Update Jan 5, '18: At least one user reports that disabling a previously enabled IPv6 has resolved the problem on his system. In that case, you may want to try to reverse the steps above if IPv6 is already enabled on your system and the emulator does not start.
I started experiencing the exact same problem after the most recent update of the Android SDK on my Ubuntu 16.04. The executable doesn't have symbols so I'm not sure how to point the original developer to the root cause, but here is the threads state:
(gdb) info threads
Id Target Id Frame
1 Thread 0x7f6d20428700 (LWP 14472) 0x00000000014e8baf in ?? ()
2 Thread 0x7f6d20c29700 (LWP 14471) syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
* 3 Thread 0x7f6d20c2ad00 (LWP 14470) 0x00007f6d258a27d1 in __GI_ppoll (fds=0x3842bf8, nfds=1, timeout=, sigmask=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:50
4 Thread 0x7f6d1d427700 (LWP 14479) pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
5 Thread 0x7f6d1649b700 (LWP 14483) pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
6 Thread 0x7f6d05fe4700 (LWP 14487) __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
7 Thread 0x7f6d16c9c700 (LWP 14482) __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
8 Thread 0x7f6d1cc26700 (LWP 14480) pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
9 Thread 0x7f6d1eda9700 (LWP 14478) 0x00007f6d258a270d in poll () at ../sysdeps/unix/syscall-template.S:84
10 Thread 0x7f6d067e5700 (LWP 14486) 0x00007f6d280107cd in connect () at ../sysdeps/unix/syscall-template.S:84
11 Thread 0x7f6d15c9a700 (LWP 14484) 0x00007f6d258a27d1 in __GI_ppoll (fds=0x7f6d10000aa0, nfds=5, timeout=, sigmask=0x0)
at ../sysdeps/unix/sysv/linux/ppoll.c:50
12 Thread 0x7f6cff7fe700 (LWP 14489) pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
13 Thread 0x7f6cfffff700 (LWP 14488) 0x00007f6d258a270d in poll () at ../sysdeps/unix/syscall-template.S:84
14 Thread 0x7f6cfeffd700 (LWP 14490) pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
15 Thread 0x7f6cfe7fc700 (LWP 14492) 0x00007f6d280107cd in connect () at ../sysdeps/unix/syscall-template.S:84
16 Thread 0x7f6cfdffb700 (LWP 14493) 0x00007f6d258a27d1 in __GI_ppoll (fds=0x7f6c78012818, nfds=3, timeout=, sigmask=0x0)
at ../sysdeps/unix/sysv/linux/ppoll.c:50
17 Thread 0x7f6c93dfe700 (LWP 14498) pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
Log output:
emulator:Android emulator version 26.0.3.0 (build_id 3965150)
emulator:Found AVD name 'Nexus_5X_API_25'
emulator:Found AVD target architecture: x86_64
emulator:argv[0]: './emulator'; program directory: '/home/sl/opt/android-sdk/tools'
emulator: Found directory: /home/sl/opt/android-sdk/system-images/android-25/google_apis/x86_64/
emulator:Probing for /home/sl/opt/android-sdk/system-images/android-25/google_apis/x86_64//kernel-ranchu: file exists
emulator:Auto-config: -engine qemu2 (based on configuration)
emulator: Found directory: /home/sl/opt/android-sdk/system-images/android-25/google_apis/x86_64/
emulator:try dir /home/sl/opt/android-sdk/tools
emulator:try dir ./
emulator:try dir ../emulator
emulator:Found target-specific 64-bit emulator binary: /home/sl/opt/android-sdk/tools/../emulator/qemu/linux-x86_64/qemu-system-x86_64
emulator:Adding library search path: '../emulator/lib64'
emulator:Adding library search path: '../emulator/lib64/gles_swiftshader'
emulator:Adding library search path: '../emulator/lib64/gles_angle'
emulator:Adding library search path: '../emulator/lib64/gles_angle9'
emulator:Adding library search path: '../emulator/lib64/gles_angle11'
emulator:Adding library search path: '../emulator/lib64/libstdc++'
emulator: Adding library search path for Qt: '../emulator/lib64/qt/lib'
emulator: Setting Qt plugin search path: QT_QPA_PLATFORM_PLUGIN_PATH=../emulator/lib64/qt/plugins
emulator: Running :/home/sl/opt/android-sdk/tools/../emulator/qemu/linux-x86_64/qemu-system-x86_64
emulator: qemu backend: argv[00] = "/home/sl/opt/android-sdk/tools/../emulator/qemu/linux-x86_64/qemu-system-x86_64"
emulator: qemu backend: argv[01] = "-avd"
emulator: qemu backend: argv[02] = "Nexus_5X_API_25"
emulator: qemu backend: argv[03] = "-verbose"
emulator: Concatenated backend parameters:
/home/sl/opt/android-sdk/tools/../emulator/qemu/linux-x86_64/qemu-system-x86_64 -avd Nexus_5X_API_25 -verbose
emulator: Android virtual device file at: /home/sl/.android/avd/Nexus_5X_API_25.ini
emulator: virtual device content at /home/sl/.android/avd/Nexus_5X_API_25.avd
emulator: virtual device config file: /home/sl/.android/avd/Nexus_5X_API_25.avd/config.ini
emulator: using core hw config path: /home/sl/.android/avd/Nexus_5X_API_25.avd/hardware-qemu.ini
emulator: using snapshot lock path: /home/sl/.android/avd/Nexus_5X_API_25.avd/snapshot.lock
emulator: Found AVD target API level: 25
emulator: Read property file at /home/sl/opt/android-sdk/system-images/android-25/google_apis/x86_64//build.prop
emulator: No boot.prop property file found.
emulator: Warning: config.ini contains invalid skin.path entry: _no_skin
emulator: autoconfig: -skin 1080x1920
emulator: autoconfig: -skindir (null)
emulator: autoconfig: -kernel /home/sl/opt/android-sdk/system-images/android-25/google_apis/x86_64//kernel-ranchu
emulator: Target arch = 'x86_64'
emulator: Auto-detect: Kernel image requires new device naming scheme.
emulator: Auto-detect: Kernel does not support YAFFS2 partitions.
emulator: autoconfig: -ramdisk /home/sl/opt/android-sdk/system-images/android-25/google_apis/x86_64//ramdisk.img
emulator: Using initial system image: /home/sl/opt/android-sdk/system-images/android-25/google_apis/x86_64//system.img
emulator: No vendor image
emulator: autoconfig: -data /home/sl/.android/avd/Nexus_5X_API_25.avd/userdata-qemu.img
emulator: autoconfig: -initdata /home/sl/.android/avd/Nexus_5X_API_25.avd/userdata.img
emulator: autoconfig: -cache /home/sl/.android/avd/Nexus_5X_API_25.avd/cache.img
emulator: Physical RAM size: 1536MB
emulator: VM heap size 256MB is below hardware specified minimum of 384MB,setting it to that value
emulator: System image is read only
emulator: Found 1 DNS servers: 127.0.1.1
emulator: found magic skin width=1080 height=1920 bpp=16
emulator: CPU Acceleration: working
emulator: CPU Acceleration status: KVM (version 12) is installed and usable.
emulator: GPU emulation enabled using 'host' mode
emulator: Initializing hardware OpenGLES emulation support
emulator: Found 1 DNS servers: 127.0.1.1
Content of hardware configuration file:
hw.cpu.arch = x86_64
hw.cpu.ncore = 2
hw.ramSize = 1536
hw.screen = multi-touch
hw.mainKeys = false
hw.trackBall = false
hw.keyboard = true
hw.keyboard.lid = false
hw.keyboard.charmap = qwerty2
hw.dPad = false
hw.rotaryInput = false
hw.gsmModem = true
hw.gps = true
hw.battery = true
hw.accelerometer = true
hw.gyroscope = true
hw.audioInput = true
hw.audioOutput = true
hw.sdCard = false
disk.cachePartition = true
disk.cachePartition.path = /home/sl/.android/avd/Nexus_5X_API_25.avd/cache.img
disk.cachePartition.size = 66m
hw.lcd.width = 1080
hw.lcd.height = 1920
hw.lcd.depth = 16
hw.lcd.density = 420
hw.lcd.backlight = true
hw.gpu.enabled = true
hw.gpu.mode = host
hw.gpu.blacklisted = no
hw.initialOrientation = Portrait
hw.camera.back = none
hw.camera.front = none
vm.heapSize = 384
hw.sensors.light = true
hw.sensors.pressure = true
hw.sensors.humidity = true
hw.sensors.proximity = true
hw.sensors.magnetic_field = true
hw.sensors.magnetic_field_uncalibrated = true
hw.sensors.gyroscope_uncalibrated = true
hw.sensors.orientation = true
hw.sensors.temperature = true
hw.useext4 = true
hw.arc = false
hw.arc.autologin = false
kernel.path = /home/sl/opt/android-sdk/system-images/android-25/google_apis/x86_64//kernel-ranchu
kernel.newDeviceNaming = yes
kernel.supportsYaffs2 = no
disk.ramdisk.path = /home/sl/opt/android-sdk/system-images/android-25/google_apis/x86_64//ramdisk.img
disk.systemPartition.initPath = /home/sl/opt/android-sdk/system-images/android-25/google_apis/x86_64//system.img
disk.systemPartition.size = 2765m
disk.vendorPartition.size = 0
disk.dataPartition.path = /home/sl/.android/avd/Nexus_5X_API_25.avd/userdata-qemu.img
disk.dataPartition.size = 800m
disk.encryptionKeyPartition.path = /home/sl/.android/avd/Nexus_5X_API_25.avd/encryptionkey.img
PlayStore.enabled = false
avd.name = Nexus_5X_API_25
fastboot.forceColdBoot = false
.
QEMU options list:
emulator: argv[00] = "/home/sl/opt/android-sdk/tools/../emulator/qemu/linux-x86_64/qemu-system-x86_64"
emulator: argv[01] = "-dns-server"
emulator: argv[02] = "127.0.1.1"
emulator: argv[03] = "-serial"
emulator: argv[04] = "null"
emulator: argv[05] = "-device"
emulator: argv[06] = "goldfish_pstore,addr=0xff018000,size=0x10000,file=/home/sl/.android/avd/Nexus_5X_API_25.avd/data/misc/pstore/pstore.bin"
emulator: argv[07] = "-cpu"
emulator: argv[08] = "android64"
emulator: argv[09] = "-enable-kvm"
emulator: argv[10] = "-smp"
emulator: argv[11] = "cores=2"
emulator: argv[12] = "-m"
emulator: argv[13] = "1536"
emulator: argv[14] = "-lcd-density"
emulator: argv[15] = "420"
emulator: argv[16] = "-object"
emulator: argv[17] = "iothread,id=disk-iothread"
emulator: argv[18] = "-nodefaults"
emulator: argv[19] = "-kernel"
emulator: argv[20] = "/home/sl/opt/android-sdk/system-images/android-25/google_apis/x86_64//kernel-ranchu"
emulator: argv[21] = "-initrd"
emulator: argv[22] = "/home/sl/opt/android-sdk/system-images/android-25/google_apis/x86_64//ramdisk.img"
emulator: argv[23] = "-drive"
emulator: argv[24] = "if=none,index=0,id=system,file=/home/sl/opt/android-sdk/system-images/android-25/google_apis/x86_64//system.img,read-only"
emulator: argv[25] = "-device"
emulator: argv[26] = "virtio-blk-pci,drive=system,iothread=disk-iothread,modern-pio-notify"
emulator: argv[27] = "-drive"
emulator: argv[28] = "if=none,index=1,id=cache,file=/home/sl/.android/avd/Nexus_5X_API_25.avd/cache.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576"
emulator: argv[29] = "-device"
emulator: argv[30] = "virtio-blk-pci,drive=cache,iothread=disk-iothread,modern-pio-notify"
emulator: argv[31] = "-drive"
emulator: argv[32] = "if=none,index=2,id=userdata,file=/home/sl/.android/avd/Nexus_5X_API_25.avd/userdata-qemu.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576"
emulator: argv[33] = "-device"
emulator: argv[34] = "virtio-blk-pci,drive=userdata,iothread=disk-iothread,modern-pio-notify"
emulator: argv[35] = "-drive"
emulator: argv[36] = "if=none,index=3,id=encrypt,file=/home/sl/.android/avd/Nexus_5X_API_25.avd/encryptionkey.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576"
emulator: argv[37] = "-device"
emulator: argv[38] = "virtio-blk-pci,drive=encrypt,iothread=disk-iothread,modern-pio-notify"
emulator: argv[39] = "-netdev"
emulator: argv[40] = "user,id=mynet"
emulator: argv[41] = "-device"
emulator: argv[42] = "virtio-net-pci,netdev=mynet"
emulator: argv[43] = "-show-cursor"
emulator: argv[44] = "-L"
emulator: argv[45] = "/home/sl/opt/android-sdk/emulator/lib/pc-bios"
emulator: argv[46] = "-soundhw"
emulator: argv[47] = "hda"
emulator: argv[48] = "-vga"
emulator: argv[49] = "none"
emulator: argv[50] = "-append"
emulator: argv[51] = "qemu=1 androidboot.hardware=ranchu clocksource=pit android.qemud=1 console=0 android.checkjni=1 qemu.gles=1 qemu.encrypt=1 qemu.opengles.version=131072 cma=288M qemu.wifi=1 mac80211_hwsim.channels=2 androidboot.android_dt_dir=/sys/bus/platform/devices/ANDR0001:00/properties/android/ ramoops.mem_address=0xff018000 ramoops.mem_size=0x10000 memmap=0x10000$0xff018000"
emulator: argv[52] = "-android-hw"
emulator: argv[53] = "/home/sl/.android/avd/Nexus_5X_API_25.avd/hardware-qemu.ini"
Concatenated QEMU options:
/home/sl/opt/android-sdk/tools/../emulator/qemu/linux-x86_64/qemu-system-x86_64 -dns-server 127.0.1.1 -serial null -device goldfish_pstore,addr=0xff018000,size=0x10000,file=/home/sl/.android/avd/Nexus_5X_API_25.avd/data/misc/pstore/pstore.bin -cpu android64 -enable-kvm -smp cores=2 -m 1536 -lcd-density 420 -object iothread,id=disk-iothread -nodefaults -kernel /home/sl/opt/android-sdk/system-images/android-25/google_apis/x86_64//kernel-ranchu -initrd /home/sl/opt/android-sdk/system-images/android-25/google_apis/x86_64//ramdisk.img -drive if=none,index=0,id=system,file=/home/sl/opt/android-sdk/system-images/android-25/google_apis/x86_64//system.img,read-only -device virtio-blk-pci,drive=system,iothread=disk-iothread,modern-pio-notify -drive if=none,index=1,id=cache,file=/home/sl/.android/avd/Nexus_5X_API_25.avd/cache.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576 -device virtio-blk-pci,drive=cache,iothread=disk-iothread,modern-pio-notify -drive if=none,index=2,id=userdata,file=/home/sl/.android/avd/Nexus_5X_API_25.avd/userdata-qemu.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576 -device virtio-blk-pci,drive=userdata,iothread=disk-iothread,modern-pio-notify -drive if=none,index=3,id=encrypt,file=/home/sl/.android/avd/Nexus_5X_API_25.avd/encryptionkey.img.qcow2,overlap-check=none,cache=unsafe,l2-cache-size=1048576 -device virtio-blk-pci,drive=encrypt,iothread=disk-iothread,modern-pio-notify -netdev user,id=mynet -device virtio-net-pci,netdev=mynet -show-cursor -L /home/sl/opt/android-sdk/emulator/lib/pc-bios -soundhw hda -vga none -append 'qemu=1 androidboot.hardware=ranchu clocksource=pit android.qemud=1 console=0 android.checkjni=1 qemu.gles=1 qemu.encrypt=1 qemu.opengles.version=131072 cma=288M qemu.wifi=1 mac80211_hwsim.channels=2 androidboot.android_dt_dir=/sys/bus/platform/devices/ANDR0001:00/properties/android/ ramoops.mem_address=0xff018000 ramoops.mem_size=0x10000 memmap=0x10000$0xff018000' -android-hw /home/sl/.android/avd/Nexus_5X_API_25.avd/hardware-qemu.ini
emulator: Android qemu version 27.0.2.0 (build_id 4498654) (CL:f388734068bae38c6115263feea33c68eed531fe)
emulator: Starting QEMU main loop
emulator: registered 'boot-properties' qemud service
emulator: Adding boot property: 'ro.opengles.version' = '131072'
emulator: Adding boot property: 'qemu.sf.fake_camera' = 'none'
emulator: Adding boot property: 'dalvik.vm.heapsize' = '384m'
emulator: Adding boot property: 'qemu.hw.mainkeys' = '0'
emulator: Adding boot property: 'qemu.sf.lcd_density' = '420'
emulator: goldfish_events.have-dpad: false
emulator: goldfish_events.have-trackball: false
emulator: goldfish_events.have-camera: false
emulator: goldfish_events.have-keyboard: true
emulator: goldfish_events.have-lidswitch: false
emulator: goldfish_events.have-tabletmode: false
emulator: goldfish_events.have-touch: false
emulator: goldfish_events.have-multitouch: true
emulator: control console listening on port 5554, ADB on port 5555
Not using any http proxy
emulator: android_hw_fingerprint_init: fingerprint qemud listen service initialized
emulator: Warning: config.ini contains invalid skin.path entry: _no_skin
emulator: ERROR: detected a hanging thread 'QEMU2 main loop'. No response for 15000 ms