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

[Xen-devel] libxl parser question

I'm currently working with xen-unstable changeset 25260:0f53540494f7 
and trying to add a `vncviewer` type to the libxl_types.idl, but 
having difficulties understanding the root of a failure that occurs 
after I add my changes. Hopefully I enclose enough detail below, but 
if not, I'm happy to provide more information.

I've created a small patch to add a 'vncviewer' bool type to the 
configuration parser of xl and based these changes on the "localtime" 
implementation part of c/s 25131, see below:

diff -r 0f53540494f7 tools/libxl/libxl_create.c
--- a/tools/libxl/libxl_create.c        Fri May 04 11:18:48 2012 +0100
+++ b/tools/libxl/libxl_create.c        Sat May 05 21:27:41 2012 +0000
@@ -156,6 +156,7 @@ int libxl__domain_build_info_setdefault(
     if (b_info->target_memkb == LIBXL_MEMKB_DEFAULT)
         b_info->target_memkb = b_info->max_memkb;
+    libxl_defbool_setdefault(&b_info->vncviewer, false);
     libxl_defbool_setdefault(&b_info->localtime, false);
     libxl_defbool_setdefault(&b_info->disable_migrate, false);
diff -r 0f53540494f7 tools/libxl/libxl_types.idl
--- a/tools/libxl/libxl_types.idl       Fri May 04 11:18:48 2012 +0100
+++ b/tools/libxl/libxl_types.idl       Sat May 05 21:27:41 2012 +0000
@@ -250,6 +250,7 @@ libxl_domain_build_info = Struct("domain
     ("video_memkb",     MemKB),
     ("shadow_memkb",    MemKB),
     ("rtc_timeoffset",  uint32),
+    ("vncviewer",       libxl_defbool),
     ("localtime",       libxl_defbool),
     ("disable_migrate", libxl_defbool),
     ("cpuid",           libxl_cpuid_policy_list),
diff -r 0f53540494f7 tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c  Fri May 04 11:18:48 2012 +0100
+++ b/tools/libxl/xl_cmdimpl.c  Sat May 05 21:27:41 2012 +0000
@@ -728,6 +728,7 @@ static void parse_config_data(const char
     if (!xlu_cfg_get_long(config, "rtc_timeoffset", &l, 0))
         b_info->rtc_timeoffset = l;
+    xlu_cfg_get_defbool(config, "vncviewer", &b_info->localtime, 0);
     xlu_cfg_get_defbool(config, "localtime", &b_info->localtime, 0);
     if (!xlu_cfg_get_long (config, "videoram", &l, 0))

The outcome of this patch when applied and compiled in is that xl 
aborts during the parse_config_data() call in the create_domain().

# ./xl create win7
Parsing config file win7

This abort is the `default` case in the switch at xl_cmdimpl.c:736, 
which gets triggered from an erroneous b_info->type with a bogus value 
of 0x84 (which is neither PV nor HVM.)

For reference, the backtrace is:

(gdb) bt
#0  0xb7fe2416 in __kernel_vsyscall ()
#1  0xb7e28781 in *__GI_raise (sig=6) at 
#2  0xb7e2bbb2 in *__GI_abort () at abort.c:92
#3  0x0804fe4b in parse_config_data (configfile_filename_report=<value 
optimized out>, configfile_data=<value optimized out>, 
configfile_len=250, d_config=0xbffff55c) at xl_cmdimpl.c:841
#4  0x080526ba in create_domain (dom_info=<value optimized out>) at 
#5  0x0805c098 in main_create (argc=2, argv=0xbffffcc8) at 
#6  0x0804cfe4 in main (argc=3, argv=0xbffffcc4) at xl.c:176

I've also attached the win7 config file which I'm using, in case this 
is a side effect of something wrong in config file itself (I should 
add that it's mostly copied from an example and it successfully 
creates a win7 domain without my patch applied.)

Any guesses or suggestions how to troubleshoot this further would be 
greatly appreciated.


Attachment: win7
Description: Text document

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.