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,
>
>
next prev parent 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.