On 21 April 2013 11:37, Blue Swirl <blauwir...@gmail.com> wrote: > I'm getting this error for make check on an ARM host: > > GTESTER check-qtest-i386 > GTester: last random seed: R02Sb8a38f2b54abc70ad75be1aa6db12891 > ** > ERROR:/src/qemu/tests/i440fx-test.c:39:test_i440fx_defaults: assertion > failed: (dev != NULL)
This is a bug in qtest.c. The test program sends the command "outl" "0xcf8" "0x80000000" qtest.c does value = strtol(words[2], NULL, 0); and since this is a "long is 32 bits" platform strtol returns 0x7FFFFFFF (and sets errno to ERANGE, but we don't check that). We then write the wrong value to the PCI config register. As it happens bit 31 of this bit means "actually do stuff" so since we haven't set it the following pci_host_data_read() call returns -1 and this propagates up to the test program itself as a failure to create the pci device, hence the assert. The comment in qtest.c says "ADDR, SIZE, VALUE are all integers parsed with strtoul()" so the fix is probably to make the code do what the comment says it should... (Plus we should actually check the errno from strtoul!) -- PMM