qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Richard W.M. Jones" <rjones@redhat.com>
To: Fam Zheng <famz@redhat.com>
Cc: kwolf@redhat.com, jcody@redhat.com, qemu-devel@nongnu.org,
	stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH v3 00/10] curl: fix curl read
Date: Mon, 20 May 2013 09:41:06 +0100	[thread overview]
Message-ID: <20130520084106.GC18311@redhat.com> (raw)
In-Reply-To: <1369033424-14594-1-git-send-email-famz@redhat.com>

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 internal
> states. 

I tried this, but it segfaults:

Program terminated with signal 11, Segmentation fault.
#0  curl_read_cb (ptr=<optimized out>, size=<optimized out>, 
    nmemb=<optimized out>, opaque=0x7f09d2975340) at block/curl.c:240
240         size_t aio_base = 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.fc18.x86_64 cryptopp-5.6.2-2.fc18.x86_64 cyrus-sasl-lib-2.1.25-2.fc18.x86_64 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.x86_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.x86_64
(gdb) bt
#0  curl_read_cb (ptr=<optimized out>, size=<optimized out>, 
    nmemb=<optimized out>, opaque=0x7f09d2975340) at block/curl.c:240
#1  0x00007f09cc7ee0e8 in Curl_client_write (conn=conn@entry=0x7f09d2996c80, 
    type=type@entry=1, ptr=0x7f09d298e8f0 "", len=2046) at sendf.c:449
#2  0x00007f09cc801c52 in readwrite_data (done=0x7ffff70dac77, 
    didwhat=<synthetic pointer>, k=0x7f09d298e080, conn=0x7f09d2996c80, data=
    0x7f09d298e050) at transfer.c:705
#3  Curl_readwrite (conn=0x7f09d2996c80, done=done@entry=0x7ffff70dac77)
    at transfer.c:1023
#4  0x00007f09cc80a4d2 in multi_runsingle (multi=multi@entry=0x7f09d29815b0, 
    now=..., easy=0x7f09d29756a0) at multi.c:1430
#5  0x00007f09cc80b559 in multi_socket (multi=multi@entry=0x7f09d29815b0, 
    checkall=checkall@entry=false, s=10, ev_bitmask=3, 
    running_handles=running_handles@entry=0x7ffff70dad88) at multi.c:2140
#6  0x00007f09cc80b64f in curl_multi_socket_action (multi_handle=
    0x7f09d29815b0, s=<optimized out>, ev_bitmask=<optimized out>, 
    running_handles=running_handles@entry=0x7ffff70dad88) at multi.c:2258
#7  0x00007f09d0077043 in curl_fd_handler (arg=0x7f09d2997410)
    at block/curl.c:265
#8  0x00007f09d005abbb in aio_dispatch (ctx=0x7f09d296e3f0, ctx=0x7f09d296e3f0)
    at aio-posix.c:149
#9  0x00007f09d005b0b1 in aio_poll (ctx=0x7f09d296e3f0, 
    blocking=blocking@entry=true) at aio-posix.c:248
#10 0x00007f09d019f9c9 in qemu_aio_wait () at main-loop.c:484
#11 0x00007f09d0070b65 in bdrv_rwv_co (bs=bs@entry=0x7f09d29746e0, 
    sector_num=sector_num@entry=0, qiov=qiov@entry=0x7ffff70daea0, 
    is_write=is_write@entry=false) at block.c:2215
#12 0x00007f09d0070c90 in bdrv_rw_co (is_write=false, 
    nb_sectors=<optimized out>, buf=<optimized out>, sector_num=0, bs=
    0x7f09d29746e0) at block.c:2234
#13 bdrv_read (bs=bs@entry=0x7f09d29746e0, sector_num=sector_num@entry=0, 
    buf=buf@entry=0x7ffff70db190 "3\300\216м", nb_sectors=nb_sectors@entry=4)
    at block.c:2241
#14 0x00007f09d0070d82 in bdrv_pread (bs=0x7f09d29746e0, offset=offset@entry=
    0, buf=buf@entry=0x7ffff70db190, count1=count1@entry=2048) at block.c:2303
#15 0x00007f09d0071460 in find_image_format (pdrv=<synthetic pointer>, 
    filename=0x7f09d2971b40 "http://192.168.0.249/scratch/winxp.img", 
    bs=<optimized out>) at block.c:533
#16 bdrv_open (bs=0x7f09d2971cc0, filename=filename@entry=
    0x7f09d2971b40 "http://192.168.0.249/scratch/winxp.img", options=
    0x7f09d29726a0, options@entry=0x7f09d2970980, flags=8258, drv=drv@entry=
    0x0) at block.c:1047
#17 0x00007f09d00a4093 in drive_init (all_opts=0x7f09d296d420, 
    block_default_type=IF_NONE) at blockdev.c:698
#18 0x00007f09d020e54b in drive_init_func (opts=<optimized out>, 
    opaque=<optimized out>) at vl.c:1117
#19 0x00007f09d03386f3 in qemu_opts_foreach (list=<optimized out>, 
    func=func@entry=0x7f09d020e530 <drive_init_func>, opaque=opaque@entry=
    0x7f09d07318f0 <pc_i440fx_machine_v1_5+48>, 
    abort_on_failure=abort_on_failure@entry=1) at util/qemu-option.c:1162
#20 0x00007f09d0055b89 in main (argc=<optimized out>, argv=<optimized out>, 
    envp=<optimized out>) at vl.c:4201

I am using qemu from git + your patches, and curl-7_30_0-147-gae26ee3.

	- - - -

A second, unrelated problem with the curl driver is to do with the way
it resolves hostnames.  I have a host which has IPv6 and IPv4 records
in DNS (ie. AAAA and A).  For some reason the IPv6 address isn't
reachable, but this doesn't matter for most clients since they fall
back to using the IPv4 address after a brief timeout.  However the
qemu curl driver does *not* fallback.  It gives up after the IPv6
address fails.

It'd be nice if this problem could be fixed too.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
virt-top is 'top' for virtual machines.  Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top

  parent reply	other threads:[~2013-05-20  8:41 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-20  7:03 [Qemu-devel] [PATCH v3 00/10] curl: fix curl read Fam Zheng
2013-05-20  7:03 ` [Qemu-devel] [PATCH v3 01/10] curl: introduce CURLSockInfo to BDRVCURLState Fam Zheng
2013-05-20  7:03 ` [Qemu-devel] [PATCH v3 02/10] curl: change magic number to sizeof Fam Zheng
2013-05-20  7:03 ` [Qemu-devel] [PATCH v3 03/10] curl: change curl_multi_do to curl_fd_handler Fam Zheng
2013-05-20  7:03 ` [Qemu-devel] [PATCH v3 04/10] curl: fix curl_open Fam Zheng
2013-05-20  7:03 ` [Qemu-devel] [PATCH v3 05/10] curl: add timer to BDRVCURLState Fam Zheng
2013-05-20  7:03 ` [Qemu-devel] [PATCH v3 06/10] curl: introduce CURLDataCache Fam Zheng
2013-05-20  7:03 ` [Qemu-devel] [PATCH v3 07/10] curl: make use of CURLDataCache Fam Zheng
2013-05-20  7:03 ` [Qemu-devel] [PATCH v3 08/10] curl: use list to store CURLState Fam Zheng
2013-05-20  7:03 ` [Qemu-devel] [PATCH v3 09/10] curl: add cache quota Fam Zheng
2013-05-20  7:03 ` [Qemu-devel] [PATCH v3 10/10] curl: introduce ssl_no_cert runtime option Fam Zheng
2013-05-20  8:41 ` Richard W.M. Jones [this message]
2013-05-20  8:49   ` [Qemu-devel] [PATCH v3 00/10] curl: fix curl read Richard W.M. Jones
2013-05-21  1:54     ` Fam Zheng
2013-05-21  7:39       ` Richard W.M. Jones
2013-05-22  2:52         ` Fam Zheng

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=20130520084106.GC18311@redhat.com \
    --to=rjones@redhat.com \
    --cc=famz@redhat.com \
    --cc=jcody@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).