From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39456) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wz4th-00028g-U0 for qemu-devel@nongnu.org; Mon, 23 Jun 2014 10:07:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Wz4tb-0002FH-Bg for qemu-devel@nongnu.org; Mon, 23 Jun 2014 10:07:01 -0400 Received: from ssl.dlhnet.de ([82.141.21.42]:53337) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Wz4tb-0002F2-0P for qemu-devel@nongnu.org; Mon, 23 Jun 2014 10:06:55 -0400 Message-ID: <53A8347C.6010709@dlhnet.de> Date: Mon, 23 Jun 2014 16:06:52 +0200 From: Peter Lieven MIME-Version: 1.0 References: <1401960072-2363-1-git-send-email-cyliu@suse.com> In-Reply-To: <1401960072-2363-1-git-send-email-cyliu@suse.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v28 00/33] replace QEMUOptionParameter with QemuOpts List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Chunyan Liu , qemu-devel@nongnu.org Cc: Kevin Wolf , stefanha@redhat.com On 05.06.2014 11:20, Chunyan Liu wrote: > This patch series is to replace QEMUOptionParameter with QemuOpts, so that only > one Qemu Option structure is kept in QEMU code. > > --- > Changes to v27: > * rebase to git master (code has been updated in this part since v27 sent > so rebase to make the patch series work.) > > All patches are also available from: > https://github.com/chunyanliu/qemu/commits/QemuOpts > > > Chunyan Liu (33): > QemuOpts: move find_desc_by_name ahead for later calling > QemuOpts: repurpose qemu_opts_print to replace > print_option_parameters > QemuOpts: add def_value_str to QemuOptDesc > qapi: output def_value_str when query command line options > QemuOpts: change opt->name|str from (const char *) to (char *) > QemuOpts: move qemu_opt_del ahead for later calling > QemuOpts: add qemu_opt_get_*_del functions for replace work > QemuOpts: add qemu_opts_print_help to replace print_option_help > QemuOpts: add conversion between QEMUOptionParameter to QemuOpts > QemuOpts: add qemu_opts_append to replace append_option_parameters > QemuOpts: check NULL input for qemu_opts_del > change block layer to support both QemuOpts and QEMUOptionParamter > vvfat.c: handle cross_driver's create_options and create_opts > cow.c: replace QEMUOptionParameter with QemuOpts > gluster.c: replace QEMUOptionParameter with QemuOpts > iscsi.c: replace QEMUOptionParameter with QemuOpts > nfs.c: replace QEMUOptionParameter with QemuOpts > qcow.c: replace QEMUOptionParameter with QemuOpts > QemuOpts: export qemu_opt_find > qcow2.c: replace QEMUOptionParameter with QemuOpts > qed.c: replace QEMUOptionParameter with QemuOpts > raw-posix.c: replace QEMUOptionParameter with QemuOpts > raw-win32.c: replace QEMUOptionParameter with QemuOpts > raw_bsd.c: replace QEMUOptionParameter with QemuOpts > rbd.c: replace QEMUOptionParameter with QemuOpts > sheepdog.c: replace QEMUOptionParameter with QemuOpts > ssh.c: replace QEMUOptionParameter with QemuOpts > vdi.c: replace QEMUOptionParameter with QemuOpts > vhdx.c: replace QEMUOptionParameter with QemuOpts > vmdk.c: replace QEMUOptionParameter with QemuOpts > vpc.c: replace QEMUOptionParameter with QemuOpts > cleanup QEMUOptionParameter > QemuOpts: cleanup tmp 'allocated' member from QemuOptsList > > block.c | 99 ++++---- > block/cow.c | 52 ++-- > block/gluster.c | 73 +++--- > block/iscsi.c | 32 ++- > block/nfs.c | 10 +- > block/qcow.c | 72 +++--- > block/qcow2.c | 259 ++++++++++---------- > block/qed.c | 112 +++++---- > block/qed.h | 3 +- > block/raw-posix.c | 55 ++--- > block/raw-win32.c | 38 +-- > block/raw_bsd.c | 25 +- > block/rbd.c | 61 +++-- > block/sheepdog.c | 105 ++++---- > block/ssh.c | 30 ++- > block/vdi.c | 71 +++--- > block/vhdx.c | 97 ++++---- > block/vhdx.h | 1 + > block/vmdk.c | 121 +++++----- > block/vpc.c | 60 ++--- > block/vvfat.c | 14 +- > include/block/block.h | 7 +- > include/block/block_int.h | 9 +- > include/qemu/option.h | 53 +--- > include/qemu/option_int.h | 4 +- > qapi-schema.json | 5 +- > qapi/opts-visitor.c | 10 +- > qemu-img.c | 91 ++++--- > qmp-commands.hx | 2 + > tests/qemu-iotests/049.out | 2 +- > tests/qemu-iotests/061.out | 2 +- > util/qemu-config.c | 4 + > util/qemu-option.c | 590 ++++++++++++++++++++------------------------- > 33 files changed, 1037 insertions(+), 1132 deletions(-) > It seems that for qemu-img this series introduces stack corruption. Any ideas? lieven@lieven-pc:~/git/qemu$ valgrind --leak-check=full ./qemu-img convert -p nfs://172.21.200.61/vcore-dev-cdrom/pool3/VC_Ubuntu_LTS_12.04.2_64bit.qcow2 /tmp/x.raw ==23086== Memcheck, a memory error detector ==23086== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al. ==23086== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info ==23086== Command: ./qemu-img convert -p nfs://172.21.200.61/vcore-dev-cdrom/pool3/VC_Ubuntu_LTS_12.04.2_64bit.qcow2 /tmp/x.raw ==23086== ==23086== Warning: client switching stacks? SP change: 0x7650f08 --> 0x7feffe9f0 ==23086== to suppress, use: --max-stackframe=34218892008 or greater ==23086== Invalid write of size 8 ==23086== at 0x1C4980: qemu_opts_create (qemu-option.c:692) ==23086== by 0x119918: img_convert (qemu-img.c:1385) ==23086== by 0x11CEEC: main (qemu-img.c:2830) ==23086== Address 0x7c65fe8 is 24 bytes inside a block of size 104 free'd ==23086== at 0x4C2B7B2: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==23086== by 0x54C1AF6: g_realloc (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.3200.4) ==23086== by 0x1C5C52: qemu_opts_append (qemu-option.c:1129) ==23086== by 0x1198EE: img_convert (qemu-img.c:1383) ==23086== by 0x11CEEC: main (qemu-img.c:2830) ==23086== Peter