summaryrefslogtreecommitdiff
path: root/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker/0002-metrics-change-the-constant-used-for-invalid-timesta.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker/0002-metrics-change-the-constant-used-for-invalid-timesta.patch')
-rw-r--r--meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker/0002-metrics-change-the-constant-used-for-invalid-timesta.patch86
1 files changed, 86 insertions, 0 deletions
diff --git a/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker/0002-metrics-change-the-constant-used-for-invalid-timesta.patch b/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker/0002-metrics-change-the-constant-used-for-invalid-timesta.patch
new file mode 100644
index 000000000..67a2dc46f
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-core/dbus/dbus-broker/0002-metrics-change-the-constant-used-for-invalid-timesta.patch
@@ -0,0 +1,86 @@
+From 3570b3e9ba367f10718b56336ce32d5254f66575 Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Thu, 9 May 2019 13:00:37 +0200
+Subject: [PATCH] metrics: change the constant used for invalid timestamps
+
+Use (uint64_t)-1 rather than 0 to indicate an invalid timestamp. It
+should not be possible for the kernel to return 0 from
+clock_gettime(), but we have received some reports of our asserts
+triggering, so avoid the issue entirely by using -1 instead (which
+really can never be returned).
+
+See https://retrace.fedoraproject.org/faf/reports/2539484/
+
+Signed-off-by: Tom Gundersen <teg@jklm.no>
+Upstream-Status: dbus-broker@3570b3e9ba367f10718b56336ce32d5254f66575
+---
+ src/util/metrics.c | 8 ++++----
+ src/util/metrics.h | 9 ++++++---
+ 2 files changed, 10 insertions(+), 7 deletions(-)
+
+diff --git a/src/util/metrics.c b/src/util/metrics.c
+index b5a7182..eef94eb 100644
+--- a/src/util/metrics.c
++++ b/src/util/metrics.c
+@@ -26,7 +26,7 @@ void metrics_init(Metrics *metrics, clockid_t id) {
+ }
+
+ void metrics_deinit(Metrics *metrics) {
+- c_assert(!metrics->timestamp);
++ c_assert(metrics->timestamp == METRICS_TIMESTAMP_INVALID);
+ metrics_init(metrics, metrics->id);
+ }
+
+@@ -82,7 +82,7 @@ void metrics_sample_add(Metrics *metrics, uint64_t timestamp) {
+ * a sample is not currently running.
+ */
+ void metrics_sample_start(Metrics *metrics) {
+- c_assert(!metrics->timestamp);
++ c_assert(metrics->timestamp == METRICS_TIMESTAMP_INVALID);
+ metrics->timestamp = metrics_get_time(metrics);
+ }
+
+@@ -93,11 +93,11 @@ void metrics_sample_start(Metrics *metrics) {
+ * End a currently running sample, and update the internal state.
+ */
+ void metrics_sample_end(Metrics *metrics) {
+- c_assert(metrics->timestamp);
++ c_assert(metrics->timestamp != METRICS_TIMESTAMP_INVALID);
+
+ metrics_sample_add(metrics, metrics->timestamp);
+
+- metrics->timestamp = 0;
++ metrics->timestamp = METRICS_TIMESTAMP_INVALID;
+ }
+
+ /**
+diff --git a/src/util/metrics.h b/src/util/metrics.h
+index a8ee915..b00dee6 100644
+--- a/src/util/metrics.h
++++ b/src/util/metrics.h
+@@ -8,6 +8,8 @@
+ #include <stdlib.h>
+ #include <time.h>
+
++#define METRICS_TIMESTAMP_INVALID ((uint64_t) -1)
++
+ typedef struct Metrics Metrics;
+
+ struct Metrics {
+@@ -23,9 +25,10 @@ struct Metrics {
+ uint64_t sum_of_squares;
+ };
+
+-#define METRICS_INIT(_id) { \
+- .minimum = (uint64_t) -1, \
+- .id = (_id), \
++#define METRICS_INIT(_id) { \
++ .minimum = (uint64_t) -1, \
++ .id = (_id), \
++ .timestamp = METRICS_TIMESTAMP_INVALID, \
+ }
+
+ void metrics_init(Metrics *metrics, clockid_t id);
+--
+2.21.0
+