RedBeardLab / rediSQL

Redis module that provides a completely functional SQL database
https://redisql.com
Other
1.55k stars 150 forks source link

COPY command more than one time crashes redis server #38

Closed salt4pommes closed 5 years ago

salt4pommes commented 5 years ago

Version-Info: Redis 5.0.3 RediSQL: 0.9.0 Pro

Server crashes after second copy call.

On the first call, the copy is completely successful. On the second call the crash prevents the successful copy.

There is also no crash report in server log and that's very strange.

PS: REDISQL.COPY.NOW works fine! The only seems to affect the default COPY command.

Example 1: 127.0.0.1:6381> REDISQL.CREATE_DB db OK 127.0.0.1:6381> REDISQL.CREATE_DB db2 OK 127.0.0.1:6381> REDISQL.COPY db db2 OK 127.0.0.1:6381> REDISQL.COPY db db2 (nil) (10.00s) 127.0.0.1:6381> REDISQL.COPY db db2 Could not connect to Redis at 127.0.0.1:6381: Connection refused not connected>

Example 2: 127.0.0.1:6381> REDISQL.CREATE_DB db3 OK 127.0.0.1:6381> REDISQL.COPY db db2 OK 127.0.0.1:6381> REDISQL.COPY db db3 Could not connect to Redis at 127.0.0.1:6381: Connection refused not connected>

salt4pommes commented 5 years ago

12551:C 13 Mar 2019 16:44:48.081 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 12551:C 13 Mar 2019 16:44:48.081 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=12551, just started 12551:C 13 Mar 2019 16:44:48.081 # Configuration loaded 12551:M 13 Mar 2019 16:44:48.083 # You requested maxclients of 10000 requiring at least 10032 max file descriptors. 12551:M 13 Mar 2019 16:44:48.083 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted. 12551:M 13 Mar 2019 16:44:48.083 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'. .
_.-__ ''-._ _.- .. ''-. Redis 5.0.3 (00000000/0) 64 bit .-.-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in standalone mode |`-._`-...-` __...-.-.|'` .-'| Port: 6666 | -._. / .-' | PID: 12551 -._-. `-./ .-' .-'
|`-.
-._-..-' .-'.-'|
| -._-. .-'.-' | http://redis.io
`-.
-._-.
.-'.-' .-'
|-._-._ -.__.-' _.-'_.-'| |-.`-. .-'.-' |
-._-._-.__.-'_.-' _.-' -._ -.__.-' _.-' -. .-'
`-.__.-'

12551:M 13 Mar 2019 16:44:48.084 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. 12551:M 13 Mar 2019 16:44:48.085 # Server initialized 12551:M 13 Mar 2019 16:44:48.085 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect. 12551:M 13 Mar 2019 16:44:48.085 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled. 12551:M 13 Mar 2019 16:44:48.086 Module 'rediSQL' loaded from ./redisql.so 12551:M 13 Mar 2019 16:44:48.086 Ready to accept connections * Error in `redis-server :6666': corrupted double-linked list: 0x000000000131bd20 ======= Backtrace: ========= /usr/lib/libc.so.6(+0x70c4b)[0x7fa82e0ffc4b] /usr/lib/libc.so.6(+0x76fe6)[0x7fa82e105fe6] /usr/lib/libc.so.6(+0x79570)[0x7fa82e108570] /usr/lib/libc.so.6(__libc_malloc+0x54)[0x7fa82e109d44] ./redisql.so(+0x2ae11)[0x7fa82b9e3e11] ./redisql.so(+0x1f85e)[0x7fa82b9d885e] ./redisql.so(+0x1ade6)[0x7fa82b9d3de6] redis-server :6666(RedisModuleCommandDispatcher+0x4f)[0x49e22f] redis-server :6666(call+0xaf)[0x42ea4f] redis-server :6666(processCommand+0x377)[0x42f117] redis-server :6666(processInputBuffer+0x175)[0x43f245] redis-server :6666(aeProcessEvents+0x2c0)[0x4287b0] redis-server :6666(aeMain+0x2b)[0x428a6b] redis-server :6666(main+0x4b8)[0x425618] /usr/lib/libc.so.6(__libc_start_main+0xf1)[0x7fa82e0af291] redis-server :6666(_start+0x2a)[0x42587a] ======= Memory map: ======== 00400000-0059a000 r-xp 00000000 fe:00 3481726 /usr/bin/redis-server 0079a000-0079c000 r--p 0019a000 fe:00 3481726 /usr/bin/redis-server 0079c000-007a2000 rw-p 0019c000 fe:00 3481726 /usr/bin/redis-server 007a2000-009c7000 rw-p 00000000 00:00 0 012e7000-01387000 rw-p 00000000 00:00 0 [heap] 7fa81c000000-7fa81c021000 rw-p 00000000 00:00 0 7fa81c021000-7fa820000000 ---p 00000000 00:00 0 7fa820000000-7fa820021000 rw-p 00000000 00:00 0 7fa820021000-7fa824000000 ---p 00000000 00:00 0 7fa824000000-7fa824021000 rw-p 00000000 00:00 0 7fa824021000-7fa828000000 ---p 00000000 00:00 0 7fa82a800000-7fa82ac00000 rw-p 00000000 00:00 0 7fa82ac1f000-7fa82ac20000 ---p 00000000 00:00 0 7fa82ac20000-7fa82ae20000 rw-p 00000000 00:00 0 7fa82ae20000-7fa82ae21000 ---p 00000000 00:00 0 7fa82ae21000-7fa82b021000 rw-p 00000000 00:00 0 7fa82b021000-7fa82b022000 ---p 00000000 00:00 0 7fa82b022000-7fa82b222000 rw-p 00000000 00:00 0 7fa82b222000-7fa82b7a2000 rw-p 00000000 00:00 0 7fa82b7a2000-7fa82b7b8000 r-xp 00000000 fe:00 3429508 /usr/lib/libgcc_s.so.1 7fa82b7b8000-7fa82b9b7000 ---p 00016000 fe:00 3429508 /usr/lib/libgcc_s.so.1 7fa82b9b7000-7fa82b9b8000 r--p 00015000 fe:00 3429508 /usr/lib/libgcc_s.so.1 7fa82b9b8000-7fa82b9b9000 rw-p 00016000 fe:00 3429508 /usr/lib/libgcc_s.so.1 7fa82b9b9000-7fa82bbc5000 r-xp 00000000 fe:00 4076616 /home/willi/.redis/redisql.so 7fa82bbc5000-7fa82bdc4000 ---p 0020c000 fe:00 4076616 /home/willi/.redis/redisql.so 7fa82bdc4000-7fa82bdcf000 r--p 0020b000 fe:00 4076616 /home/willi/.redis/redisql.so 7fa82bdcf000-7fa82bdd2000 rw-p 00216000 fe:00 4076616 /home/willi/.redis/redisql.so 7fa82bdd2000-7fa82bdd3000 rw-p 00000000 00:00 0 7fa82bdd3000-7fa82bdd4000 ---p 00000000 00:00 0 7fa82bdd4000-7fa82c5d4000 rw-p 00000000 00:00 0 7fa82c5d4000-7fa82c5d5000 ---p 00000000 00:00 0 7fa82c5d5000-7fa82cdd5000 rw-p 00000000 00:00 0 7fa82cdd5000-7fa82cdd6000 ---p 00000000 00:00 0 7fa82cdd6000-7fa82d5d6000 rw-p 00000000 00:00 0 7fa82d5d6000-7fa82d800000 r--p 00000000 fe:00 3430214 /usr/lib/locale/locale-archive 7fa82d800000-7fa82e000000 rw-p 00000000 00:00 0 7fa82e08f000-7fa82e224000 r-xp 00000000 fe:00 3411110 /usr/lib/libc-2.24.so 7fa82e224000-7fa82e423000 ---p 00195000 fe:00 3411110 /usr/lib/libc-2.24.so 7fa82e423000-7fa82e427000 r--p 00194000 fe:00 3411110 /usr/lib/libc-2.24.so 7fa82e427000-7fa82e429000 rw-p 00198000 fe:00 3411110 /usr/lib/libc-2.24.so 7fa82e429000-7fa82e42d000 rw-p 00000000 00:00 0 7fa82e42d000-7fa82e445000 r-xp 00000000 fe:00 3411091 /usr/lib/libpthread-2.24.so 7fa82e445000-7fa82e644000 ---p 00018000 fe:00 3411091 /usr/lib/libpthread-2.24.so 7fa82e644000-7fa82e645000 r--p 00017000 fe:00 3411091 /usr/lib/libpthread-2.24.so 7fa82e645000-7fa82e646000 rw-p 00018000 fe:00 3411091 /usr/lib/libpthread-2.24.so 7fa82e646000-7fa82e64a000 rw-p 00000000 00:00 0 7fa82e64a000-7fa82e651000 r-xp 00000000 fe:00 3411171 /usr/lib/librt-2.24.so 7fa82e651000-7fa82e850000 ---p 00007000 fe:00 3411171 /usr/lib/librt-2.24.so 7fa82e850000-7fa82e851000 r--p 00006000 fe:00 3411171 /usr/lib/librt-2.24.so 7fa82e851000-7fa82e852000 rw-p 00007000 fe:00 3411171 /usr/lib/librt-2.24.so 7fa82e852000-7fa82e854000 r-xp 00000000 fe:00 3411167 /usr/lib/libdl-2.24.so 7fa82e854000-7fa82ea54000 ---p 00002000 fe:00 3411167 /usr/lib/libdl-2.24.so 7fa82ea54000-7fa82ea55000 r--p 00002000 fe:00 3411167 /usr/lib/libdl-2.24.so 7fa82ea55000-7fa82ea56000 rw-p 00003000 fe:00 3411167 /usr/lib/libdl-2.24.so 7fa82ea56000-7fa82eb59000 r-xp 00000000 fe:00 3411168 /usr/lib/libm-2.24.so 7fa82eb59000-7fa82ed58000 ---p 00103000 fe:00 3411168 /usr/lib/libm-2.24.so 7fa82ed58000-7fa82ed59000 r--p 00102000 fe:00 3411168 /usr/lib/libm-2.24.so 7fa82ed59000-7fa82ed5a000 rw-p 00103000 fe:00 3411168 /usr/lib/libm-2.24.so 7fa82ed5a000-7fa82ed7d000 r-xp 00000000 fe:00 3411109 /usr/lib/ld-2.24.so 7fa82ef16000-7fa82ef1e000 rw-p 00000000 00:00 0 7fa82ef77000-7fa82ef7c000 rw-p 00000000 00:00 0 7fa82ef7c000-7fa82ef7d000 r--p 00022000 fe:00 3411109 /usr/lib/ld-2.24.so 7fa82ef7d000-7fa82ef7e000 rw-p 00023000 fe:00 3411109 /usr/lib/ld-2.24.so 7fa82ef7e000-7fa82ef7f000 rw-p 00000000 00:00 0 7fffd1bcc000-7fffd1bed000 rw-p 00000000 00:00 0 [stack] 7fffd1bf3000-7fffd1bf6000 r--p 00000000 00:00 0 [vvar] 7fffd1bf6000-7fffd1bf8000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] [1] 12551 abort (core dumped) redis-server --port 6666 --loadmodule ./redisql.so

siscia commented 5 years ago

Thank you very much!

Investigating now! I will come back to this as soon as possible!

siscia commented 5 years ago

Indeed I can re-produce the bug: https://github.com/RedBeardLab/rediSQL/commit/da3af14991a23a3b46db84cc79edcfc533706121

siscia commented 5 years ago

The issue is been fixed :rocket: , I will release the version 0.9.1 soon.

salt4pommes commented 5 years ago

Great :) Glad to hear that.

Could you please send me the 0.9.1 pro version with the bugfix after release?