Showing the changes to interface/src/Application.cpp (1 of 1 file). Show all
Unified · Split
| @@ -280,19 +280,42 @@ public: · 279 unmodified lines | ||
| 280 | 280 | auto sinceLastReport = now - _lastReport; |
| 281 | 281 | int elapsedMovingAverage = _movingAverage.average; |
| 282 | 282 | |
| 283 | − if (elapsedMovingAverage > _maxElapsed) { | |
| 284 | − _maxElapsed = elapsedMovingAverage; | |
| 283 | + if (elapsedMovingAverage > _maxElapsedAverage) { | |
| 284 | + qDebug() << "DEADLOCK WATCHDOG NEW maxElapsedAverage:" | |
| 285 | + << "lastHeartbeatAge:" << lastHeartbeatAge | |
| 286 | + << "elapsedMovingAverage:" << elapsedMovingAverage | |
| 287 | + << "maxElapsed:" << _maxElapsed | |
| 288 | + << "PREVIOUS maxElapsedAverage:" << _maxElapsedAverage | |
| 289 | + << "NEW maxElapsedAverage:" << elapsedMovingAverage | |
| 290 | + << "numSamples:" << _movingAverage.numSamples; | |
| 291 | + _maxElapsedAverage = elapsedMovingAverage; | |
| 292 | + } | |
| 293 | + if (lastHeartbeatAge > _maxElapsed) { | |
| 294 | + qDebug() << "DEADLOCK WATCHDOG NEW maxElapsed:" | |
| 295 | + << "lastHeartbeatAge:" << lastHeartbeatAge | |
| 296 | + << "elapsedMovingAverage:" << elapsedMovingAverage | |
| 297 | + << "PREVIOUS maxElapsed:" << _maxElapsed | |
| 298 | + << "NEW maxElapsed:" << lastHeartbeatAge | |
| 299 | + << "maxElapsedAverage:" << _maxElapsedAverage | |
| 300 | + << "numSamples:" << _movingAverage.numSamples; | |
| 301 | + _maxElapsed = lastHeartbeatAge; | |
| 285 | 302 | } |
| 286 | 303 | if ((sinceLastReport > HEARTBEAT_REPORT_INTERVAL_USECS) || (elapsedMovingAverage > WARNING_ELAPSED_HEARTBEAT)) { |
| 287 | − qDebug() << "updateHeartbeat.elapsedMovingAverage:" << elapsedMovingAverage | |
| 288 | − << " maxElapsed:" << _maxElapsed << "numSamples:" << _movingAverage.numSamples; | |
| 304 | + qDebug() << "DEADLOCK WATCHDOG STATUS -- lastHeartbeatAge:" << lastHeartbeatAge | |
| 305 | + << "elapsedMovingAverage:" << elapsedMovingAverage | |
| 306 | + << "maxElapsed:" << _maxElapsed | |
| 307 | + << "maxElapsedAverage:" << _maxElapsedAverage | |
| 308 | + << "numSamples:" << _movingAverage.numSamples; | |
| 289 | 309 | _lastReport = now; |
| 290 | 310 | } |
| 291 | 311 | |
| 292 | 312 | #ifdef NDEBUG |
| 293 | 313 | if (lastHeartbeatAge > MAX_HEARTBEAT_AGE_USECS) { |
| 294 | − qDebug() << "DEADLOCK DETECTED -- updateHeartbeat.elapsedMovingAverage:" << elapsedMovingAverage | |
| 295 | − << " maxElapsed:" << _maxElapsed << "numSamples:" << _movingAverage.numSamples; | |
| 314 | + qDebug() << "DEADLOCK DETECTED -- lastHeartbeatAge:" << lastHeartbeatAge | |
| 315 | + << "elapsedMovingAverage:" << elapsedMovingAverage | |
| 316 | + << "maxElapsed:" << _maxElapsed | |
| 317 | + << "maxElapsedAverage:" << _maxElapsedAverage | |
| 318 | + << "numSamples:" << _movingAverage.numSamples; | |
| 296 | 319 | deadlockDetectionCrash(); |
| 297 | 320 | } |
| 298 | 321 | #endif |
| @@ -302,6 +325,7 @@ public: · 3 unmodified lines | ||
| 302 | 325 | static std::atomic<uint64_t> _heartbeat; |
| 303 | 326 | static std::atomic<uint64_t> _lastReport; |
| 304 | 327 | static std::atomic<int> _maxElapsed; |
| 328 | + static std::atomic<int> _maxElapsedAverage; | |
| 305 | 329 | bool _quit { false }; |
| 306 | 330 | MovingAverage<int, HEARTBEAT_SAMPLES> _movingAverage; |
| 307 | 331 | }; |
| @@ -309,6 +333,7 @@ public: · 1 unmodified line | ||
| 309 | 333 | std::atomic<uint64_t> DeadlockWatchdogThread::_heartbeat; |
| 310 | 334 | std::atomic<uint64_t> DeadlockWatchdogThread::_lastReport; |
| 311 | 335 | std::atomic<int> DeadlockWatchdogThread::_maxElapsed; |
| 336 | +std::atomic<int> DeadlockWatchdogThread::_maxElapsedAverage; | |
| 312 | 337 | |
| 313 | 338 | #ifdef Q_OS_WIN |
| 314 | 339 | class MyNativeEventFilter : public QAbstractNativeEventFilter { |