From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:42944) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UeMbC-0005G5-Tv for qemu-devel@nongnu.org; Mon, 20 May 2013 05:41:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UeMbB-00011g-DG for qemu-devel@nongnu.org; Mon, 20 May 2013 05:41:46 -0400 Received: from mx1.redhat.com ([209.132.183.28]:64270) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UeMbB-00011T-5i for qemu-devel@nongnu.org; Mon, 20 May 2013 05:41:45 -0400 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r4K8oFb3007835 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 20 May 2013 04:50:15 -0400 Date: Mon, 20 May 2013 09:49:59 +0100 From: "Richard W.M. Jones" Message-ID: <20130520084959.GA20976@redhat.com> References: <1369033424-14594-1-git-send-email-famz@redhat.com> <20130520084106.GC18311@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20130520084106.GC18311@redhat.com> Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v3 00/10] curl: fix curl read List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fam Zheng Cc: kwolf@redhat.com, jcody@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com On Mon, May 20, 2013 at 09:41:06AM +0100, Richard W.M. Jones wrote: > On Mon, May 20, 2013 at 03:03:34PM +0800, Fam Zheng wrote: > > CURL library API has changed, the current curl driver is not working. > > This patch rewrites the use of API as well as the structure of intern= al > > states.=20 >=20 > I tried this, but it segfaults: >=20 > Program terminated with signal 11, Segmentation fault. That stack trace was wrong. I was testing against the version of libcurl in Fedora which is known to be broken. Here is the stack trace, this time really running against curl-7_30_0-147-gae26ee3: Program terminated with signal 11, Segmentation fault. #0 curl_read_cb (ptr=3D, size=3D,=20 nmemb=3D, opaque=3D0x7f63d48ba340) at block/curl.c:240 240 size_t aio_base =3D acb->sector_num * SECTOR_SIZE; Missing separate debuginfos, use: debuginfo-install SDL-1.2.15-3.fc18.x86= _64 bluez-libs-4.101-6.fc18.x86_64 brlapi-0.5.6-12.fc18.x86_64 celt051-0.= 5.1.3-5.fc18.x86_64 ceph-devel-0.56.3-1.fc18.x86_64 ceph-libs-0.56.3-1.fc= 18.x86_64 cryptopp-5.6.2-2.fc18.x86_64 cyrus-sasl-lib-2.1.25-2.fc18.x86_6= 4 leveldb-1.7.0-4.fc18.x86_64 libfdt-1.3.0-5.fc18.x86_64 libseccomp-1.0.1= -0.fc18.x86_64 libselinux-2.1.12-7.3.fc18.x86_64 libusbx-1.0.14-1.fc18.x8= 6_64 nss-mdns-0.10-11.fc18.x86_64 snappy-1.0.5-2.fc18.x86_64 spice-server= -0.12.2-3.fc18.x86_64 usbredir-0.6-1.fc18.x86_64 xen-libs-4.2.2-3.fc18.x8= 6_64 (gdb) bt #0 curl_read_cb (ptr=3D, size=3D,=20 nmemb=3D, opaque=3D0x7f63d48ba340) at block/curl.c:240 #1 0x00007f63cef51cc8 in Curl_client_write () from /home/rjones/d/curl/lib/.libs/libcurl.so.4 #2 0x00007f63cef697ef in Curl_readwrite () from /home/rjones/d/curl/lib/.libs/libcurl.so.4 #3 0x00007f63cef710b0 in multi_runsingle () from /home/rjones/d/curl/lib/.libs/libcurl.so.4 #4 0x00007f63cef720f7 in multi_socket () from /home/rjones/d/curl/lib/.libs/libcurl.so.4 #5 0x00007f63cef721df in curl_multi_socket_action () from /home/rjones/d/curl/lib/.libs/libcurl.so.4 #6 0x00007f63d27d9043 in curl_fd_handler (arg=3D0x7f63d48e16c0) at block/curl.c:265 #7 0x00007f63d27bcbbb in aio_dispatch (ctx=3D0x7f63d48b33f0, ctx=3D0x7f6= 3d48b33f0) at aio-posix.c:149 #8 0x00007f63d27bd0b1 in aio_poll (ctx=3D0x7f63d48b33f0,=20 blocking=3Dblocking@entry=3Dtrue) at aio-posix.c:248 #9 0x00007f63d29019c9 in qemu_aio_wait () at main-loop.c:484 #10 0x00007f63d27d2b65 in bdrv_rwv_co (bs=3Dbs@entry=3D0x7f63d48b96e0,=20 sector_num=3Dsector_num@entry=3D0, qiov=3Dqiov@entry=3D0x7fff2c127e10= ,=20 is_write=3Dis_write@entry=3Dfalse) at block.c:2215 #11 0x00007f63d27d2c90 in bdrv_rw_co (is_write=3Dfalse,=20 nb_sectors=3D, buf=3D, sector_num=3D0, = bs=3D 0x7f63d48b96e0) at block.c:2234 #12 bdrv_read (bs=3Dbs@entry=3D0x7f63d48b96e0, sector_num=3Dsector_num@en= try=3D0,=20 buf=3Dbuf@entry=3D0x7fff2c128100 "3\300\216=D0=BC", nb_sectors=3Dnb_s= ectors@entry=3D4) at block.c:2241 #13 0x00007f63d27d2d82 in bdrv_pread (bs=3D0x7f63d48b96e0, offset=3Doffse= t@entry=3D 0, buf=3Dbuf@entry=3D0x7fff2c128100, count1=3Dcount1@entry=3D2048) at= block.c:2303 #14 0x00007f63d27d3460 in find_image_format (pdrv=3D,=20 filename=3D0x7f63d48b6b40 "http://192.168.0.249/scratch/winxp.img",=20 bs=3D) at block.c:533 #15 bdrv_open (bs=3D0x7f63d48b6cc0, filename=3Dfilename@entry=3D 0x7f63d48b6b40 "http://192.168.0.249/scratch/winxp.img", options=3D 0x7f63d48b76a0, options@entry=3D0x7f63d48b5980, flags=3D8258, drv=3Dd= rv@entry=3D 0x0) at block.c:1047 #16 0x00007f63d2806093 in drive_init (all_opts=3D0x7f63d48b2420,=20 block_default_type=3DIF_NONE) at blockdev.c:698 #17 0x00007f63d297054b in drive_init_func (opts=3D,=20 opaque=3D) at vl.c:1117 #18 0x00007f63d2a9a6f3 in qemu_opts_foreach (list=3D,=20 func=3Dfunc@entry=3D0x7f63d2970530 , opaque=3Dopaque= @entry=3D 0x7f63d2e938f0 ,=20 abort_on_failure=3Dabort_on_failure@entry=3D1) at util/qemu-option.c:= 1162 #19 0x00007f63d27b7b89 in main (argc=3D, argv=3D,=20 envp=3D) at vl.c:4201 --- For completeness: (1) qemu from git (without your patches) works. (2) I'm testing using the following command: $ LD_LIBRARY_PATH=3D~/d/curl/lib/.libs \ LIBGUESTFS_BACKEND=3Ddirect \ LIBGUESTFS_QEMU=3D~/d/qemu/qemu.wrapper \ ./run ./fish/guestfish -a http://192.168.0.249/scratch/winxp.img -i -v where: (a) ~/d/libguestfs contains libguestfs from git (b) ~/d/curl contains curl-7_30_0-147-gae26ee3 (c) http://192.168.0.249/scratch/winxp.img is a Windows XP image (d) qemu.wrapper is: ---------------------------------------------------------------------- #!/bin/sh - qemudir=3D/home/rjones/d/qemu exec $qemudir/x86_64-softmmu/qemu-system-x86_64 -L $qemudir/pc-bios "$@" ---------------------------------------------------------------------- Rich. --=20 Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rj= ones Fedora Windows cross-compiler. Compile Windows programs, test, and build Windows installers. Over 100 libraries supported. http://fedoraproject.org/wiki/MinGW