Problem Description Under the arm64_ft architecture, Redis is running in the process, and the process status is sleep. However, Redis appears to have encountered a free() call issue in the freeClientsInAsyncFreeQueue function, which then causes malloc to allocate memory when recording the crash, leading to a deadlock. As a result, the Redis process does not respond and does not exit.

  • Using the hiredis client
  • The client primarily uses the pub/sub functionality, accompanied by minimal data modification and read operations, with a database size not exceeding 10,000.
  • The total number of clients does not exceed 20.

  • Redis version: 6.2.7

  • No multithreading is used, and no module functionality is employed.
  • Persistence is enabled with the following configuration: save 10 1 save 300 10 save 60 10000
  • The Redis service configuration is one master and one slave, with no sentinel. Master-slave switching is controlled by a script.
  • maxmemory is configured to 2 GB.
  • timeout is configured to 0.

Process and stack information as follows:

Process stack information:

Image

gdb tracks process stack information:

Image

freeClientsInAsyncFreeQueue is releasing client structure information.:

Image

Comment From: sundb

@Ak1yama-mio can you share the fully crash report? thx.

Comment From: Ak1yama-mio

@Ak1yama-mio can you share the fully crash report? thx.

sorry,there is no complete crash log because, as seen in the process stack, the futex lock was deadlocked when attempting to record the crash information in the malloc memory.