Nicer paging panics
This commit is contained in:
parent
cdd9d3f75e
commit
937c6fb701
@ -108,7 +108,9 @@ static void pt_exception_handler(enum exception_type type, int subtype,
|
|||||||
|
|
||||||
// abort on NULL pointer dereference
|
// abort on NULL pointer dereference
|
||||||
if(addr < (void *) VADDR_LOWEST_NON_NULL) {
|
if(addr < (void *) VADDR_LOWEST_NON_NULL) {
|
||||||
USER_PANIC("[ERROR] NULL pointer dereference");
|
static char str[256];
|
||||||
|
snprintf(str, sizeof(str), "[ERROR] NULL pointer dereference: addr=%p, ip=%p\n", addr, ip);
|
||||||
|
USER_PANIC(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
lvaddr_t page_addr = ROUND_DOWN((lvaddr_t)addr, BASE_PAGE_SIZE);
|
lvaddr_t page_addr = ROUND_DOWN((lvaddr_t)addr, BASE_PAGE_SIZE);
|
||||||
@ -125,19 +127,22 @@ static void pt_exception_handler(enum exception_type type, int subtype,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (vaddr_reg == NULL) {
|
if (vaddr_reg == NULL) {
|
||||||
debug_printf("[pt_exception_handler] type=%s, addr=%p, ip=%p, page_addr=0x%x\n", pt_exception_type_to_string(type, subtype), addr, ip, page_addr);
|
|
||||||
thread_mutex_unlock(&st->lock);
|
thread_mutex_unlock(&st->lock);
|
||||||
USER_PANIC("[pt_exception_handler][ERROR] Page fault ouside valid virtual address space");
|
static char str[256];
|
||||||
|
snprintf(str, sizeof(str), "[ERROR] Page fault ouside valid virtual address space: type=%s, addr=%p, ip=%p, page_addr=0x%x\n", pt_exception_type_to_string(type, subtype), addr, ip, page_addr);
|
||||||
|
USER_PANIC(str);
|
||||||
}
|
}
|
||||||
if (vaddr_reg->free) {
|
if (vaddr_reg->free) {
|
||||||
debug_printf("[pt_exception_handler] type=%s, addr=%p, ip=%p, page_addr=0x%x, base=0x%x, size=0x%x\n", pt_exception_type_to_string(type, subtype), addr, ip, page_addr, vaddr_reg->base, vaddr_reg->size);
|
|
||||||
thread_mutex_unlock(&st->lock);
|
thread_mutex_unlock(&st->lock);
|
||||||
USER_PANIC("[pt_exception_handler][ERROR] Page fault ouside allocated address space");
|
static char str[256];
|
||||||
|
snprintf(str, sizeof(str), "[ERROR] Page fault ouside allocated address space: type=%s, addr=%p, ip=%p, page_addr=0x%x, base=0x%x, size=0x%x\n", pt_exception_type_to_string(type, subtype), addr, ip, page_addr, vaddr_reg->base, vaddr_reg->size);
|
||||||
|
USER_PANIC(str);
|
||||||
}
|
}
|
||||||
if (!vaddr_reg->heap) {
|
if (!vaddr_reg->heap) {
|
||||||
debug_printf("[pt_exception_handler] type=%s, addr=%p, ip=%p\n", pt_exception_type_to_string(type, subtype), addr, ip);
|
|
||||||
thread_mutex_unlock(&st->lock);
|
thread_mutex_unlock(&st->lock);
|
||||||
USER_PANIC("[ERROR] Page fault in allocated address space but outside heap");
|
static char str[256];
|
||||||
|
snprintf(str, sizeof(str), "[ERROR] Page fault in allocated address space but outside heap: type=%s, addr=%p, ip=%p\n", pt_exception_type_to_string(type, subtype), addr, ip);
|
||||||
|
USER_PANIC(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_mapped(st, page_addr)) {
|
if (is_mapped(st, page_addr)) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user