On 22.04.2013, at 08:37, Riku Voipio wrote: > Hi, > > While testing my linux-user smoke-testing setup, I noticed that > with current qemu head: > > ./ppc64-linux-user/qemu-ppc64 ../../qemu-smoke/ppc64/busybox ls > busybox: malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char > *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, > fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned > long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * > (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size > & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed. > qemu: uncaught target signal 6 (Aborted) - core dumped > Aborted (core dumped) > > With a bisect run, the following commit appear breaks this: > > 8e33944f8c648e579a2827ae6f30e4d66ee87f96 > > PPC: Unify dcbzl code path > > Indeed, after reverting the same command runs fine.
Oh, great. There are 2 bugs coming together here. 1) Linux-user has the dcbzl hack bit in HID5 set by default. This is wrong. It should really just expose the cache line size via auxv. 2) The patch you mentioned restricts the HID5 check to softmmu. So we never even check for the HID5 bit. Let me write up a patch quickly that at least fixes 2). Alex