Multithreaded programs don't work (reliably) in x86 user emulation mode. This 
is a known (longstanding) bug.
ARM hosts are also currently known to have problems (as stated in the qemu 1.0 
release notes).

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/902413

Title:
  qemu-i386-user on ARM host: wine hangs/spins when trying to run
  anything

Status in QEMU:
  New

Bug description:
  With qemu built from git from 217bfb445b54db618a30f3a39170bebd9fd9dbf2
  and configured with './configure --target-list=i386-linux-user
  --static --interp-prefix=/home/pgriffais/natty-i386/', trying to run
  wine 1.3.15 from an Ubuntu 11.04 chroot results in hangs. If I run an
  i386 emulated wineserver, wineserver hangs in:

  0x600c7f8c in read () at ../sysdeps/unix/syscall-template.S:82
  82    ../sysdeps/unix/syscall-template.S: No such file or directory.
        in ../sysdeps/unix/syscall-template.S
  (gdb) bt
  #0  0x600c7f8c in read () at ../sysdeps/unix/syscall-template.S:82
  #1  0x6004a316 in read (cpu_env=0x622c3ee8, num=3, arg1=6, arg2=1121255519, 
      arg3=1, arg4=134875664, arg5=1, arg6=1121255528, arg7=0, arg8=0)
      at /usr/include/bits/unistd.h:45
  #2  do_syscall (cpu_env=0x622c3ee8, num=3, arg1=6, arg2=1121255519, arg3=1, 
      arg4=134875664, arg5=1, arg6=1121255528, arg7=0, arg8=0)
      at /home/ubuntu/src/qemu/linux-user/syscall.c:4691
  #3  0x600262f0 in cpu_loop (env=0x622c3ee8)
      at /home/ubuntu/src/qemu/linux-user/main.c:321
  #4  0x60026bbc in main (argc=<value optimized out>, 
      argv=<value optimized out>, envp=<value optimized out>)
      at /home/ubuntu/src/qemu/linux-user/main.c:3817

  While wine hangs in:

  0x600c84ac in recvmsg () at ../sysdeps/unix/syscall-template.S:82
  82    ../sysdeps/unix/syscall-template.S: No such file or directory.
        in ../sysdeps/unix/syscall-template.S
  (gdb) bt
  #0  0x600c84ac in recvmsg () at ../sysdeps/unix/syscall-template.S:82
  #1  0x60041c4e in do_sendrecvmsg (fd=4, target_msg=<value optimized out>, 
      flags=1073741824, send=0)
      at /home/ubuntu/src/qemu/linux-user/syscall.c:1834
  #2  0x600497ec in do_socketcall (cpu_env=<value optimized out>, num=102, 
      arg1=17, arg2=1122504544, arg3=2076831732, arg4=1122504568, 
      arg5=2076942688, arg6=1122504888, arg7=0, arg8=0)
      at /home/ubuntu/src/qemu/linux-user/syscall.c:2235
  #3  do_syscall (cpu_env=<value optimized out>, num=102, arg1=17, 
      arg2=1122504544, arg3=2076831732, arg4=1122504568, arg5=2076942688, 
      arg6=1122504888, arg7=0, arg8=0)
      at /home/ubuntu/src/qemu/linux-user/syscall.c:6085
  #4  0x600262f0 in cpu_loop (env=0x622c3f08)
      at /home/ubuntu/src/qemu/linux-user/main.c:321
  #5  0x60026bbc in main (argc=<value optimized out>, 
      argv=<value optimized out>, envp=<value optimized out>)
      at /home/ubuntu/src/qemu/linux-user/main.c:3817

  However if I build wineserver 1.3.15 natively for ARM and run it on
  the host while wine is emulated, I get the following:

  root@tiberiusstation:/home/ubuntu# ./natty-i386/usr/bin/wine notepad
  Unsupported ancillary data: 1/2
  Unsupported ancillary data: 1/2
  Unsupported ancillary data: 1/2
  err:process:__wine_kernel_init boot event wait timed out

  I assume the last one is due to wineboot.exe hanging. The main wine
  process hangs in there:

  cg_temp_new_internal_i32 (temp_local=<value optimized out>)
      at /home/ubuntu/src/qemu/tcg/tcg.c:483
  483   }
  (gdb) bt
  #0  tcg_temp_new_internal_i32 (temp_local=<value optimized out>)
      at /home/ubuntu/src/qemu/tcg/tcg.c:483
  #1  0x60052ac6 in tcg_temp_new_i32 (val=6)
      at /home/ubuntu/src/qemu/tcg/tcg.h:442
  #2  tcg_const_i32 (val=6) at /home/ubuntu/src/qemu/tcg/tcg.c:530
  #3  0x6005ef0c in tcg_gen_shri_i32 (ot=2, op1=2, op2=7, is_right=1, 
      is_arith=0, s=<value optimized out>)
      at /home/ubuntu/src/qemu/tcg/tcg-op.h:605
  #4  gen_shift_rm_im (ot=2, op1=2, op2=7, is_right=1, is_arith=0, 
      s=<value optimized out>)
      at /home/ubuntu/src/qemu/target-i386/translate.c:1514
  #5  0x6006df90 in gen_shifti (s=0xbefea970, pc_start=<value optimized out>)
      at /home/ubuntu/src/qemu/target-i386/translate.c:1946
  #6  disas_insn (s=0xbefea970, pc_start=<value optimized out>)
      at /home/ubuntu/src/qemu/target-i386/translate.c:5397
  #7  0x60091758 in gen_intermediate_code_internal (env=0x625656f8, 
      tb=0x402cdf48) at /home/ubuntu/src/qemu/target-i386/translate.c:7825
  #8  gen_intermediate_code_pc (env=0x625656f8, tb=0x402cdf48)
      at /home/ubuntu/src/qemu/target-i386/translate.c:7896
  #9  0x60054bf2 in cpu_restore_state (tb=0x402cdf48, env=0x62565690, 
      searched_pc=1617393812) at /home/ubuntu/src/qemu/translate-all.c:126
  #10 0x60091d9e in handle_cpu_signal (host_signum=<value optimized out>, 
      pinfo=<value optimized out>, puc=0xbefeab70)
      at /home/ubuntu/src/qemu/user-exec.c:117
  #11 cpu_x86_signal_handler (host_signum=<value optimized out>, 
      pinfo=<value optimized out>, puc=0xbefeab70)
      at /home/ubuntu/src/qemu/user-exec.c:458
  #12 0x6003c764 in host_signal_handler (host_signum=11, info=0xbefeaaf0, 
      puc=<value optimized out>)
      at /home/ubuntu/src/qemu/linux-user/signal.c:492
  #13 <signal handler called>
  #14 0x60677894 in static_code_gen_buffer ()
  #15 0x6000a260 in cpu_x86_exec (env=0x0)
      at /home/ubuntu/src/qemu/cpu-exec.c:566
  #16 0x68953200 in ?? ()
  #17 0x68953200 in ?? ()
  Backtrace stopped: previous frame identical to this frame (corrupt stack?

  Running the same version of wine through qemu-user-i386 running on an
  i386 host works fine with both wineserver and wine being emulated;
  that's the result I'm trying to achieve.

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/902413/+subscriptions

Reply via email to