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