All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wei Huang <w1.huang@samsung.com>
To: Julien Grall <julien.grall@linaro.org>, duqi <duqi_2009@163.com>
Cc: "Ian Campbell" <Ian.Campbell@citrix.com>,
	"Stefano Stabellini (Xen mainlister)"
	<stefano.stabellini@eu.citrix.com>, 宫晓利 <nkgongxl@163.com>,
	hdegoede <hdegoede@redhat.com>,
	"bjzhang@suse.com" <bjzhang@suse.com>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: The segmentfault when using xl create domU
Date: Tue, 15 Apr 2014 17:07:05 -0500	[thread overview]
Message-ID: <534DAD89.1040604@samsung.com> (raw)
In-Reply-To: <534D3E54.9060008@linaro.org>

On 04/15/2014 09:12 AM, Julien Grall wrote:
> Hello,
>
> On 04/15/2014 10:45 AM, duqi wrote:
>> At 2014-04-15 04:53:41, "Ian Campbell" <Ian.Campbell@citrix.com> wrote:
>>> On Tue, 2014-04-15 at 10:33 +0800, duqi wrote:
>>>>   Hi there,
>>>> We tried to create domU with command "xl -vvv create -d domU_01" and
>>>> met the below fault:
>>>>
>>>> root@linaro-alip:~/domU# xl -vvv create -d domU_01
>>>
>>> Does this happen if you drop the "-d"?
>>>
>>> please could you run under gdb and grab a backtrace. Someth8ing like:
>>> 	# gdb --args xl -vvv create -d domU_01
>>> 	(gdb) run
>>> 	....
>>> 	crash!
>>> 	(gdb) bt
>>>
>>
>> Hi, here is the gdb output:
>> Program received signal SIGSEGV, Segmentation fault.
>> 0xb6f6bc30 in memcpy (__len=16, __src=0xbefe6e0c, __dest=0x39488)
>>      at /usr/lib/gcc-cross/arm-linux-gnueabihf/4.7/../../../../arm-linux-gnueabihf/include/bits/string3.h:51
>> 51      /usr/lib/gcc-cross/arm-linux-gnueabihf/4.7/../../../../arm-linux-gnueabihf/include/bits/string3.h: No such file or direc.
>> (gdb) bt
>> #0  0xb6f6bc30 in memcpy (__len=16, __src=0xbefe6e0c, __dest=0x39488)
>>      at /usr/lib/gcc-cross/arm-linux-gnueabihf/4.7/../../../../arm-linux-gnueabihf/include/bits/string3.h:51
>> #1  libxl_list_vm (ctx=ctx@entry=0x33030,
>>      nb_vm_out=nb_vm_out@entry=0xbeffee30) at libxl.c:689
>> #2  0xb6f7b934 in libxl__domain_make (gc=gc@entry=0x393d0,
>>      info=info@entry=0xbefff040, domid=domid@entry=0xbeffeec0)
>>      at libxl_create.c:613
>> #3  0xb6f7cadc in initiate_domain_create (dcs=0x398a8, egc=0xbeffeec4)
>>      at libxl_create.c:791
>> #4  do_domain_create (ctx=ctx@entry=0x33030,
>>      d_config=d_config@entry=0xbefff040, domid=domid@entry=0xbeffef80,
>>      restore_fd=restore_fd@entry=-1,
>>      checkpointed_stream=checkpointed_stream@entry=0, ao_how=ao_how@entry=0x0,
>>      aop_console_how=aop_console_how@entry=0x0) at libxl_create.c:1424
>> #5  0xb6f7d428 in libxl_domain_create_new (ctx=0x33030,
>>      d_config=d_config@entry=0xbefff040, domid=domid@entry=0xbeffef80,
>>      ao_how=ao_how@entry=0x0, aop_console_how=aop_console_how@entry=0x0)
>>      at libxl_create.c:1449
>> #6  0x00017040 in create_domain (dom_info=0xbeffefdc) at xl_cmdimpl.c:2283
>> #7  main_create (argc=<optimized out>, argv=<optimized out>)
>>      at xl_cmdimpl.c:4469
>> #8  0x0000db84 in main (argc=3, argv=0xbefff82c) at xl.c:362
>> (gdb)
>
> It's a compiler bug. For some reasons gcc doesn't generate the right assembly
> when -O1 is specified on the command line. Which version of gcc do you use(4.7.*?)?
> Which distribution are you using?
> Can you also call disas the crash and copy the output?
>
> Gcc 4.8 doesn't seem to be affected.
>
> FYI, I got this output from 4.7 with Linaro Ubuntu raring (gcc 4.7.3).
>
>     0x76f71bd0 <+224>:   mov     r5, #0
>     0x76f71bd4 <+228>:   mov     r4, r5
>     0x76f71bd8 <+232>:   mov     r7, r5                                                <= r7 = r5 = 0
>     0x76f71bdc <+236>:   sub     r6, r11, #98304 ; 0x18000
>     0x76f71be0 <+240>:   sub     r6, r6, #36     ; 0x24
>     0x76f71be4 <+244>:   mov     r9, r5
>     0x76f71be8 <+248>:   str     r8, [r12, #-68] ; 0x44
>     0x76f71bec <+252>:   sub     r3, r11, #98304 ; 0x18000
>     0x76f71bf0 <+256>:   ldr     r0, [r3, #-68]  ; 0x44
>     0x76f71bf4 <+260>:   ldrh    r1, [r6, r5]
>     0x76f71bf8 <+264>:   mov     r2, r9
>     0x76f71bfc <+268>:   bl      0x76f6d6ac
>     0x76f71c00 <+272>:   cmp     r0, #0
>     0x76f71c04 <+276>:   bne     0x76f71c50 <libxl_list_vm+352>
>     0x76f71c08 <+280>:   add     r8, r7, r7, lsl #2                                     <= Last time we set r8 = r7 << 2 = 0
>     0x76f71c0c <+284>:   sub     r12, r11, #98304        ; 0x18000
>     0x76f71c10 <+288>:   str     r8, [r12, #-56] ; 0x38
>     0x76f71c14 <+292>:   ldr     r3, [r12, #-60] ; 0x3c
>     0x76f71c18 <+296>:   add     lr, r3, r8, lsl #2
>     0x76f71c1c <+300>:   add     r12, r4, r4, lsl #1
>     0x76f71c20 <+304>:   add     r12, r6, r12, lsl #5
>     0x76f71c24 <+308>:   add     r12, r12, #76   ; 0x4c
>     0x76f71c28 <+312>:   ldm     r12!, {r0, r1, r2, r3}
>     0x76f71c2c <+316>:   mov     r12, r8
> => 0x76f71c30 <+320>:   ldr     r8, [r8, #-60]  ; 0x3c                                 <= r8 (=0) is dereferenced
>
I saw the same thing on my system and ack'ed that this is compiler 
related. My compiler is 4.7.3. I was able to fix it with the following hack:

diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c
index 730f6e1..14eac6b 100644
--- a/tools/libxl/libxl.c
+++ b/tools/libxl/libxl.c
@@ -667,7 +667,8 @@ libxl_vminfo * libxl_list_vm(libxl_ctx *ctx, int 
*nb_vm_out)
  {
      GC_INIT(ctx);
      libxl_vminfo *ptr = NULL;
-    int idx, i, ret;
+    volatile int idx, i;
+    int ret;
      xc_domaininfo_t info[1024];

      ret = xc_domain_getinfolist(ctx->xch, 1, ARRAY_SIZE(info), info);

>
> Regards,
>
>

  reply	other threads:[~2014-04-15 22:07 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-15  2:33 The segmentfault when using xl create domU duqi
2014-04-15  8:53 ` Ian Campbell
2014-04-15  9:45   ` duqi
2014-04-15 14:12     ` Julien Grall
2014-04-15 22:07       ` Wei Huang [this message]
2014-04-16  9:21         ` Ian Campbell
2014-04-16 15:50           ` Wei Huang
2014-04-16 15:56             ` Julien Grall
2014-04-16  9:12       ` duqi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=534DAD89.1040604@samsung.com \
    --to=w1.huang@samsung.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=bjzhang@suse.com \
    --cc=duqi_2009@163.com \
    --cc=hdegoede@redhat.com \
    --cc=julien.grall@linaro.org \
    --cc=nkgongxl@163.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.