redis报错:EXCEPTION_ACCESS_VIOLATION
最近在压测暂存区。
所谓暂存区:使用RabbitMQ和限流设置,控制业务处理流速。
但是经常莫名其妙的汇报如下错误:
=== REDIS BUG REPORT START: Cut & paste starting from here ===
Redis version: 3.2.100
[4160] 11 Feb 15:32:46.222 # --- EXCEPTION_ACCESS_VIOLATION
[4160] 11 Feb 15:32:46.223 # --- STACK TRACE
redis-server.exe!LogStackTrace(c:\release\redis\src\win32_interop\win32_stacktrace.cpp:95)(0x0014E200, 0x0014FF60, 0x40028F20, 0x4013A7F8)
redis-server.exe!UnhandledExceptiontHandler(c:\release\redis\src\win32_interop\win32_stacktrace.cpp:185)(0x00000000, 0x00000000, 0x00000000, 0x00000001)
KERNELBASE.dll!UnhandledExceptionFilter(c:\release\redis\src\win32_interop\win32_stacktrace.cpp:185)(0x00000000, 0x3C864420, 0x00000000, 0x0014FEF0)
ntdll.dll!memset(c:\release\redis\src\win32_interop\win32_stacktrace.cpp:185)(0x0014EE70, 0x00000000, 0x0014E7C8, 0x0014E850)
ntdll.dll!_C_specific_handler(c:\release\redis\src\win32_interop\win32_stacktrace.cpp:185)(0x00000000, 0x0014E7B0, 0x0014EE70, 0x0014EE70)
ntdll.dll!_chkstk(c:\release\redis\src\win32_interop\win32_stacktrace.cpp:185)(0x00000001, 0x3C720000, 0x00000000, 0x3C88E9F0)
ntdll.dll!*RtlRaiseException*(c:\release\redis\src\win32_interop\win32_stacktrace.cpp:185)(0x0014EA00, 0x0000000B, 0x0014F1F0, 0x00000000)
ntdll.dll!KiUserExceptionDispatcher(c:\release\redis\src\win32_interop\win32_stacktrace.cpp:185)(0x40094F01, 0x3658D701, 0x787A61A0, 0x0014F2B3)
redis-server.exe!dictSdsHash(c:\release\redis\src\server.c:496)(0x3658D701, 0x787A61A0, 0x0014F2B3, 0x3831EB56)
redis-server.exe!dictFind(c:\release\redis\src\dict.c:517)(0x0014F1F0, 0x00000001, 0x001C8355, 0x00000001)
redis-server.exe!getExpire(c:\release\redis\src\db.c:871)(0x787A61A0, 0x0014F2B0, 0x0014F2B0, 0x03C07040)
redis-server.exe!rdbSaveRio(c:\release\redis\src\rdb.c:814)(0x40167210, 0x00DF0000, 0x00000005, 0x011F2754)
redis-server.exe!rdbSave(c:\release\redis\src\rdb.c:884)(0x00DF0000, 0x00DF0000, 0x5E4544F9, 0x00000005)
redis-server.exe!QForkChildInit(c:\release\redis\src\win32_interop\win32_qfork.cpp:337)(0x00000005, 0x00000000, 0x004DFDF0, 0x00000005)
redis-server.exe!QForkStartup(c:\release\redis\src\win32_interop\win32_qfork.cpp:515)(0x00000006, 0x00000000, 0x00000000, 0x004C8BD0)
redis-server.exe!main(c:\release\redis\src\win32_interop\win32_qfork.cpp:1240)(0x00000000, 0x00000000, 0x00000000, 0x00000000)
redis-server.exe!__tmainCRTStartup(f:\dd\vctools\crt\crtw32\startup\crt0.c:255)(0x00000000, 0x00000000, 0x00000000, 0x00000000)
KERNEL32.DLL!BaseThreadInitThunk(f:\dd\vctools\crt\crtw32\startup\crt0.c:255)(0x00000000, 0x00000000, 0x00000000, 0x00000000)
ntdll.dll!RtlUserThreadStart(f:\dd\vctools\crt\crtw32\startup\crt0.c:255)(0x00000000, 0x00000000, 0x00000000, 0x00000000)
ntdll.dll!RtlUserThreadStart(f:\dd\vctools\crt\crtw32\startup\crt0.c:255)(0x00000000, 0x00000000, 0x00000000, 0x00000000)
[4160] 11 Feb 15:32:46.258 # --- INFO OUTPUT
[5004] 11 Feb 15:32:54.467 # fork operation failed
[5004] 11 Feb 15:32:54.629 # Background saving terminated by signal 1
[5004] 11 Feb 15:32:54.729 * 10000 changes in 60 seconds. Saving...
但是并没有找到什么比较合理的解释,大部分都是说因为内存分配问题导致。
所使用环境:windows10,16g。