src/http/ngx_http_file_cache.c:1930: error: Integer Overflow L1
  ([-oo, `ngx_current_msec` - 1] - `ngx_current_msec`):unsigned64 by call to `ngx_http_file_cache_expire`.

src/http/ngx_http_file_cache.c:1917:1: Global `ngx_current_msec`
1915. 
1916. 
1917. static ngx_msec_t
      ^
1918. ngx_http_file_cache_manager(void *data)
1919. {

src/http/ngx_http_file_cache.c:1927:5: Assignment
1925.     ngx_uint_t  count, watermark;
1926. 
1927.     cache->last = ngx_current_msec;
          ^
1928.     cache->files = 0;
1929. 

src/http/ngx_http_file_cache.c:1930:12: Call
1928.     cache->files = 0;
1929. 
1930.     next = ngx_http_file_cache_expire(cache);
                 ^
1931. 
1932.     if (next == 0) {

src/http/ngx_http_file_cache.c:1755:1: <LHS trace>
1753. 
1754. 
1755. static time_t
      ^
1756. ngx_http_file_cache_expire(ngx_http_file_cache_t *cache)
1757. {

src/http/ngx_http_file_cache.c:1755:1: Global `ngx_current_msec`
  1753. 
  1754. 
  1755. static time_t
        ^
  1756. ngx_http_file_cache_expire(ngx_http_file_cache_t *cache)
  1757. {

src/http/ngx_http_file_cache.c:1755:1: <RHS trace>
1753. 
1754. 
1755. static time_t
      ^
1756. ngx_http_file_cache_expire(ngx_http_file_cache_t *cache)
1757. {

src/http/ngx_http_file_cache.c:1755:1: Global `ngx_current_msec`
  1753. 
  1754. 
  1755. static time_t
        ^
  1756. ngx_http_file_cache_expire(ngx_http_file_cache_t *cache)
  1757. {

src/http/ngx_http_file_cache.c:1850:19: Binary operation: ([-oo, ngx_current_msec - 1] - ngx_current_msec):unsigned64 by call to `ngx_http_file_cache_expire` 
  1848.         ngx_time_update();
  1849. 
  1850.         elapsed = ngx_abs((ngx_msec_int_t) (ngx_current_msec - cache->last));
                          ^
  1851. 
  1852.         if (elapsed >= cache->manager_threshold) {

static time_t
ngx_http_file_cache_expire(ngx_http_file_cache_t *cache)
{
    u_char                      *name, *p;
    size_t                       len;
    time_t                       now, wait;
    ngx_path_t                  *path;
    ngx_msec_t                   elapsed;
    ngx_queue_t                 *q;
    ngx_http_file_cache_node_t  *fcn;
    u_char                       key[2 * NGX_HTTP_CACHE_KEY_LEN];
    ngx_log_debug0(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0,
                   "http file cache expire");
    path = cache->path;
    len = path->name.len + 1 + path->len + 2 * NGX_HTTP_CACHE_KEY_LEN;
    name = ngx_alloc(len + 1, ngx_cycle->log);
    if (name == NULL) {
        return 10;
    }
    ngx_memcpy(name, path->name.data, path->name.len);
    now = ngx_time();
    ngx_shmtx_lock(&cache->shpool->mutex);
    for ( ;; ) {
        if (ngx_quit || ngx_terminate) {
            wait = 1;
            break;
        }
        if (ngx_queue_empty(&cache->sh->queue)) {
            wait = 10;
            break;
        }
        q = ngx_queue_last(&cache->sh->queue);
        fcn = ngx_queue_data(q, ngx_http_file_cache_node_t, queue);
        wait = fcn->expire - now;
        if (wait > 0) {
            wait = wait > 10 ? 10 : wait;
            break;
        }
        ngx_log_debug6(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0,
                       "http file cache expire: #%d %d %02xd%02xd%02xd%02xd",
                       fcn->count, fcn->exists,
                       fcn->key[0], fcn->key[1], fcn->key[2], fcn->key[3]);
        if (fcn->count == 0) {
            ngx_http_file_cache_delete(cache, q, name);
            goto next;
        }
        if (fcn->deleting) {
            wait = 1;
            break;
        }
        p = ngx_hex_dump(key, (u_char *) &fcn->node.key,
                         sizeof(ngx_rbtree_key_t));
        len = NGX_HTTP_CACHE_KEY_LEN - sizeof(ngx_rbtree_key_t);
        (void) ngx_hex_dump(p, fcn->key, len);
        ngx_queue_remove(q);
        fcn->expire = ngx_time() + cache->inactive;
        ngx_queue_insert_head(&cache->sh->queue, &fcn->queue);
        ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, 0,
                      "ignore long locked inactive cache entry %*s, count:%d",
                      (size_t) 2 * NGX_HTTP_CACHE_KEY_LEN, key, fcn->count);
next:
        if (++cache->files >= cache->manager_files) {
            wait = 0;
            break;
        }
        ngx_time_update();
        elapsed = ngx_abs((ngx_msec_int_t) (ngx_current_msec - cache->last));
        if (elapsed >= cache->manager_threshold) {
            wait = 0;
            break;
        }
    }
    ngx_shmtx_unlock(&cache->shpool->mutex);
    ngx_free(name);
    return wait;
}
['static ngx_msec_t\nngx_http_file_cache_manager(void *data)\n{\n    ngx_http_file_cache_t  *cache = data;\n    off_t       size;\n    time_t      next, wait;\n    ngx_msec_t  elapsed;\n    ngx_uint_t  count, watermark;\n    cache->last = ngx_current_msec;\n    cache->files = 0;\n    next = ngx_http_file_cache_expire(cache);\n    if (next == 0) {\n        return cache->manager_sleep;\n    }\n    for ( ;; ) {\n        ngx_shmtx_lock(&cache->shpool->mutex);\n        size = cache->sh->size;\n        count = cache->sh->count;\n        watermark = cache->sh->watermark;\n        ngx_shmtx_unlock(&cache->shpool->mutex);\n        ngx_log_debug3(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0,\n                       "http file cache size: %O c:%ui w:%i",\n                       size, count, (ngx_int_t) watermark);\n        if (size < cache->max_size && count < watermark) {\n            return (ngx_msec_t) next * 1000;\n        }\n        wait = ngx_http_file_cache_forced_expire(cache);\n        if (wait > 0) {\n            return (ngx_msec_t) wait * 1000;\n        }\n        if (ngx_quit || ngx_terminate) {\n            return (ngx_msec_t) next * 1000;\n        }\n        if (++cache->files >= cache->manager_files) {\n            return cache->manager_sleep;\n        }\n        ngx_time_update();\n        elapsed = ngx_abs((ngx_msec_int_t) (ngx_current_msec - cache->last));\n        if (elapsed >= cache->manager_threshold) {\n            return cache->manager_sleep;\n        }\n    }\n}', 'static time_t\nngx_http_file_cache_expire(ngx_http_file_cache_t *cache)\n{\n    u_char                      *name, *p;\n    size_t                       len;\n    time_t                       now, wait;\n    ngx_path_t                  *path;\n    ngx_msec_t                   elapsed;\n    ngx_queue_t                 *q;\n    ngx_http_file_cache_node_t  *fcn;\n    u_char                       key[2 * NGX_HTTP_CACHE_KEY_LEN];\n    ngx_log_debug0(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0,\n                   "http file cache expire");\n    path = cache->path;\n    len = path->name.len + 1 + path->len + 2 * NGX_HTTP_CACHE_KEY_LEN;\n    name = ngx_alloc(len + 1, ngx_cycle->log);\n    if (name == NULL) {\n        return 10;\n    }\n    ngx_memcpy(name, path->name.data, path->name.len);\n    now = ngx_time();\n    ngx_shmtx_lock(&cache->shpool->mutex);\n    for ( ;; ) {\n        if (ngx_quit || ngx_terminate) {\n            wait = 1;\n            break;\n        }\n        if (ngx_queue_empty(&cache->sh->queue)) {\n            wait = 10;\n            break;\n        }\n        q = ngx_queue_last(&cache->sh->queue);\n        fcn = ngx_queue_data(q, ngx_http_file_cache_node_t, queue);\n        wait = fcn->expire - now;\n        if (wait > 0) {\n            wait = wait > 10 ? 10 : wait;\n            break;\n        }\n        ngx_log_debug6(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0,\n                       "http file cache expire: #%d %d %02xd%02xd%02xd%02xd",\n                       fcn->count, fcn->exists,\n                       fcn->key[0], fcn->key[1], fcn->key[2], fcn->key[3]);\n        if (fcn->count == 0) {\n            ngx_http_file_cache_delete(cache, q, name);\n            goto next;\n        }\n        if (fcn->deleting) {\n            wait = 1;\n            break;\n        }\n        p = ngx_hex_dump(key, (u_char *) &fcn->node.key,\n                         sizeof(ngx_rbtree_key_t));\n        len = NGX_HTTP_CACHE_KEY_LEN - sizeof(ngx_rbtree_key_t);\n        (void) ngx_hex_dump(p, fcn->key, len);\n        ngx_queue_remove(q);\n        fcn->expire = ngx_time() + cache->inactive;\n        ngx_queue_insert_head(&cache->sh->queue, &fcn->queue);\n        ngx_log_error(NGX_LOG_ALERT, ngx_cycle->log, 0,\n                      "ignore long locked inactive cache entry %*s, count:%d",\n                      (size_t) 2 * NGX_HTTP_CACHE_KEY_LEN, key, fcn->count);\nnext:\n        if (++cache->files >= cache->manager_files) {\n            wait = 0;\n            break;\n        }\n        ngx_time_update();\n        elapsed = ngx_abs((ngx_msec_int_t) (ngx_current_msec - cache->last));\n        if (elapsed >= cache->manager_threshold) {\n            wait = 0;\n            break;\n        }\n    }\n    ngx_shmtx_unlock(&cache->shpool->mutex);\n    ngx_free(name);\n    return wait;\n}']