The handling of a full profiling buffer couldn't work for two reasons:
* We can't enable interrupts in an interrupt handler. Instead we use the newly introduced callback feature, which notifies the debugger right before returning from the interrupt. * We didn't indicate that the profiling buffer was full and that the thread shouldn't be profiled ATM. Therefore it could happen that it was profiled while trying to notify the debugger that the profiling buffer was full, resulting in a deadlock. Introduce a respective flag in the thread debug structure. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27649 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -86,6 +86,8 @@ struct thread_debug_info {
|
||||
// number of samples the buffer currently holds
|
||||
int32 stack_depth;
|
||||
// number of return addresses to record per timer interval
|
||||
bool buffer_full;
|
||||
// indicates that the sample buffer is full
|
||||
union {
|
||||
bigtime_t interval_left;
|
||||
// when unscheduled: the time left of the current sampling
|
||||
|
||||
Reference in New Issue
Block a user