Timestamp can be zero for example when Flatpak is used. In this
case just disable the cache rather then segfaulting when
incompatible cache items are loaded.

V2: actually return false when mtime is 0.
---
 src/amd/vulkan/radv_device.c | 4 ----
 src/util/disk_cache.h        | 8 ++++++++
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index f9169d9d012..7d915c68aaa 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -61,10 +61,6 @@ radv_get_build_id(void *ptr, struct mesa_sha1 *ctx)
        } else
 #endif
        if (disk_cache_get_function_timestamp(ptr, &timestamp)) {
-               if (!timestamp) {
-                       fprintf(stderr, "radv: The provided filesystem 
timestamp for the cache is bogus!\n");
-               }
-
                _mesa_sha1_update(ctx, &timestamp, sizeof(timestamp));
        } else
                return false;
diff --git a/src/util/disk_cache.h b/src/util/disk_cache.h
index 962a26ffc8c..185e05f200e 100644
--- a/src/util/disk_cache.h
+++ b/src/util/disk_cache.h
@@ -101,7 +101,15 @@ disk_cache_get_function_timestamp(void *ptr, uint32_t* 
timestamp)
    if (stat(info.dli_fname, &st)) {
       return false;
    }
+
+   if (!st.st_mtime) {
+      fprintf(stderr, "Mesa: The provided filesystem timestamp for the cache "
+              "is bogus! Disabling On-disk cache.\n");
+      return false;
+   }
+
    *timestamp = st.st_mtime;
+
    return true;
 }
 
-- 
2.17.1

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to