• George Prekas's avatar
    Add check for the MADV_FREE/fork arm64 Linux kernel bug (#8224) · ddf81e2f
    George Prekas authored
    
    
    Older arm64 Linux kernels have a bug that could lead to data corruption during
    background save under the following scenario:
    
    1) jemalloc uses MADV_FREE on a page,
    2) jemalloc reuses and writes the page,
    3) Redis forks the background save process, and
    4) Linux performs page reclamation.
    
    Under these conditions, Linux will reclaim the page wrongfully and the
    background save process will read zeros when it tries to read the page.
    
    The bug has been fixed in Linux with commit:
    ff1712f953e27f0b0718762ec17d0adb15c9fd0b ("arm64: pgtable: Ensure dirty bit is
    preserved across pte_wrprotect()")
    
    This Commit adds an ignore-warnings config, when not found, redis will
    print a warning and exit on startup (default behavior).
    Co-authored-by: default avatarOran Agra <oran@redislabs.com>
    (cherry picked from commit b02780c4)
    ddf81e2f
server.c 172 KB