On 09/19/2017 08:03 AM, Richard Henderson wrote: > + while (1) { > + /* We want to read memory for one insn, but generically we do not > + know how much memory that is. We have a small buffer which is > + known to be sufficient for all supported targets. Try to not > + read beyond the page, Just In Case. For even more simplicity, > + ignore the actual target page size and use a 1k boundary. If > + that turns out to be insufficient, we'll come back around the > + loop and read more. */ > + uint64_t epc = QEMU_ALIGN_UP(pc + csize, 1024); > + size_t tsize = MIN(sizeof(cap_buf) - csize, epc - pc); ... > + assert(tsize != 0);
By inspection, epc must be computed from pc + csize + 1. If csize = 0 and pc % 1024 == 0, epc == pc and tsize == 0, which will assert. r~