Author: axeld Date: 2009-10-22 18:10:28 +0200 (Thu, 22 Oct 2009) New Revision: 33730 Changeset: http://dev.haiku-os.org/changeset/33730/haiku Modified: haiku/trunk/src/system/kernel/debug/user_debugger.cpp Log: * set_port_owner() was the only usable call of the port API, and of course it was used this way in the debugger. Doing this later should be harmless, AFAICT, but Ingo will probably know better. * Beware, though, the debugger currently does not work anymore. Modified: haiku/trunk/src/system/kernel/debug/user_debugger.cpp =================================================================== --- haiku/trunk/src/system/kernel/debug/user_debugger.cpp 2009-10-22 14:00:17 UTC (rev 33729) +++ haiku/trunk/src/system/kernel/debug/user_debugger.cpp 2009-10-22 16:10:28 UTC (rev 33730) @@ -2512,6 +2512,7 @@ bool releaseDebugInfoLock = true; port_id oldDebuggerPort = -1; port_id nubPort = -1; + bool handOverPort = false; cpu_status state = disable_interrupts(); GRAB_TEAM_DEBUG_INFO_LOCK(team->debug_info); @@ -2546,16 +2547,7 @@ releaseDebugInfoLock = false; handOver = true; done = true; - - // finally set the new port owner - if (set_port_owner(nubPort, debuggerTeam) != B_OK) { - // The old debugger must just have died. Just proceed as - // if there was no debugger installed. We may still be too - // early, in which case we'll fail, but this race condition - // should be unbelievably rare and relatively harmless. - handOver = false; - done = false; - } + handOverPort = true; } } else { // there's already a debugger installed @@ -2576,6 +2568,15 @@ restore_interrupts(state); + if (handOverPort && set_port_owner(nubPort, debuggerTeam) != B_OK) { + // The old debugger must just have died. Just proceed as + // if there was no debugger installed. We may still be too + // early, in which case we'll fail, but this race condition + // should be unbelievably rare and relatively harmless. + handOver = false; + done = false; + } + if (handOver) { // prepare the handed-over message debug_handed_over notification;