There is an assert in translator_access that I hit while running on a version of QEMU integrated into a Virtual Platform.
Since this function can return null anyway I tried the following experiment: --- a/accel/tcg/translator.c +++ b/accel/tcg/translator.c @@ -172,7 +172,9 @@ static void *translator_access(CPUArchState *env, DisasContextBase *db, tb_page_addr_t phys_page = get_page_addr_code_hostp(env, base, &db->host_addr[1]); /* We cannot handle MMIO as second page. */ - assert(phys_page != -1); + if(phys_page == -1) { + return NULL; + } tb_set_page_addr1(tb, phys_page); #ifdef CONFIG_USER_ONLY page_protect(end); which avoided the issue and the test ran to completion. What is this assert trying to catch?