Disabled the stack traces on unhandled userland page faults. As was already
known those can cause a deadlock. Besides, when the debug server is running, it prints an even nicer stack trace. Not removing the code yet to make things easier for architectures on which we don't have a userland yet. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30877 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -4496,10 +4496,6 @@ vm_page_fault(addr_t address, addr_t faultAddress, bool isWrite, bool isUser,
|
|||||||
// (and tools)
|
// (and tools)
|
||||||
vm_area* area = vm_area_lookup(addressSpace, faultAddress);
|
vm_area* area = vm_area_lookup(addressSpace, faultAddress);
|
||||||
|
|
||||||
// TODO: The user_memcpy() below can cause a deadlock, if it causes a page
|
|
||||||
// fault and someone is already waiting for a write lock on the same address
|
|
||||||
// space. This thread will then try to acquire the semaphore again and will
|
|
||||||
// be queued after the writer.
|
|
||||||
struct thread* thread = thread_get_current_thread();
|
struct thread* thread = thread_get_current_thread();
|
||||||
dprintf("vm_page_fault: thread \"%s\" (%ld) in team \"%s\" (%ld) "
|
dprintf("vm_page_fault: thread \"%s\" (%ld) in team \"%s\" (%ld) "
|
||||||
"tried to %s address %#lx, ip %#lx (\"%s\" +%#lx)\n",
|
"tried to %s address %#lx, ip %#lx (\"%s\" +%#lx)\n",
|
||||||
@@ -4509,7 +4505,11 @@ vm_page_fault(addr_t address, addr_t faultAddress, bool isWrite, bool isUser,
|
|||||||
faultAddress - (area ? area->base : 0x0));
|
faultAddress - (area ? area->base : 0x0));
|
||||||
|
|
||||||
// We can print a stack trace of the userland thread here.
|
// We can print a stack trace of the userland thread here.
|
||||||
#if 1
|
// TODO: The user_memcpy() below can cause a deadlock, if it causes a page
|
||||||
|
// fault and someone is already waiting for a write lock on the same address
|
||||||
|
// space. This thread will then try to acquire the lock again and will
|
||||||
|
// be queued after the writer.
|
||||||
|
#if 0
|
||||||
if (area) {
|
if (area) {
|
||||||
struct stack_frame {
|
struct stack_frame {
|
||||||
#if defined(__INTEL__) || defined(__POWERPC__) || defined(__M68K__)
|
#if defined(__INTEL__) || defined(__POWERPC__) || defined(__M68K__)
|
||||||
|
|||||||
Reference in New Issue
Block a user