[Top][All Lists]

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

Re: [Qemu-devel] [PATCH v3 00/10] curl: fix curl read

From: Richard W.M. Jones
Subject: Re: [Qemu-devel] [PATCH v3 00/10] curl: fix curl read
Date: Mon, 20 May 2013 09:41:06 +0100
User-agent: Mutt/1.5.20 (2009-12-10)

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- 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 
(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 (address@hidden, 
    address@hidden, 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, address@hidden)
    at transfer.c:1023
#4  0x00007f09cc80a4d2 in multi_runsingle (address@hidden, 
    now=..., easy=0x7f09d29756a0) at multi.c:1430
#5  0x00007f09cc80b559 in multi_socket (address@hidden, 
    address@hidden, s=10, ev_bitmask=3, 
    address@hidden) at multi.c:2140
#6  0x00007f09cc80b64f in curl_multi_socket_action (multi_handle=
    0x7f09d29815b0, s=<optimized out>, ev_bitmask=<optimized out>, 
    address@hidden) 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, 
    address@hidden) at aio-posix.c:248
#10 0x00007f09d019f9c9 in qemu_aio_wait () at main-loop.c:484
#11 0x00007f09d0070b65 in bdrv_rwv_co (address@hidden, 
    address@hidden, address@hidden, 
    address@hidden) 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 (address@hidden, address@hidden, 
    address@hidden "3\300\216ΠΌ", address@hidden)
    at block.c:2241
#14 0x00007f09d0070d82 in bdrv_pread (bs=0x7f09d29746e0, address@hidden
    0, address@hidden, address@hidden) at block.c:2303
#15 0x00007f09d0071460 in find_image_format (pdrv=<synthetic pointer>, 
    filename=0x7f09d2971b40 "";, 
    bs=<optimized out>) at block.c:533
#16 bdrv_open (bs=0x7f09d2971cc0, address@hidden
    0x7f09d2971b40 "";, options=
    0x7f09d29726a0, address@hidden, flags=8258, address@hidden
    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>, 
    address@hidden <drive_init_func>, address@hidden
    0x7f09d07318f0 <pc_i440fx_machine_v1_5+48>, 
    address@hidden) 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.


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.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]