Hello, I'm currently checking why the exec server still sometimes get trapped, I've come across a case in load_section() that looks strange to me:
vm_address_t overlap_page = trunc_page (addr); /* So addr is in the page starting at overlap_page */ vm_address_t ourpage = 0; vm_size_t size = 0; u->error = vm_read (u->task, overlap_page, vm_page_size, &ourpage, &size); if (u->error) { vm_deallocate (u->task, mapstart, memsz); return; } u->error = safe_bzero ((void *) (ourpage + (addr - overlap_page)), size - (addr - overlap_page)); Here exec is getting an fault exception at the very beginning of safe_bzero. gnumach's show map command tells me that there indeed is no mapping at address ourpage! More precisely, there is a whole: there's a mapping just before, and another just after. I do not know the semantic of vm_read() very well, but I thought there should at least be a map at the address it returns, shouldn't there? (yes of course the exception is catched by safe_bzero, but AIUI that's still not supposed to happen and is a bug worth checking out). Samuel