On Thu, Dec 26, 2013 at 04:09:58PM +0200, Marcel Apfelbaum wrote: > On Thu, 2013-12-26 at 15:53 +0200, Michael S. Tsirkin wrote: > > On Thu, Dec 26, 2013 at 03:24:28PM +0200, Marcel Apfelbaum wrote: > > > On Thu, 2013-12-26 at 14:46 +0200, Michael S. Tsirkin wrote: > > > > On Thu, Dec 26, 2013 at 02:19:48PM +0200, Marcel Apfelbaum wrote: > > > > > Acpi unit-test will fail every time the acpi tables change. > > > > > > > > > > The series adds a script that rebuilds the expected aml files, so the > > > > > test > > > > > will pass. It also validates the modifications. > > > > > > > > > > The acpi unit test will rebuild the aml tables if > > > > > TEST_ACPI_REBUILD_AML > > > > > environment variable is set. > > > > > > > > OK I had to fix some trailing whitespace, otherwise > > > > looks good. > > > > I applied it all, pls check the pci branch. > > > Thanks! > > > I pulled the pci branch, but I did not see the patches yet. > > > I used git://git.kernel.org/pub/scm/virt/kvm/mst/qemu.git, > > > pci branch. > > > > > > Thanks, > > > Marcel > > > > > > Actually had to revert. Build fails with recent gcc: > Strange, I update the gcc to the Fedora's latest 4.8.2 and > it still doesn't happen. > Anyway, I use qemu_write_full as advised and resent. > > Thanks, > Marcel
OK I applied this for now but I see an issue: iasl crashes below. I think this happens when we run it on a file it does not understand. It's an iasl bug but would be nice to work around it in some way (and it would be nice to report to robert moore) *** Error in `/usr/bin/iasl': double free or corruption (!prev): 0x0881bc98 *** ======= Backtrace: ========= /lib/libc.so.6[0x46205d12] /usr/bin/iasl[0x80a5a66] /usr/bin/iasl[0x80a2717] /usr/bin/iasl[0x80a284b] /usr/bin/iasl[0x805bf32] /usr/bin/iasl[0x8072352] /usr/bin/iasl[0x80726c1] /usr/bin/iasl[0x80725f5] /usr/bin/iasl[0x80491a9] /lib/libc.so.6(__libc_start_main+0xf3)[0x461a9963] /usr/bin/iasl[0x80491fd] ======= Memory map: ======== 08047000-0810d000 r-xp 00000000 08:06 48242 /usr/bin/iasl 0810d000-0810e000 r--p 000c5000 08:06 48242 /usr/bin/iasl 0810e000-0810f000 rw-p 000c6000 08:06 48242 /usr/bin/iasl 0810f000-08113000 rw-p 00000000 00:00 0 087f7000-08839000 rw-p 00000000 00:00 0 [heap] 4616d000-4618c000 r-xp 00000000 08:06 4415 /usr/lib/ld-2.17.so 4618c000-4618d000 r--p 0001e000 08:06 4415 /usr/lib/ld-2.17.so 4618d000-4618e000 rw-p 0001f000 08:06 4415 /usr/lib/ld-2.17.so 46190000-46348000 r-xp 00000000 08:06 4643 /usr/lib/libc-2.17.so 46348000-46349000 ---p 001b8000 08:06 4643 /usr/lib/libc-2.17.so 46349000-4634b000 r--p 001b8000 08:06 4643 /usr/lib/libc-2.17.so 4634b000-4634c000 rw-p 001ba000 08:06 4643 /usr/lib/libc-2.17.so 4634c000-4634f000 rw-p 00000000 00:00 0 463d2000-463ed000 r-xp 00000000 08:06 51367 /usr/lib/libgcc_s-4.8.2-20131212.so.1 463ed000-463ee000 r--p 0001a000 08:06 51367 /usr/lib/libgcc_s-4.8.2-20131212.so.1 463ee000-463ef000 rw-p 0001b000 08:06 51367 /usr/lib/libgcc_s-4.8.2-20131212.so.1 b7741000-b7742000 rw-p 00000000 00:00 0 b776c000-b776f000 rw-p 00000000 00:00 0 b776f000-b7770000 r-xp 00000000 00:00 0 [vdso] bfc6f000-bfc91000 rw-p 00000000 00:00 0 [stack] *** Error in `/usr/bin/iasl': double free or corruption (!prev): 0x09286cd8 *** ======= Backtrace: ========= /lib/libc.so.6[0x46205d12] /usr/bin/iasl[0x80a5a66] /usr/bin/iasl[0x80a2717] /usr/bin/iasl[0x80a284b] /usr/bin/iasl[0x805bf32] /usr/bin/iasl[0x8072352] /usr/bin/iasl[0x80726c1] /usr/bin/iasl[0x80725f5] /usr/bin/iasl[0x80491a9] /lib/libc.so.6(__libc_start_main+0xf3)[0x461a9963] /usr/bin/iasl[0x80491fd] ======= Memory map: ======== 08047000-0810d000 r-xp 00000000 08:06 48242 /usr/bin/iasl 0810d000-0810e000 r--p 000c5000 08:06 48242 /usr/bin/iasl 0810e000-0810f000 rw-p 000c6000 08:06 48242 /usr/bin/iasl 0810f000-08113000 rw-p 00000000 00:00 0 09262000-092a4000 rw-p 00000000 00:00 0 [heap] 4616d000-4618c000 r-xp 00000000 08:06 4415 /usr/lib/ld-2.17.so 4618c000-4618d000 r--p 0001e000 08:06 4415 /usr/lib/ld-2.17.so 4618d000-4618e000 rw-p 0001f000 08:06 4415 /usr/lib/ld-2.17.so 46190000-46348000 r-xp 00000000 08:06 4643 /usr/lib/libc-2.17.so 46348000-46349000 ---p 001b8000 08:06 4643 /usr/lib/libc-2.17.so 46349000-4634b000 r--p 001b8000 08:06 4643 /usr/lib/libc-2.17.so 4634b000-4634c000 rw-p 001ba000 08:06 4643 /usr/lib/libc-2.17.so 4634c000-4634f000 rw-p 00000000 00:00 0 463d2000-463ed000 r-xp 00000000 08:06 51367 /usr/lib/libgcc_s-4.8.2-20131212.so.1 463ed000-463ee000 r--p 0001a000 08:06 51367 /usr/lib/libgcc_s-4.8.2-20131212.so.1 463ee000-463ef000 rw-p 0001b000 08:06 51367 /usr/lib/libgcc_s-4.8.2-20131212.so.1 b774b000-b774c000 rw-p 00000000 00:00 0 b7776000-b7779000 rw-p 00000000 00:00 0 b7779000-b777a000 r-xp 00000000 00:00 0 [vdso] bfd37000-bfd59000 rw-p 00000000 00:00 0 [stack] *** Error in `/usr/bin/iasl': double free or corruption (!prev): 0x09587c58 *** ======= Backtrace: ========= /lib/libc.so.6[0x46205d12] /usr/bin/iasl[0x80a5a66] /usr/bin/iasl[0x80a2717] /usr/bin/iasl[0x80a284b] /usr/bin/iasl[0x805bf32] /usr/bin/iasl[0x8072352] /usr/bin/iasl[0x80726c1] /usr/bin/iasl[0x80725f5] /usr/bin/iasl[0x80491a9] /lib/libc.so.6(__libc_start_main+0xf3)[0x461a9963] /usr/bin/iasl[0x80491fd] ======= Memory map: ======== 08047000-0810d000 r-xp 00000000 08:06 48242 /usr/bin/iasl 0810d000-0810e000 r--p 000c5000 08:06 48242 /usr/bin/iasl 0810e000-0810f000 rw-p 000c6000 08:06 48242 /usr/bin/iasl 0810f000-08113000 rw-p 00000000 00:00 0 09563000-095a5000 rw-p 00000000 00:00 0 [heap] 4616d000-4618c000 r-xp 00000000 08:06 4415 /usr/lib/ld-2.17.so 4618c000-4618d000 r--p 0001e000 08:06 4415 /usr/lib/ld-2.17.so 4618d000-4618e000 rw-p 0001f000 08:06 4415 /usr/lib/ld-2.17.so 46190000-46348000 r-xp 00000000 08:06 4643 /usr/lib/libc-2.17.so 46348000-46349000 ---p 001b8000 08:06 4643 /usr/lib/libc-2.17.so 46349000-4634b000 r--p 001b8000 08:06 4643 /usr/lib/libc-2.17.so 4634b000-4634c000 rw-p 001ba000 08:06 4643 /usr/lib/libc-2.17.so 4634c000-4634f000 rw-p 00000000 00:00 0 463d2000-463ed000 r-xp 00000000 08:06 51367 /usr/lib/libgcc_s-4.8.2-20131212.so.1 463ed000-463ee000 r--p 0001a000 08:06 51367 /usr/lib/libgcc_s-4.8.2-20131212.so.1 463ee000-463ef000 rw-p 0001b000 08:06 51367 /usr/lib/libgcc_s-4.8.2-20131212.so.1 b77af000-b77b0000 rw-p 00000000 00:00 0 b77da000-b77dd000 rw-p 00000000 00:00 0 b77dd000-b77de000 r-xp 00000000 00:00 0 [vdso] bfe96000-bfeb8000 rw-p 00000000 00:00 0 [stack] *** Error in `/usr/bin/iasl': double free or corruption (!prev): 0x096c7c98 *** ======= Backtrace: ========= /lib/libc.so.6[0x46205d12] /usr/bin/iasl[0x80a5a66] /usr/bin/iasl[0x80a2717] /usr/bin/iasl[0x80a284b] /usr/bin/iasl[0x805bf32] /usr/bin/iasl[0x8072352] /usr/bin/iasl[0x80726c1] /usr/bin/iasl[0x80725f5] /usr/bin/iasl[0x80491a9] /lib/libc.so.6(__libc_start_main+0xf3)[0x461a9963] /usr/bin/iasl[0x80491fd] ======= Memory map: ======== 08047000-0810d000 r-xp 00000000 08:06 48242 /usr/bin/iasl 0810d000-0810e000 r--p 000c5000 08:06 48242 /usr/bin/iasl 0810e000-0810f000 rw-p 000c6000 08:06 48242 /usr/bin/iasl 0810f000-08113000 rw-p 00000000 00:00 0 096a3000-096e5000 rw-p 00000000 00:00 0 [heap] 4616d000-4618c000 r-xp 00000000 08:06 4415 /usr/lib/ld-2.17.so 4618c000-4618d000 r--p 0001e000 08:06 4415 /usr/lib/ld-2.17.so 4618d000-4618e000 rw-p 0001f000 08:06 4415 /usr/lib/ld-2.17.so 46190000-46348000 r-xp 00000000 08:06 4643 /usr/lib/libc-2.17.so 46348000-46349000 ---p 001b8000 08:06 4643 /usr/lib/libc-2.17.so 46349000-4634b000 r--p 001b8000 08:06 4643 /usr/lib/libc-2.17.so 4634b000-4634c000 rw-p 001ba000 08:06 4643 /usr/lib/libc-2.17.so 4634c000-4634f000 rw-p 00000000 00:00 0 463d2000-463ed000 r-xp 00000000 08:06 51367 /usr/lib/libgcc_s-4.8.2-20131212.so.1 463ed000-463ee000 r--p 0001a000 08:06 51367 /usr/lib/libgcc_s-4.8.2-20131212.so.1 463ee000-463ef000 rw-p 0001b000 08:06 51367 /usr/lib/libgcc_s-4.8.2-20131212.so.1 b7714000-b7715000 rw-p 00000000 00:00 0 b773f000-b7742000 rw-p 00000000 00:00 0 b7742000-b7743000 r-xp 00000000 00:00 0 [vdso] bfc43000-bfc65000 rw-p 00000000 00:00 0 [stack] qemu: terminating on signal 15 from pid 8740 main-loop: WARNING: I/O thread spun for 1000 iterations *** Error in `/usr/bin/iasl': double free or corruption (!prev): 0x09e5c3d0 *** ======= Backtrace: ========= /lib/libc.so.6[0x46205d12] /usr/bin/iasl[0x80a5a66] /usr/bin/iasl[0x80a2717] /usr/bin/iasl[0x80a284b] /usr/bin/iasl[0x805bf32] /usr/bin/iasl[0x8072352] /usr/bin/iasl[0x80726c1] /usr/bin/iasl[0x80725f5] /usr/bin/iasl[0x80491a9] /lib/libc.so.6(__libc_start_main+0xf3)[0x461a9963] /usr/bin/iasl[0x80491fd] ======= Memory map: ======== 08047000-0810d000 r-xp 00000000 08:06 48242 /usr/bin/iasl 0810d000-0810e000 r--p 000c5000 08:06 48242 /usr/bin/iasl 0810e000-0810f000 rw-p 000c6000 08:06 48242 /usr/bin/iasl 0810f000-08113000 rw-p 00000000 00:00 0 09e3c000-09e7e000 rw-p 00000000 00:00 0 [heap] 4616d000-4618c000 r-xp 00000000 08:06 4415 /usr/lib/ld-2.17.so 4618c000-4618d000 r--p 0001e000 08:06 4415 /usr/lib/ld-2.17.so 4618d000-4618e000 rw-p 0001f000 08:06 4415 /usr/lib/ld-2.17.so 46190000-46348000 r-xp 00000000 08:06 4643 /usr/lib/libc-2.17.so 46348000-46349000 ---p 001b8000 08:06 4643 /usr/lib/libc-2.17.so 46349000-4634b000 r--p 001b8000 08:06 4643 /usr/lib/libc-2.17.so 4634b000-4634c000 rw-p 001ba000 08:06 4643 /usr/lib/libc-2.17.so 4634c000-4634f000 rw-p 00000000 00:00 0 463d2000-463ed000 r-xp 00000000 08:06 51367 /usr/lib/libgcc_s-4.8.2-20131212.so.1 463ed000-463ee000 r--p 0001a000 08:06 51367 /usr/lib/libgcc_s-4.8.2-20131212.so.1 463ee000-463ef000 rw-p 0001b000 08:06 51367 /usr/lib/libgcc_s-4.8.2-20131212.so.1 b777d000-b777e000 rw-p 00000000 00:00 0 b77a8000-b77ab000 rw-p 00000000 00:00 0 b77ab000-b77ac000 r-xp 00000000 00:00 0 [vdso] bfbb1000-bfbd3000 rw-p 00000000 00:00 0 [stack] *** Error in `/usr/bin/iasl': double free or corruption (!prev): 0x0926c410 *** > > > > ests/acpi-test.c: In function ‘dump_aml_files’: > > tests/acpi-test.c:392:14: error: ignoring return value of ‘write’, > > declared with attribute warn_unused_result [-Werror=unused-result] > > write(fd, sdt, sizeof(AcpiTableHeader)); > > ^ > > tests/acpi-test.c:393:14: error: ignoring return value of ‘write’, > > declared with attribute warn_unused_result [-Werror=unused-result] > > write(fd, sdt->aml, sdt->aml_len); > > ^ > > cc1: all warnings being treated as errors > > make: *** [tests/acpi-test.o] Error 1 > > > > and it's true: you need to wrap write in a loop as it can > > write less than requested number of bytes. > > See qemu_write_full - can it be used it tests? > > > > > > > v1 -> v2: > > > > > Addressed Michael S. Tsirkin's comments: > > > > > - added TEST_ prefix to the environment variable > > > > > - some rephrases > > > > > > > > > > Marcel Apfelbaum (2): > > > > > acpi unit-test: added script to rebuild the expected aml files > > > > > acpi unit-test: hook to rebuild expected aml files > > > > > > > > > > tests/acpi-test-data/rebuild-expected-aml.sh | 36 > > > > > ++++++++++++++++++++++++++++ > > > > > tests/acpi-test.c | 30 > > > > > +++++++++++++++++++---- > > > > > 2 files changed, 61 insertions(+), 5 deletions(-) > > > > > create mode 100755 tests/acpi-test-data/rebuild-expected-aml.sh > > > > > > > > > > -- > > > > > 1.8.3.1 > > > > > > > > > > > >