* [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI -> Bad ram pointer @ 2012-10-29 14:09 Peter Lieven 2012-10-30 8:32 ` Stefan Hajnoczi 0 siblings, 1 reply; 15+ messages in thread From: Peter Lieven @ 2012-10-29 14:09 UTC (permalink / raw) To: qemu-devel@nongnu.org, kvm@vger.kernel.org; +Cc: ronnie sahlberg [-- Attachment #1: Type: text/plain, Size: 4848 bytes --] Hi, If I try to Install Ubuntu 12.04 LTS / 12.10 64-bit on a virtio storage backend that supports iSCSI qemu-kvm crashes reliably with the following error: Bad ram pointer 0x3039303620008000 This happens directly after the confirmation of the Timezone before the Disk is partitioned. If I specify -global virtio-blk-pci.scsi=off in the cmdline this does not happen. Here is a stack trace: Thread 1 (Thread 0x7ffff7fee700 (LWP 8226)): #0 0x00007ffff63c0a10 in abort () from /lib/x86_64-linux-gnu/libc.so.6 No symbol table info available. #1 <https://github.com/sahlberg/libiscsi/issues/1> 0x00005555557b751d in qemu_ram_addr_from_host_nofail ( ptr=0x3039303620008000) at /usr/src/qemu-kvm-1.2.0/exec.c:2835 ram_addr = 0 #2 <https://github.com/sahlberg/libiscsi/issues/2> 0x00005555557b9177 in cpu_physical_memory_unmap ( buffer=0x3039303620008000, len=4986663671065686081, is_write=1, access_len=1) at /usr/src/qemu-kvm-1.2.0/exec.c:3645 addr1 = 93825009559312 #3 <https://github.com/sahlberg/libiscsi/issues/3> 0x000055555580a9ca in virtqueue_fill (vq=0x5555565da710, elem=0x555556722238, len=1, idx=0) at /usr/src/qemu-kvm-1.2.0/hw/virtio.c:240 size = 1 offset = 0 i = 0 #4 <https://github.com/sahlberg/libiscsi/issues/4> 0x000055555580abf0 in virtqueue_push (vq=0x5555565da710, elem=0x555556722238, len=1) at /usr/src/qemu-kvm-1.2.0/hw/virtio.c:276 No locals. #5 <https://github.com/sahlberg/libiscsi/issues/5> 0x0000555555800952 in virtio_blk_req_complete (req=0x555556722230, status=0) at /usr/src/qemu-kvm-1.2.0/hw/virtio-blk.c:62 s = 0x5555565da640 #6 <https://github.com/sahlberg/libiscsi/issues/6> 0x00005555558010bf in virtio_blk_handle_scsi (req=0x555556722230) at /usr/src/qemu-kvm-1.2.0/hw/virtio-blk.c:261 ret = 0 i = 1 status = 0 hdr = {interface_id = 83, dxfer_direction = -3, cmd_len = 6 '\006', mx_sb_len = 96 '`', iovec_count = 1, dxfer_len = 56, dxferp = 0x555556726248, cmdp = 0x2aab24b6c838 "\022\001\200", sbp = 0x2aab1d677c30 "", timeout = 0, flags = 0, pack_id = 0, usr_ptr = 0x0, status = 0 '\000', masked_status = 0 '\000', msg_status = 0 '\000', sb_len_wr = 0 '\000', host_status = 0, driver_status = 0, resid = 0, duration = 0, info = 0} #7 <https://github.com/sahlberg/libiscsi/issues/7> 0x0000555555801724 in virtio_blk_handle_request (req=0x555556722230, mrb=0x7fffffffd9f0) at /usr/src/qemu-kvm-1.2.0/hw/virtio-blk.c:393 type = 2 #8 <https://github.com/sahlberg/libiscsi/issues/8> 0x00005555558018c3 in virtio_blk_handle_output (vdev=0x5555565da640, vq=0x5555565da710) at /usr/src/qemu-kvm-1.2.0/hw/virtio-blk.c:426 s = 0x5555565da640 req = 0x555556722230 mrb = {blkreq = {{sector = 0, nb_sectors = 0, qiov = 0x0, cb = 0, opaque = 0x0, error = 0} }, num_writes = 0} #9 <https://github.com/sahlberg/libiscsi/issues/9> 0x000055555580bd81 in virtio_queue_notify_vq (vq=0x5555565da710) at /usr/src/qemu-kvm-1.2.0/hw/virtio.c:648 vdev = 0x5555565da640 #10 <https://github.com/sahlberg/libiscsi/issues/10> 0x000055555580d2ff in virtio_queue_host_notifier_read (n=0x5555565da75c) at /usr/src/qemu-kvm-1.2.0/hw/virtio.c:1020 vq = 0x5555565da710 #11 <https://github.com/sahlberg/libiscsi/issues/11> 0x000055555565a47e in qemu_iohandler_poll (readfds=0x555556073160, writefds=0x5555560731e0, xfds=0x555556073260, ret=1) at iohandler.c:122 pioh = 0x555556541290 ioh = 0x7ffff0000e70 #12 <https://github.com/sahlberg/libiscsi/issues/12> 0x000055555572b742 in main_loop_wait (nonblocking=0) at main-loop.c:497 ret = 1 timeout = 4294967295 #13 <https://github.com/sahlberg/libiscsi/issues/13> 0x00005555557235e2 in main_loop () at /usr/src/qemu-kvm-1.2.0/vl.c:1643 nonblocking = false last_io = 1 #14 <https://github.com/sahlberg/libiscsi/issues/14> 0x000055555572a21c in main (argc=42, argv=0x7fffffffe548, envp=0x7fffffffe6a0) at /usr/src/qemu-kvm-1.2.0/vl.c:3790 i = 64 snapshot = 0 linux_boot = 0 icount_option = 0x0 initrd_filename = 0x0 kernel_filename = 0x0 kernel_cmdline = 0x5555558d442a "" boot_devices = "dc", '\000' ds = 0x5555565465a0 dcl = 0x0 cyls = 0 heads = 0 secs = 0 translation = 0 hda_opts = 0x0 opts = 0x55555650f4b0 machine_opts = 0x55555650fcb0 olist = 0x5780f638f2e0 optind = 42 optarg = 0x7fffffffebd9 "cirrus" loadvm = 0x0 machine = 0x555555c66780 cpu_model = 0x7fffffffeb5b "host,+x2apic,model_id=Intel(R) Xeon(R) CPU", ' ' , "L5640 @ 2.27GHz,-tsc" vga_model = 0x7fffffffebd9 "cirrus" pid_file = 0x7fffffffeb1a "/var/run/qemu/vm-279.pid" incoming = 0x0 show_vnc_port = 0 defconfig = true userconfig = true log_mask = 0x0 log_file = 0x0 mem_trace = {malloc = 0x55555572683e , realloc = 0x555555726896 , free = 0x5555557268fd , calloc = 0, try_malloc = 0, try_realloc = 0} trace_events = 0x0 trace_file = 0x0 Is this a regression in qemu-kvm. I remember there where some modifications regarding SCSI passthru lately. Maybe there was a problem introduced with this. BR, Peter [-- Attachment #2: Type: text/html, Size: 7159 bytes --] ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI -> Bad ram pointer 2012-10-29 14:09 [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI -> Bad ram pointer Peter Lieven @ 2012-10-30 8:32 ` Stefan Hajnoczi 2012-10-30 9:43 ` [Qemu-devel] Ubuntu/Debian Installer + Virtio-BLK " Peter Lieven 2012-10-30 15:56 ` [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI " Peter Lieven 0 siblings, 2 replies; 15+ messages in thread From: Stefan Hajnoczi @ 2012-10-30 8:32 UTC (permalink / raw) To: Peter Lieven; +Cc: ronnie sahlberg, qemu-devel@nongnu.org, kvm@vger.kernel.org On Mon, Oct 29, 2012 at 03:09:37PM +0100, Peter Lieven wrote: > Hi, Bug subject should be virtio-blk, not virtio-scsi. virtio-scsi is a different virtio device type from virtoi-blk and is not present in the backtrace you posted. Sounds pedantic but I want to make sure this gets chalked up against the right device :). > If I try to Install Ubuntu 12.04 LTS / 12.10 64-bit on a virtio > storage backend that supports iSCSI > qemu-kvm crashes reliably with the following error: Are you using vanilla qemu-kvm-1.2.0 or are there patches applied? Have you tried qemu-kvm.git/master? Have you tried a local raw disk image to check whether libiscsi is involved? > Bad ram pointer 0x3039303620008000 > > This happens directly after the confirmation of the Timezone before > the Disk is partitioned. > > If I specify -global virtio-blk-pci.scsi=off in the cmdline this > does not happen. > > Here is a stack trace: > > Thread 1 (Thread 0x7ffff7fee700 (LWP 8226)): > #0 0x00007ffff63c0a10 in abort () from /lib/x86_64-linux-gnu/libc.so.6 > No symbol table info available. > #1 <https://github.com/sahlberg/libiscsi/issues/1> > 0x00005555557b751d in qemu_ram_addr_from_host_nofail ( > ptr=0x3039303620008000) at /usr/src/qemu-kvm-1.2.0/exec.c:2835 > ram_addr = 0 > #2 <https://github.com/sahlberg/libiscsi/issues/2> > 0x00005555557b9177 in cpu_physical_memory_unmap ( > buffer=0x3039303620008000, len=4986663671065686081, is_write=1, > access_len=1) at /usr/src/qemu-kvm-1.2.0/exec.c:3645 buffer and len are ASCII junk. It appears to be hex digits and it's not clear where they come from. It would be interesting to print *elem one stack frame up in #3 virtqueue_fill() to show the iovecs and in/out counts. > addr1 = 93825009559312 > #3 <https://github.com/sahlberg/libiscsi/issues/3> > 0x000055555580a9ca in virtqueue_fill (vq=0x5555565da710, > elem=0x555556722238, len=1, idx=0) > at /usr/src/qemu-kvm-1.2.0/hw/virtio.c:240 > size = 1 > offset = 0 > i = 0 Stefan ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Qemu-devel] Ubuntu/Debian Installer + Virtio-BLK -> Bad ram pointer 2012-10-30 8:32 ` Stefan Hajnoczi @ 2012-10-30 9:43 ` Peter Lieven 2012-10-30 15:56 ` [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI " Peter Lieven 1 sibling, 0 replies; 15+ messages in thread From: Peter Lieven @ 2012-10-30 9:43 UTC (permalink / raw) To: Stefan Hajnoczi Cc: ronnie sahlberg, qemu-devel@nongnu.org, kvm@vger.kernel.org On 30.10.2012 09:32, Stefan Hajnoczi wrote: > On Mon, Oct 29, 2012 at 03:09:37PM +0100, Peter Lieven wrote: >> Hi, > Bug subject should be virtio-blk, not virtio-scsi. virtio-scsi is a > different virtio device type from virtoi-blk and is not present in the > backtrace you posted. you are right, sorry for that. > > Sounds pedantic but I want to make sure this gets chalked up against the > right device :). > >> If I try to Install Ubuntu 12.04 LTS / 12.10 64-bit on a virtio >> storage backend that supports iSCSI >> qemu-kvm crashes reliably with the following error: > Are you using vanilla qemu-kvm-1.2.0 or are there patches applied? I use vanilla qemu-kvm 1.2.0 except for one virtio-blk related patch (CVE-2011-4127): http://git.kernel.org/?p=virt/kvm/qemu-kvm.git;a=commit;h=1ba1f2e319afdcb485963cd3f426fdffd1b725f2 that for some reason did not made it into qemu-kvm 1.2.0 and two aio related patchs: http://git.kernel.org/?p=virt/kvm/qemu-kvm.git;a=commit;h=00f78533326c5ba2e62fafada16655aa558a5520 http://git.kernel.org/?p=virt/kvm/qemu-kvm.git;a=commit;h=2db2bfc0ccac5fd68dbf0ceb70fbc372c5d8a8c7 this is why I can circumvent the issue with scsi=off i guess. > > Have you tried qemu-kvm.git/master? not yet. > > Have you tried a local raw disk image to check whether libiscsi is > involved? I have, here it does not happen. For a raw device scsi is scsi=off, isn't it? > >> Bad ram pointer 0x3039303620008000 >> >> This happens directly after the confirmation of the Timezone before >> the Disk is partitioned. >> >> If I specify -global virtio-blk-pci.scsi=off in the cmdline this >> does not happen. >> >> Here is a stack trace: >> >> Thread 1 (Thread 0x7ffff7fee700 (LWP 8226)): >> #0 0x00007ffff63c0a10 in abort () from /lib/x86_64-linux-gnu/libc.so.6 >> No symbol table info available. >> #1 <https://github.com/sahlberg/libiscsi/issues/1> >> 0x00005555557b751d in qemu_ram_addr_from_host_nofail ( >> ptr=0x3039303620008000) at /usr/src/qemu-kvm-1.2.0/exec.c:2835 >> ram_addr = 0 >> #2 <https://github.com/sahlberg/libiscsi/issues/2> >> 0x00005555557b9177 in cpu_physical_memory_unmap ( >> buffer=0x3039303620008000, len=4986663671065686081, is_write=1, >> access_len=1) at /usr/src/qemu-kvm-1.2.0/exec.c:3645 > buffer and len are ASCII junk. It appears to be hex digits and it's not > clear where they come from. > > It would be interesting to print *elem one stack frame up in #3 > virtqueue_fill() to show the iovecs and in/out counts. I will collect that info for you. Peter ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI -> Bad ram pointer 2012-10-30 8:32 ` Stefan Hajnoczi 2012-10-30 9:43 ` [Qemu-devel] Ubuntu/Debian Installer + Virtio-BLK " Peter Lieven @ 2012-10-30 15:56 ` Peter Lieven 2012-10-30 18:27 ` Stefan Hajnoczi 1 sibling, 1 reply; 15+ messages in thread From: Peter Lieven @ 2012-10-30 15:56 UTC (permalink / raw) To: Stefan Hajnoczi Cc: ronnie sahlberg, qemu-devel@nongnu.org, kvm@vger.kernel.org On 30.10.2012 09:32, Stefan Hajnoczi wrote: > On Mon, Oct 29, 2012 at 03:09:37PM +0100, Peter Lieven wrote: >> Hi, > Bug subject should be virtio-blk, not virtio-scsi. virtio-scsi is a > different virtio device type from virtoi-blk and is not present in the > backtrace you posted. > > Sounds pedantic but I want to make sure this gets chalked up against the > right device :). > >> If I try to Install Ubuntu 12.04 LTS / 12.10 64-bit on a virtio >> storage backend that supports iSCSI >> qemu-kvm crashes reliably with the following error: > Are you using vanilla qemu-kvm-1.2.0 or are there patches applied? > > Have you tried qemu-kvm.git/master? > > Have you tried a local raw disk image to check whether libiscsi is > involved? > >> Bad ram pointer 0x3039303620008000 >> >> This happens directly after the confirmation of the Timezone before >> the Disk is partitioned. >> >> If I specify -global virtio-blk-pci.scsi=off in the cmdline this >> does not happen. >> >> Here is a stack trace: >> >> Thread 1 (Thread 0x7ffff7fee700 (LWP 8226)): >> #0 0x00007ffff63c0a10 in abort () from /lib/x86_64-linux-gnu/libc.so.6 >> No symbol table info available. >> #1 <https://github.com/sahlberg/libiscsi/issues/1> >> 0x00005555557b751d in qemu_ram_addr_from_host_nofail ( >> ptr=0x3039303620008000) at /usr/src/qemu-kvm-1.2.0/exec.c:2835 >> ram_addr = 0 >> #2 <https://github.com/sahlberg/libiscsi/issues/2> >> 0x00005555557b9177 in cpu_physical_memory_unmap ( >> buffer=0x3039303620008000, len=4986663671065686081, is_write=1, >> access_len=1) at /usr/src/qemu-kvm-1.2.0/exec.c:3645 > buffer and len are ASCII junk. It appears to be hex digits and it's not > clear where they come from. > > It would be interesting to print *elem one stack frame up in #3 > virtqueue_fill() to show the iovecs and in/out counts. (gdb) print *elem $6 = {index = 3, out_num = 2, in_num = 4, in_addr = {1914920960, 1916656688, 2024130072, 2024130088, 0 <repeats 508 times>, 4129, 93825009696000, 140737328183160, 0 <repeats 509 times>}, out_addr = {2024130056, 2038414056, 0, 8256, 4128, 93824999311936, 0, 3, 0 <repeats 512 times>, 12385, 93825009696000, 140737328183160, 0 <repeats 501 times>}, in_sg = {{ iov_base = 0x3039303620008000, iov_len = 4986663671065686081}, { iov_base = 0x3830384533334635, iov_len = 3544389261899019573}, { iov_base = 0x2aab32443039, iov_len = 16}, {iov_base = 0x2aab2365c628, iov_len = 1}, {iov_base = 0x0, iov_len = 0}, {iov_base = 0x0, iov_len = 0}, {iov_base = 0x2041, iov_len = 93825010788016}, { iov_base = 0x7ffff673f778, iov_len = 0}, {iov_base = 0x0, iov_len = 0} <repeats 256 times>, {iov_base = 0x1021, iov_len = 93825010788016}, {iov_base = 0x7ffff673f778, iov_len = 0}, { iov_base = 0x0, iov_len = 0} <repeats 255 times>, {iov_base = 0x0, iov_len = 24768}, {iov_base = 0x1020, iov_len = 93824999311936}, { iov_base = 0x0, iov_len = 2}, {iov_base = 0x0, iov_len = 0} <repeats 256 times>, {iov_base = 0x1021, iov_len = 93825009696000}, {iov_base = 0x7ffff673f778, iov_len = 0}, { iov_base = 0x0, iov_len = 0} <repeats 242 times>}, out_sg = {{ iov_base = 0x2aab2365c608, iov_len = 16}, {iov_base = 0x2aab243fbae8, iov_len = 6}, {iov_base = 0x0, iov_len = 0} <repeats 11 times>, { iov_base = 0x0, iov_len = 33024}, {iov_base = 0x30, iov_len = 93825010821424}, {iov_base = 0x55555670d7a0, iov_len = 0}, { iov_base = 0x55555670cbb0, iov_len = 0}, {iov_base = 0x71, iov_len = 93825008729792}, {iov_base = 0x55555670e960, iov_len = 0}, { iov_base = 0x31, iov_len = 140737328183192}, {iov_base = 0x7ffff673f798, iov_len = 0}, {iov_base = 0x555556711e20, iov_len = 80}, { iov_base = 0x20, iov_len = 93825010821584}, {iov_base = 0x0, iov_len = 33184}, {iov_base = 0x30, iov_len = 93825010821536}, { iov_base = 0x55555670e840, iov_len = 0}, {iov_base = 0x55555670e1b0, iov_len = 0}, {iov_base = 0x41, iov_len = 93825010821584}, { iov_base = 0x55555670eb20, iov_len = 32}, {iov_base = 0x20, iov_len = 93825010821920}, {iov_base = 0x0, iov_len = 33296}, { iov_base = 0x30, iov_len = 93825010821872}, {iov_base = 0x55555670e8b0, iov_len = 0}, {iov_base = 0x55555670dc68, iov_len = 0}, { iov_base = 0x191, iov_len = 93825009696736}, {iov_base = 0x55555670eb20, iov_len = 0}, {iov_base = 0x21, iov_len = 93825010826352}, { iov_base = 0x55555670e880, iov_len = 64}, {iov_base = 0x30, iov_len = 93825010821200}, {iov_base = 0x55555670e920, iov_len = 0}, { iov_base = 0x55555670e5c8, iov_len = 0}, {iov_base = 0x41, iov_len = 93825008729792}, {iov_base = 0x55555670e9d0, iov_len = 32}, { iov_base = 0x20, iov_len = 93825010821696}, {iov_base = 0x0, iov_len = 176}, {iov_base = 0x30, iov_len = 93825010821648}, { iov_base = 0x55555670e990, iov_len = 0}, {iov_base = 0x55555670e080, iov_len = 0}, {iov_base = 0x41, iov_len = 93825008729792}, { iov_base = 0x55555670eb20, iov_len = 32}, {iov_base = 0x20, iov_len = 93825010822032}, {iov_base = 0x0, iov_len = 288}, { iov_base = 0x30, iov_len = 93825010821984}, {iov_base = 0x55555670ea00, iov_len = 0}, {iov_base = 0x55555670e000, iov_len = 0}, { iov_base = 0x41, iov_len = 93825010821808}, {iov_base = 0x555556602590, iov_len = 32}, {iov_base = 0x20, iov_len = 93825009373648}, { iov_base = 0x0, iov_len = 33744}, {iov_base = 0x30, iov_len = 93825009373680}, {iov_base = 0x55555670ea70, iov_len = 0}, { iov_base = 0x55555670da18, iov_len = 0}, {iov_base = 0x17271, iov_len = 93825009696736}, {iov_base = 0x7ffff673f778, iov_len = 0}, { iov_base = 0x0, iov_len = 93825010821920}, {iov_base = 0x55555670ec00, iov_len = 64}, {iov_base = 0x30, iov_len = 93825010822096}, { iov_base = 0x55555670eae0, iov_len = 0}, {iov_base = 0x55555670da48, iov_len = 0}, {iov_base = 0xb1, iov_len = 93825009696736}, { iov_base = 0x5555567066b0, iov_len = 0}, {iov_base = 0x21, iov_len = 93825010822032}, {iov_base = 0x55555670e8f0, iov_len = 64}, { iov_base = 0x30, iov_len = 93825010821312}, {iov_base = 0x55555670eb50, iov_len = 0}, {iov_base = 0x55555670df90, iov_len = 0}, { iov_base = 0x41, iov_len = 93825008729792}, {iov_base = 0x55555670eab0, iov_len = 32}, {iov_base = 0x20, iov_len = 93825010821808}, { iov_base = 0x0, iov_len = 288}, {iov_base = 0x30, iov_len = 93825010821760}, {iov_base = 0x55555670ebc0, iov_len = 0}, { iov_base = 0x55555670da40, iov_len = 0}, {iov_base = 0x17121, iov_len = 93825009372400}, {iov_base = 0x5555565fbfe0, iov_len = 0}, { iov_base = 0x0, iov_len = 140737328184728}, {iov_base = 0x5555565f9ea0, iov_len = 0}, {iov_base = 0x0, iov_len = 0} <repeats 255 times>, { iov_base = 0x0, iov_len = 4160}, {iov_base = 0x30, iov_len = 93825009721504}, {iov_base = 0x0, iov_len = 93825010826368}, { iov_base = 0x3, iov_len = 3}, {iov_base = 0x160b1, iov_len = 93825009372400}, {iov_base = 0x7ffff673f778, iov_len = 0}, { iov_base = 0x0, iov_len = 93825010826304}, {iov_base = 0x55555670fc50, iov_len = 0}, {iov_base = 0x55555670edd0, iov_len = 0}, { iov_base = 0x16061, iov_len = 93825009372400}, { iov_base = 0x7ffff673f778, iov_len = 0}, {iov_base = 0x0, iov_len = 93825009688224}, {iov_base = 0x7ffff673fd98, iov_len = 93825010826464}, {iov_base = 0x55555670fce0, iov_len = 0}, { iov_base = 0x0, iov_len = 0} <repeats 254 times>, {iov_base = 0x0, iov_len = 4160}, {iov_base = 0x30, iov_len = 93825010830976}, { iov_base = 0x55555670fcf0, iov_len = 0}, {iov_base = 0x55555670f060, iov_len = 0}, {iov_base = 0x71, iov_len = 93825008729792}, { iov_base = 0x555556710eb0, iov_len = 0}, {iov_base = 0x31, iov_len = 93825010821120}, {iov_base = 0x7ffff673f798, iov_len = 93825010821136}, {iov_base = 0x5555565fbbe8, iov_len = 80}, { iov_base = 0x20, iov_len = 93825010831136}, {iov_base = 0x0, iov_len = 4320}, {iov_base = 0x30, iov_len = 93825010831088}, { iov_base = 0x555556710d90, iov_len = 0}, {iov_base = 0x555556710700, iov_len = 0}, {iov_base = 0x41, iov_len = 93825010831136}, { iov_base = 0x555556711070, iov_len = 32}, {iov_base = 0x20, iov_len = 93825010831472}, {iov_base = 0x0, iov_len = 4432}, { iov_base = 0x30, iov_len = 93825010831424}, {iov_base = 0x555556710e00, iov_len = 0}, {iov_base = 0x5555567101b8, iov_len = 0}, { iov_base = 0x191, iov_len = 93825009372400}, {iov_base = 0x555556711070, iov_len = 0}, {iov_base = 0x21, iov_len = 93825009374992}, { iov_base = 0x555556710dd0, iov_len = 64}, {iov_base = 0x30, iov_len = 93825010830752}, {iov_base = 0x555556710e70, iov_len = 0}, { iov_base = 0x555556710b18, iov_len = 0}, {iov_base = 0x41, iov_len = 93825008729792}, {iov_base = 0x555556710f20, iov_len = 32}, { iov_base = 0x20, iov_len = 93825010831248}, {iov_base = 0x0, iov_len = 176}, {iov_base = 0x30, iov_len = 93825010831200}, { iov_base = 0x555556710ee0, iov_len = 0}, {iov_base = 0x5555567105d0, iov_len = 0}, {iov_base = 0x41, iov_len = 93825008729792}, { iov_base = 0x555556711070, iov_len = 32}, {iov_base = 0x20, iov_len = 93825010831584}, {iov_base = 0x0, iov_len = 288}, { iov_base = 0x30, iov_len = 93825010831536}, {iov_base = 0x555556710f50, iov_len = 0}, {iov_base = 0x555556710550, iov_len = 0}, { iov_base = 0x41, iov_len = 93825010831360}, {iov_base = 0x55555670fc70, iov_len = 32}, {iov_base = 0x20, iov_len = 93825010826432}, { iov_base = 0x0, iov_len = 4880}, {iov_base = 0x30, iov_len = 93825010826384}, {iov_base = 0x555556710fc0, iov_len = 0}, { iov_base = 0x55555670ff68, iov_len = 0}, {iov_base = 0x14d21, iov_len = 93825009372400}, {iov_base = 0x7ffff673f778, iov_len = 0}, { iov_base = 0x0, iov_len = 93825010831472}, {iov_base = 0x555556711150, iov_len = 64}, {iov_base = 0x30, iov_len = 93825010831648}, { iov_base = 0x555556711030, iov_len = 0}, {iov_base = 0x55555670ff98, iov_len = 0}, {iov_base = 0xb1, iov_len = 93825009372400}, { iov_base = 0x55555670fcc0, iov_len = 0}, {iov_base = 0x21, iov_len = 93825010831584}, {iov_base = 0x555556710e40, iov_len = 64}, { iov_base = 0x30, iov_len = 93825010830864}, {iov_base = 0x5555567110a0, iov_len = 0}, {iov_base = 0x5555567104e0, iov_len = 0}, { iov_base = 0x41, iov_len = 93825010831696}, {iov_base = 0x555556711000, iov_len = 32}, {iov_base = 0x20, iov_len = 93825010831360}, { iov_base = 0x0, iov_len = 288}, {iov_base = 0x30, iov_len = 93825010831312}, {iov_base = 0x555556711110, iov_len = 0}, { iov_base = 0x55555670ff90, iov_len = 0}, {iov_base = 0x14bd1, iov_len = 93825008729792}, {iov_base = 0x55555670fc70, iov_len = 0}, { iov_base = 0x0, iov_len = 140737328185080}, {iov_base = 0x7ffff673fef8, iov_len = 93825010831728}, {iov_base = 0x555556711170, iov_len = 0}, { iov_base = 0x0, iov_len = 0} <repeats 255 times>...}} ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI -> Bad ram pointer 2012-10-30 15:56 ` [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI " Peter Lieven @ 2012-10-30 18:27 ` Stefan Hajnoczi 2012-10-30 19:37 ` Peter Lieven 2012-10-30 20:24 ` Peter Lieven 0 siblings, 2 replies; 15+ messages in thread From: Stefan Hajnoczi @ 2012-10-30 18:27 UTC (permalink / raw) To: Peter Lieven; +Cc: ronnie sahlberg, qemu-devel@nongnu.org, kvm@vger.kernel.org On Tue, Oct 30, 2012 at 4:56 PM, Peter Lieven <pl@dlhnet.de> wrote: > On 30.10.2012 09:32, Stefan Hajnoczi wrote: >> >> On Mon, Oct 29, 2012 at 03:09:37PM +0100, Peter Lieven wrote: >>> >>> Hi, >> >> Bug subject should be virtio-blk, not virtio-scsi. virtio-scsi is a >> different virtio device type from virtoi-blk and is not present in the >> backtrace you posted. >> >> Sounds pedantic but I want to make sure this gets chalked up against the >> right device :). >> >>> If I try to Install Ubuntu 12.04 LTS / 12.10 64-bit on a virtio >>> storage backend that supports iSCSI >>> qemu-kvm crashes reliably with the following error: >> >> Are you using vanilla qemu-kvm-1.2.0 or are there patches applied? >> >> Have you tried qemu-kvm.git/master? >> >> Have you tried a local raw disk image to check whether libiscsi is >> involved? >> >>> Bad ram pointer 0x3039303620008000 >>> >>> This happens directly after the confirmation of the Timezone before >>> the Disk is partitioned. >>> >>> If I specify -global virtio-blk-pci.scsi=off in the cmdline this >>> does not happen. >>> >>> Here is a stack trace: >>> >>> Thread 1 (Thread 0x7ffff7fee700 (LWP 8226)): >>> #0 0x00007ffff63c0a10 in abort () from /lib/x86_64-linux-gnu/libc.so.6 >>> No symbol table info available. >>> #1 <https://github.com/sahlberg/libiscsi/issues/1> >>> 0x00005555557b751d in qemu_ram_addr_from_host_nofail ( >>> ptr=0x3039303620008000) at /usr/src/qemu-kvm-1.2.0/exec.c:2835 >>> ram_addr = 0 >>> #2 <https://github.com/sahlberg/libiscsi/issues/2> >>> 0x00005555557b9177 in cpu_physical_memory_unmap ( >>> buffer=0x3039303620008000, len=4986663671065686081, is_write=1, >>> access_len=1) at /usr/src/qemu-kvm-1.2.0/exec.c:3645 >> >> buffer and len are ASCII junk. It appears to be hex digits and it's not >> clear where they come from. >> >> It would be interesting to print *elem one stack frame up in #3 >> virtqueue_fill() to show the iovecs and in/out counts. > > > (gdb) print *elem Great, thanks for providing this info: > $6 = {index = 3, out_num = 2, in_num = 4, in_addr = {1914920960, 1916656688, > 2024130072, 2024130088, 0 <repeats 508 times>, 4129, 93825009696000, > 140737328183160, 0 <repeats 509 times>}, out_addr = {2024130056, > 2038414056, 0, 8256, 4128, 93824999311936, 0, 3, 0 <repeats 512 times>, > 12385, 93825009696000, 140737328183160, 0 <repeats 501 times>}, Up to here everything is fine. >in_sg = > {{ > iov_base = 0x3039303620008000, iov_len = 4986663671065686081}, { > iov_base = 0x3830384533334635, iov_len = 3544389261899019573}, { The fields are bogus, in_sg has been overwritten with ASCII data. Unfortunately I don't see any hint of where this ASCII data came from yet. The hdr fields you provided in stack frame #6 show that in_sg was overwritten during or after the bdrv_ioctl() call. We pulled valid data out of the vring and mapped buffers correctly. But something is overwriting in_sg and when we complete the request we blow up due to the bogus values. Please post your full qemu-kvm command-line. Please also post the exact qemu-kvm version you are using. I can see it's based on qemu-kvm-1.2.0 but are there any patches applied (e.g. distro packages may carry patches so the full package version information would be useful)? Thanks, Stefan ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI -> Bad ram pointer 2012-10-30 18:27 ` Stefan Hajnoczi @ 2012-10-30 19:37 ` Peter Lieven 2012-10-30 21:09 ` ronnie sahlberg 2012-10-31 5:53 ` Stefan Hajnoczi 2012-10-30 20:24 ` Peter Lieven 1 sibling, 2 replies; 15+ messages in thread From: Peter Lieven @ 2012-10-30 19:37 UTC (permalink / raw) To: Stefan Hajnoczi Cc: ronnie sahlberg, qemu-devel@nongnu.org, kvm@vger.kernel.org Am 30.10.2012 19:27, schrieb Stefan Hajnoczi: > On Tue, Oct 30, 2012 at 4:56 PM, Peter Lieven <pl@dlhnet.de> wrote: >> On 30.10.2012 09:32, Stefan Hajnoczi wrote: >>> On Mon, Oct 29, 2012 at 03:09:37PM +0100, Peter Lieven wrote: >>>> Hi, >>> Bug subject should be virtio-blk, not virtio-scsi. virtio-scsi is a >>> different virtio device type from virtoi-blk and is not present in the >>> backtrace you posted. >>> >>> Sounds pedantic but I want to make sure this gets chalked up against the >>> right device :). >>> >>>> If I try to Install Ubuntu 12.04 LTS / 12.10 64-bit on a virtio >>>> storage backend that supports iSCSI >>>> qemu-kvm crashes reliably with the following error: >>> Are you using vanilla qemu-kvm-1.2.0 or are there patches applied? >>> >>> Have you tried qemu-kvm.git/master? >>> >>> Have you tried a local raw disk image to check whether libiscsi is >>> involved? >>> >>>> Bad ram pointer 0x3039303620008000 >>>> >>>> This happens directly after the confirmation of the Timezone before >>>> the Disk is partitioned. >>>> >>>> If I specify -global virtio-blk-pci.scsi=off in the cmdline this >>>> does not happen. >>>> >>>> Here is a stack trace: >>>> >>>> Thread 1 (Thread 0x7ffff7fee700 (LWP 8226)): >>>> #0 0x00007ffff63c0a10 in abort () from /lib/x86_64-linux-gnu/libc.so.6 >>>> No symbol table info available. >>>> #1 <https://github.com/sahlberg/libiscsi/issues/1> >>>> 0x00005555557b751d in qemu_ram_addr_from_host_nofail ( >>>> ptr=0x3039303620008000) at /usr/src/qemu-kvm-1.2.0/exec.c:2835 >>>> ram_addr = 0 >>>> #2 <https://github.com/sahlberg/libiscsi/issues/2> >>>> 0x00005555557b9177 in cpu_physical_memory_unmap ( >>>> buffer=0x3039303620008000, len=4986663671065686081, is_write=1, >>>> access_len=1) at /usr/src/qemu-kvm-1.2.0/exec.c:3645 >>> buffer and len are ASCII junk. It appears to be hex digits and it's not >>> clear where they come from. >>> >>> It would be interesting to print *elem one stack frame up in #3 >>> virtqueue_fill() to show the iovecs and in/out counts. >> >> (gdb) print *elem > Great, thanks for providing this info: > >> $6 = {index = 3, out_num = 2, in_num = 4, in_addr = {1914920960, 1916656688, >> 2024130072, 2024130088, 0 <repeats 508 times>, 4129, 93825009696000, >> 140737328183160, 0 <repeats 509 times>}, out_addr = {2024130056, >> 2038414056, 0, 8256, 4128, 93824999311936, 0, 3, 0 <repeats 512 times>, >> 12385, 93825009696000, 140737328183160, 0 <repeats 501 times>}, > Up to here everything is fine. > >> in_sg = >> {{ >> iov_base = 0x3039303620008000, iov_len = 4986663671065686081}, { >> iov_base = 0x3830384533334635, iov_len = 3544389261899019573}, { > The fields are bogus, in_sg has been overwritten with ASCII data. > Unfortunately I don't see any hint of where this ASCII data came from > yet. > > The hdr fields you provided in stack frame #6 show that in_sg was > overwritten during or after the bdrv_ioctl() call. We pulled valid > data out of the vring and mapped buffers correctly. But something is > overwriting in_sg and when we complete the request we blow up due to > the bogus values. Ok. What I have to mention. I've been testing with qemu-kvm 1.2.0 and libiscsi for a few weeks now. Its been very stable. The only thing it blows up is during the debian/ubuntu installer. Ubuntu itself for instance is running flawlessly. My guess is that the installer is probing for something. The installer itself also runs flawlessly when I disable scsi passthru with scsi=off. > > Please post your full qemu-kvm command-line. /usr/bin/qemu-kvm-1.2.0 -net tap,vlan=164,script=no,downscript=no,ifname=tap0 -net nic,vlan=164,model=e1000,macaddr=52:54:00:ff:01:35 -iscsi initiator-name=iqn.2005-03.org.virtual-core:0025b51f001c -drive format=iscsi,file=iscsi://172.21.200.56/iqn.2001-05.com.equallogic:0-8a0906-335f4e007-d29001a3355508e8-libiscsi-test-hd0/0,if=virtio,cache=none,aio=native -m 2048 -smp 2,sockets=1,cores=2,threads=1 -monitor tcp:0:4002,server,nowait -vnc :2 -qmp tcp:0:3002,server,nowait -name 'libiscsi-debug' -boot order=dc,menu=off -k de -pidfile /var/run/qemu/vm-280.pid -mem-path /hugepages -mem-prealloc -cpu host,+x2apic,model_id='Intel(R) Xeon(R) CPU L5640 @ 2.27GHz',-tsc -rtc base=utc -usb -usbdevice tablet -no-hpet -vga cirrus > > Please also post the exact qemu-kvm version you are using. I can see > it's based on qemu-kvm-1.2.0 but are there any patches applied (e.g. > distro packages may carry patches so the full package version > information would be useful)? I use vanilly qemu-kvm 1.2.0 with some cherry picked patches. I will retry with untouched qemu-kvm 1.2.0 and latest git tomorrow at latest. > > Thanks, > Stefan Thank you, too Peter ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI -> Bad ram pointer 2012-10-30 19:37 ` Peter Lieven @ 2012-10-30 21:09 ` ronnie sahlberg 2012-10-31 5:48 ` Stefan Hajnoczi 2012-10-31 5:53 ` Stefan Hajnoczi 1 sibling, 1 reply; 15+ messages in thread From: ronnie sahlberg @ 2012-10-30 21:09 UTC (permalink / raw) To: Peter Lieven; +Cc: Stefan Hajnoczi, qemu-devel@nongnu.org, kvm@vger.kernel.org But older distros/kernels work fine? Can you take a network trace? About half a year there was an issue where recent kernels had added support to start using new scsi opcodes, but the qemu functions that determine "which transfer direction is used for this opcode" had not yet been updated, so that the opcode was sent with the wrong transfer direction. That caused the guests memory to be overwritten and crash. I dont have (easy) access to the git tree right now, but it was a patch for the ATA_PASSTHROUGH command that fixed that. Could you take a network trace and check maybe this is something similar ? I.e. does the guest send an "unusual" scsi opcode just before the crash ? regards ronnie sahlberg On Tue, Oct 30, 2012 at 12:37 PM, Peter Lieven <pl@dlhnet.de> wrote: > Am 30.10.2012 19:27, schrieb Stefan Hajnoczi: > >> On Tue, Oct 30, 2012 at 4:56 PM, Peter Lieven <pl@dlhnet.de> wrote: >>> >>> On 30.10.2012 09:32, Stefan Hajnoczi wrote: >>>> >>>> On Mon, Oct 29, 2012 at 03:09:37PM +0100, Peter Lieven wrote: >>>>> >>>>> Hi, >>>> >>>> Bug subject should be virtio-blk, not virtio-scsi. virtio-scsi is a >>>> different virtio device type from virtoi-blk and is not present in the >>>> backtrace you posted. >>>> >>>> Sounds pedantic but I want to make sure this gets chalked up against the >>>> right device :). >>>> >>>>> If I try to Install Ubuntu 12.04 LTS / 12.10 64-bit on a virtio >>>>> storage backend that supports iSCSI >>>>> qemu-kvm crashes reliably with the following error: >>>> >>>> Are you using vanilla qemu-kvm-1.2.0 or are there patches applied? >>>> >>>> Have you tried qemu-kvm.git/master? >>>> >>>> Have you tried a local raw disk image to check whether libiscsi is >>>> involved? >>>> >>>>> Bad ram pointer 0x3039303620008000 >>>>> >>>>> This happens directly after the confirmation of the Timezone before >>>>> the Disk is partitioned. >>>>> >>>>> If I specify -global virtio-blk-pci.scsi=off in the cmdline this >>>>> does not happen. >>>>> >>>>> Here is a stack trace: >>>>> >>>>> Thread 1 (Thread 0x7ffff7fee700 (LWP 8226)): >>>>> #0 0x00007ffff63c0a10 in abort () from /lib/x86_64-linux-gnu/libc.so.6 >>>>> No symbol table info available. >>>>> #1 <https://github.com/sahlberg/libiscsi/issues/1> >>>>> 0x00005555557b751d in qemu_ram_addr_from_host_nofail ( >>>>> ptr=0x3039303620008000) at /usr/src/qemu-kvm-1.2.0/exec.c:2835 >>>>> ram_addr = 0 >>>>> #2 <https://github.com/sahlberg/libiscsi/issues/2> >>>>> 0x00005555557b9177 in cpu_physical_memory_unmap ( >>>>> buffer=0x3039303620008000, len=4986663671065686081, is_write=1, >>>>> access_len=1) at /usr/src/qemu-kvm-1.2.0/exec.c:3645 >>>> >>>> buffer and len are ASCII junk. It appears to be hex digits and it's not >>>> clear where they come from. >>>> >>>> It would be interesting to print *elem one stack frame up in #3 >>>> virtqueue_fill() to show the iovecs and in/out counts. >>> >>> >>> (gdb) print *elem >> >> Great, thanks for providing this info: >> >>> $6 = {index = 3, out_num = 2, in_num = 4, in_addr = {1914920960, >>> 1916656688, >>> 2024130072, 2024130088, 0 <repeats 508 times>, 4129, 93825009696000, >>> 140737328183160, 0 <repeats 509 times>}, out_addr = {2024130056, >>> 2038414056, 0, 8256, 4128, 93824999311936, 0, 3, 0 <repeats 512 >>> times>, >>> 12385, 93825009696000, 140737328183160, 0 <repeats 501 times>}, >> >> Up to here everything is fine. >> >>> in_sg = >>> {{ >>> iov_base = 0x3039303620008000, iov_len = 4986663671065686081}, { >>> iov_base = 0x3830384533334635, iov_len = 3544389261899019573}, { >> >> The fields are bogus, in_sg has been overwritten with ASCII data. >> Unfortunately I don't see any hint of where this ASCII data came from >> yet. >> >> The hdr fields you provided in stack frame #6 show that in_sg was >> overwritten during or after the bdrv_ioctl() call. We pulled valid >> data out of the vring and mapped buffers correctly. But something is >> overwriting in_sg and when we complete the request we blow up due to >> the bogus values. > > Ok. What I have to mention. I've been testing with qemu-kvm 1.2.0 > and libiscsi for a few weeks now. Its been very stable. The only thing > it blows up is during the debian/ubuntu installer. Ubuntu itself for > instance is running flawlessly. My guess is that the installer is probing > for something. The installer itself also runs flawlessly when I disable > scsi passthru with scsi=off. > >> >> Please post your full qemu-kvm command-line. > > /usr/bin/qemu-kvm-1.2.0 -net > tap,vlan=164,script=no,downscript=no,ifname=tap0 -net > nic,vlan=164,model=e1000,macaddr=52:54:00:ff:01:35 -iscsi > initiator-name=iqn.2005-03.org.virtual-core:0025b51f001c -drive > format=iscsi,file=iscsi://172.21.200.56/iqn.2001-05.com.equallogic:0-8a0906-335f4e007-d29001a3355508e8-libiscsi-test-hd0/0,if=virtio,cache=none,aio=native > -m 2048 -smp 2,sockets=1,cores=2,threads=1 -monitor > tcp:0:4002,server,nowait -vnc :2 -qmp tcp:0:3002,server,nowait -name > 'libiscsi-debug' -boot order=dc,menu=off -k de -pidfile > /var/run/qemu/vm-280.pid -mem-path /hugepages -mem-prealloc -cpu > host,+x2apic,model_id='Intel(R) Xeon(R) CPU L5640 @ 2.27GHz',-tsc > -rtc base=utc -usb -usbdevice tablet -no-hpet -vga cirrus > >> >> Please also post the exact qemu-kvm version you are using. I can see >> it's based on qemu-kvm-1.2.0 but are there any patches applied (e.g. >> distro packages may carry patches so the full package version >> information would be useful)? > > I use vanilly qemu-kvm 1.2.0 with some cherry picked patches. I will > retry with untouched qemu-kvm 1.2.0 and latest git tomorrow at latest. >> >> >> Thanks, >> Stefan > > Thank you, too > Peter ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI -> Bad ram pointer 2012-10-30 21:09 ` ronnie sahlberg @ 2012-10-31 5:48 ` Stefan Hajnoczi 2012-10-31 14:08 ` ronnie sahlberg 0 siblings, 1 reply; 15+ messages in thread From: Stefan Hajnoczi @ 2012-10-31 5:48 UTC (permalink / raw) To: ronnie sahlberg; +Cc: Peter Lieven, qemu-devel@nongnu.org, kvm@vger.kernel.org On Tue, Oct 30, 2012 at 10:09 PM, ronnie sahlberg <ronniesahlberg@gmail.com> wrote: > About half a year there was an issue where recent kernels had added > support to start using new scsi opcodes, but the qemu functions that > determine "which transfer direction is used for this opcode" had not > yet been updated, so that the opcode was sent with the wrong transfer > direction. > > That caused the guests memory to be overwritten and crash. > > I dont have (easy) access to the git tree right now, but it was a > patch for the ATA_PASSTHROUGH command that fixed that. This patch? http://patchwork.ozlabs.org/patch/174946/ Stefan ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI -> Bad ram pointer 2012-10-31 5:48 ` Stefan Hajnoczi @ 2012-10-31 14:08 ` ronnie sahlberg 2012-11-05 15:19 ` Peter Lieven 2012-11-08 15:26 ` Peter Lieven 0 siblings, 2 replies; 15+ messages in thread From: ronnie sahlberg @ 2012-10-31 14:08 UTC (permalink / raw) To: Stefan Hajnoczi; +Cc: Peter Lieven, qemu-devel@nongnu.org, kvm@vger.kernel.org On Tue, Oct 30, 2012 at 10:48 PM, Stefan Hajnoczi <stefanha@gmail.com> wrote: > On Tue, Oct 30, 2012 at 10:09 PM, ronnie sahlberg > <ronniesahlberg@gmail.com> wrote: >> About half a year there was an issue where recent kernels had added >> support to start using new scsi opcodes, but the qemu functions that >> determine "which transfer direction is used for this opcode" had not >> yet been updated, so that the opcode was sent with the wrong transfer >> direction. >> >> That caused the guests memory to be overwritten and crash. >> >> I dont have (easy) access to the git tree right now, but it was a >> patch for the ATA_PASSTHROUGH command that fixed that. > > This patch? > > http://patchwork.ozlabs.org/patch/174946/ > > Stefan This is the one I was thinking about : 381b634c275ca1a2806e97392527bbfc01bcb333 But that also crashed when using local /dev/sg* devices. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI -> Bad ram pointer 2012-10-31 14:08 ` ronnie sahlberg @ 2012-11-05 15:19 ` Peter Lieven 2012-11-08 15:26 ` Peter Lieven 1 sibling, 0 replies; 15+ messages in thread From: Peter Lieven @ 2012-11-05 15:19 UTC (permalink / raw) To: ronnie sahlberg Cc: Stefan Hajnoczi, qemu-devel@nongnu.org, kvm@vger.kernel.org Am 31.10.2012 um 15:08 schrieb ronnie sahlberg: > On Tue, Oct 30, 2012 at 10:48 PM, Stefan Hajnoczi <stefanha@gmail.com> wrote: >> On Tue, Oct 30, 2012 at 10:09 PM, ronnie sahlberg >> <ronniesahlberg@gmail.com> wrote: >>> About half a year there was an issue where recent kernels had added >>> support to start using new scsi opcodes, but the qemu functions that >>> determine "which transfer direction is used for this opcode" had not >>> yet been updated, so that the opcode was sent with the wrong transfer >>> direction. >>> >>> That caused the guests memory to be overwritten and crash. >>> >>> I dont have (easy) access to the git tree right now, but it was a >>> patch for the ATA_PASSTHROUGH command that fixed that. >> >> This patch? >> >> http://patchwork.ozlabs.org/patch/174946/ >> >> Stefan > > This is the one I was thinking about : > 381b634c275ca1a2806e97392527bbfc01bcb333 > > But that also crashed when using local /dev/sg* devices. I was using a local LVM Volume not an iSCSI disk. I added debugging output and breakpoints to scsi_cmd_xfer_mode(). The function is not called. Peter ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI -> Bad ram pointer 2012-10-31 14:08 ` ronnie sahlberg 2012-11-05 15:19 ` Peter Lieven @ 2012-11-08 15:26 ` Peter Lieven 2012-11-19 17:20 ` Stefan Hajnoczi 1 sibling, 1 reply; 15+ messages in thread From: Peter Lieven @ 2012-11-08 15:26 UTC (permalink / raw) To: ronnie sahlberg Cc: Stefan Hajnoczi, qemu-devel@nongnu.org, kvm@vger.kernel.org Has anyone any other idea what the cause could be or where to start? Peter Am 31.10.2012 um 15:08 schrieb ronnie sahlberg: > On Tue, Oct 30, 2012 at 10:48 PM, Stefan Hajnoczi <stefanha@gmail.com> wrote: >> On Tue, Oct 30, 2012 at 10:09 PM, ronnie sahlberg >> <ronniesahlberg@gmail.com> wrote: >>> About half a year there was an issue where recent kernels had added >>> support to start using new scsi opcodes, but the qemu functions that >>> determine "which transfer direction is used for this opcode" had not >>> yet been updated, so that the opcode was sent with the wrong transfer >>> direction. >>> >>> That caused the guests memory to be overwritten and crash. >>> >>> I dont have (easy) access to the git tree right now, but it was a >>> patch for the ATA_PASSTHROUGH command that fixed that. >> >> This patch? >> >> http://patchwork.ozlabs.org/patch/174946/ >> >> Stefan > > This is the one I was thinking about : > 381b634c275ca1a2806e97392527bbfc01bcb333 > > But that also crashed when using local /dev/sg* devices. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI -> Bad ram pointer 2012-11-08 15:26 ` Peter Lieven @ 2012-11-19 17:20 ` Stefan Hajnoczi 2012-11-22 14:10 ` Peter Lieven 0 siblings, 1 reply; 15+ messages in thread From: Stefan Hajnoczi @ 2012-11-19 17:20 UTC (permalink / raw) To: Peter Lieven; +Cc: qemu-devel@nongnu.org, ronnie sahlberg, kvm@vger.kernel.org On Thu, Nov 8, 2012 at 4:26 PM, Peter Lieven <pl@dlhnet.de> wrote: > Has anyone any other idea what the cause could be or where to start? Hi Peter, I suggested posting the source tree you are building. Since you have applied patches yourself no one else is able to follow along with the gdb output or reproduce the issue accurately. Stefan ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI -> Bad ram pointer 2012-11-19 17:20 ` Stefan Hajnoczi @ 2012-11-22 14:10 ` Peter Lieven 0 siblings, 0 replies; 15+ messages in thread From: Peter Lieven @ 2012-11-22 14:10 UTC (permalink / raw) To: Stefan Hajnoczi Cc: qemu-devel@nongnu.org, ronnie sahlberg, kvm@vger.kernel.org On 19.11.2012 18:20, Stefan Hajnoczi wrote: > On Thu, Nov 8, 2012 at 4:26 PM, Peter Lieven <pl@dlhnet.de> wrote: >> Has anyone any other idea what the cause could be or where to start? > > Hi Peter, > I suggested posting the source tree you are building. Since you have > applied patches yourself no one else is able to follow along with the > gdb output or reproduce the issue accurately. Sorry for the late reply, I used qemu git at e24dc9feb0d68142d54dc3c097f57588836d1338 and libiscsi git at 3b3036b9dae55f0c3eef9d75db89c7b78f637a12. The cmdline: qemu-system-x86_64 -enable-kvm -m 1024 -drive if=virtio,file=iscsi://172.21.200.56/iqn.2001-05.com.equallogic:0-8a0906-62ff4e007-e4a3c8908af50839-test-3000g/0 -cdrom ubuntu-12.04.1-server-amd64.iso -vnc :1 The vm crashes with: Bad ram pointer 0x7fd220008000 after the user settings and timezone config when loading the module libdmraid1.0.0.rc16-udeb I hope this helps to reproduce. Peter > > Stefan > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI -> Bad ram pointer 2012-10-30 19:37 ` Peter Lieven 2012-10-30 21:09 ` ronnie sahlberg @ 2012-10-31 5:53 ` Stefan Hajnoczi 1 sibling, 0 replies; 15+ messages in thread From: Stefan Hajnoczi @ 2012-10-31 5:53 UTC (permalink / raw) To: Peter Lieven; +Cc: ronnie sahlberg, qemu-devel@nongnu.org, kvm@vger.kernel.org On Tue, Oct 30, 2012 at 8:37 PM, Peter Lieven <pl@dlhnet.de> wrote: > Am 30.10.2012 19:27, schrieb Stefan Hajnoczi: >> Please also post the exact qemu-kvm version you are using. I can see >> it's based on qemu-kvm-1.2.0 but are there any patches applied (e.g. >> distro packages may carry patches so the full package version >> information would be useful)? > > I use vanilly qemu-kvm 1.2.0 with some cherry picked patches. I will > retry with untouched qemu-kvm 1.2.0 and latest git tomorrow at latest. Please post the source tree including applied patches. For example, you could push to a public git repo. This is necessary so that we can dig into the source tree to figure out where the bug lies. There are some other interesting questions that Ronnie has raised, so perhaps they will lead to the answer if you cannot publish the tree at the moment. My next question is: have you tested qemu.git/master? Stefan ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI -> Bad ram pointer 2012-10-30 18:27 ` Stefan Hajnoczi 2012-10-30 19:37 ` Peter Lieven @ 2012-10-30 20:24 ` Peter Lieven 1 sibling, 0 replies; 15+ messages in thread From: Peter Lieven @ 2012-10-30 20:24 UTC (permalink / raw) To: Stefan Hajnoczi Cc: ronnie sahlberg, qemu-devel@nongnu.org, kvm@vger.kernel.org Am 30.10.2012 19:27, schrieb Stefan Hajnoczi: > On Tue, Oct 30, 2012 at 4:56 PM, Peter Lieven <pl@dlhnet.de> wrote: >> On 30.10.2012 09:32, Stefan Hajnoczi wrote: >>> On Mon, Oct 29, 2012 at 03:09:37PM +0100, Peter Lieven wrote: >>>> Hi, >>> Bug subject should be virtio-blk, not virtio-scsi. virtio-scsi is a >>> different virtio device type from virtoi-blk and is not present in the >>> backtrace you posted. >>> >>> Sounds pedantic but I want to make sure this gets chalked up against the >>> right device :). >>> >>>> If I try to Install Ubuntu 12.04 LTS / 12.10 64-bit on a virtio >>>> storage backend that supports iSCSI >>>> qemu-kvm crashes reliably with the following error: >>> Are you using vanilla qemu-kvm-1.2.0 or are there patches applied? >>> >>> Have you tried qemu-kvm.git/master? >>> >>> Have you tried a local raw disk image to check whether libiscsi is >>> involved? >>> >>>> Bad ram pointer 0x3039303620008000 >>>> >>>> This happens directly after the confirmation of the Timezone before >>>> the Disk is partitioned. >>>> >>>> If I specify -global virtio-blk-pci.scsi=off in the cmdline this >>>> does not happen. >>>> >>>> Here is a stack trace: >>>> >>>> Thread 1 (Thread 0x7ffff7fee700 (LWP 8226)): >>>> #0 0x00007ffff63c0a10 in abort () from /lib/x86_64-linux-gnu/libc.so.6 >>>> No symbol table info available. >>>> #1 <https://github.com/sahlberg/libiscsi/issues/1> >>>> 0x00005555557b751d in qemu_ram_addr_from_host_nofail ( >>>> ptr=0x3039303620008000) at /usr/src/qemu-kvm-1.2.0/exec.c:2835 >>>> ram_addr = 0 >>>> #2 <https://github.com/sahlberg/libiscsi/issues/2> >>>> 0x00005555557b9177 in cpu_physical_memory_unmap ( >>>> buffer=0x3039303620008000, len=4986663671065686081, is_write=1, >>>> access_len=1) at /usr/src/qemu-kvm-1.2.0/exec.c:3645 >>> buffer and len are ASCII junk. It appears to be hex digits and it's not >>> clear where they come from. >>> >>> It would be interesting to print *elem one stack frame up in #3 >>> virtqueue_fill() to show the iovecs and in/out counts. >> >> (gdb) print *elem > Great, thanks for providing this info: > >> $6 = {index = 3, out_num = 2, in_num = 4, in_addr = {1914920960, 1916656688, >> 2024130072, 2024130088, 0 <repeats 508 times>, 4129, 93825009696000, >> 140737328183160, 0 <repeats 509 times>}, out_addr = {2024130056, >> 2038414056, 0, 8256, 4128, 93824999311936, 0, 3, 0 <repeats 512 times>, >> 12385, 93825009696000, 140737328183160, 0 <repeats 501 times>}, > Up to here everything is fine. > >> in_sg = >> {{ >> iov_base = 0x3039303620008000, iov_len = 4986663671065686081}, { >> iov_base = 0x3830384533334635, iov_len = 3544389261899019573}, { > The fields are bogus, in_sg has been overwritten with ASCII data. > Unfortunately I don't see any hint of where this ASCII data came from > yet. > > The hdr fields you provided in stack frame #6 show that in_sg was > overwritten during or after the bdrv_ioctl() call. We pulled valid > data out of the vring and mapped buffers correctly. But something is > overwriting in_sg and when we complete the request we blow up due to > the bogus values. > > Please post your full qemu-kvm command-line. > > Please also post the exact qemu-kvm version you are using. I can see > it's based on qemu-kvm-1.2.0 but are there any patches applied (e.g. > distro packages may carry patches so the full package version > information would be useful)? Stefan, Ronnie, if I do remove the following patch from my cherry-picked patches its working again: iSCSI: We need to support SG_IO also from iscsi_ioctl() Peter ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2012-11-22 14:10 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-10-29 14:09 [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI -> Bad ram pointer Peter Lieven 2012-10-30 8:32 ` Stefan Hajnoczi 2012-10-30 9:43 ` [Qemu-devel] Ubuntu/Debian Installer + Virtio-BLK " Peter Lieven 2012-10-30 15:56 ` [Qemu-devel] Ubuntu/Debian Installer + Virtio-SCSI " Peter Lieven 2012-10-30 18:27 ` Stefan Hajnoczi 2012-10-30 19:37 ` Peter Lieven 2012-10-30 21:09 ` ronnie sahlberg 2012-10-31 5:48 ` Stefan Hajnoczi 2012-10-31 14:08 ` ronnie sahlberg 2012-11-05 15:19 ` Peter Lieven 2012-11-08 15:26 ` Peter Lieven 2012-11-19 17:20 ` Stefan Hajnoczi 2012-11-22 14:10 ` Peter Lieven 2012-10-31 5:53 ` Stefan Hajnoczi 2012-10-30 20:24 ` Peter Lieven
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).