[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug 1856837] Re: qemu 4.2.0 arm segmentation fault with gcc 9.2

From: Peter Maydell
Subject: [Bug 1856837] Re: qemu 4.2.0 arm segmentation fault with gcc 9.2
Date: Mon, 20 Jan 2020 15:26:28 -0000

At the point of the segfault, QEMU is correctly delivering a segfault to
the guest because it has attempted to dereference a NULL pointer. You
can see this if you run QEMU with the '-g 1234' option and connect an
arm-aware gdb to it:

(gdb) disas $pc-32,$pc+32
Dump of assembler code from 0x2bf24c to 0x2bf28c:
   0x002bf24c:  ldr     r4, [r0, #296]  ; 0x128
   0x002bf250:  mov     r6, r1
   0x002bf254:  add     r8, r0, #40     ; 0x28
   0x002bf258:  mov     r5, #0
   0x002bf25c:  b       0x2bf268
   0x002bf260:  cmp     r5, r6
   0x002bf264:  bge     0x2bf2d4
   0x002bf268:  mov     r12, r4
=> 0x002bf26c:  ldr     r4, [r4]
   0x002bf270:  ldr     r3, [r12, #12]
   0x002bf274:  tst     r3, #512        ; 0x200
   0x002bf278:  bne     0x2bf2c0
   0x002bf27c:  tst     r3, #1024       ; 0x400
   0x002bf280:  ubfx    r1, r3, #11, #1
   0x002bf284:  bne     0x2bf2c0
   0x002bf288:  tst     r3, #2048       ; 0x800
End of assembler dump.
(gdb) print /x $r4
$3 = 0x0

It looks like this is in the middle of somebody's garbage collector (the
elf symbol is _ZN2v88internal10PagedSpace14AdvanceSweeperEi).

The next step would be to find out what was going on in the run-up to
that that resulted in the NULL pointer. That's a bit of guest-level
debugging work that would be much easier with the source code. If you
can debug where something unexpected happens to the guest that would
probably help -- this is likely to be a much longer piece of debugging
than I'm afraid I have time to do.

You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.

  qemu 4.2.0 arm  segmentation fault with gcc 9.2

Status in QEMU:

Bug description:
  As discussed with f4bug yesterday on IRC here comes the bug

  I'm building/configured qemu-4.2.0 on an x86_64 (gcc (Debian
  6.3.0-18+deb9u1) 6.3.0 20170516) with target-list "arm-softmmu,arm-
  linux-user" and debug enabled. I use the arm-linux-user variant,

  Then i'm trying to cross-compile (arm gcc) an old version of googles
  v8 (as i need this version of the lib for binary compatibility) which
  uses qemu during build.

  It worked with gcc 5.4.0 but not with 9.2.0. I also tried with 6.5.0,
  7.4.0 and 8.3.0 but those are also causing the same segmentation

  The executed command wich breaks qemu is:

   qemu-arm /tmp/build/out/arm.release/mksnapshot.arm --log-snapshot-
  positions --logfile
  --random-seed 314159265 /tmp/build/out/arm.release/obj.host/v8_snap

  The printed error message is:

  qemu: uncaught target signal 11 (Segmentation fault) - core dumped

  Calling qemu with gdb gives the following information:

   Thread 1 "qemu-arm" received signal SIGSEGV, Segmentation fault.
   0x0000555555d63d11 in static_code_gen_buffer ()


   (gdb) bt
   #0  0x0000555555d63d11 in static_code_gen_buffer ()
   #1  0x0000555555628d58 in cpu_tb_exec (itb=<optimized out>, 
cpu=0x555557c33930) at 
   #2  cpu_loop_exec_tb (tb_exit=<synthetic pointer>, last_tb=<synthetic 
pointer>, tb=<optimized out>, 
   cpu=0x555557c33930) at /tmp/build/qemu/accel/tcg/cpu-exec.c:618
   #3  cpu_exec (cpu=cpu@entry=0x555557c2b660) at 
   #4  0x0000555555661578 in cpu_loop (env=0x555557c33930) at 
  #5  0x00005555555d6d76 in main (argc=<optimized out>, argv=<optimized out>, 
envp=<optimized out>) at /tmp/build/qemu/linux-user/main.c:865

  Calling qemu-arm with debug switch "-d in_asm,int,op_opt" shows the
  log in the attached file.

  Thanks for any hints!

To manage notifications about this bug go to:

reply via email to

[Prev in Thread] Current Thread [Next in Thread]