On 15 Mar 06:40, Theo Buehler wrote:
> > Hi Theo,
> > 
> > just "back ported" redis to 6.6 and it works like a charm on amd64 (except 
> > sentinel which segfaults - but it did also on 4.0.14).
> > 
> 
> Thanks. Yes, there should be no major problems backporting this.
> 
> Could you share a reproducer for this sentinel segfault so I can look
> into it?
> 

Hi Theo,


I tried the following setup:

1 master + 3 slaves. On all machines running sentinel with the following 
(default) config:

######## /etc/redis/sentinel.conf

protected-mode no
port 26379
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster A.B.C.23 6379 2
dir "/tmp"
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000

#######

I run sentinel as user _redis so the owner of the config is _redis.

Start sentinel on all nodes:

doas -u _redis /usr/local/sbin/redis-sentinel /etc/redis/sentinel.conf 
--sentinel

21836:X 15 Mar 2020 17:09:59.806 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
21836:X 15 Mar 2020 17:09:59.807 # Redis version=5.0.8, bits=64, 
commit=00000000, modified=0, pid=21836, just started
21836:X 15 Mar 2020 17:09:59.807 # Configuration loaded
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 5.0.8 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in sentinel mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 26379
 |    `-._   `._    /     _.-'    |     PID: 21836
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

21836:X 15 Mar 2020 17:09:59.811 # Sentinel ID is 
7c56c258f3b6d91a276d66d37edb4a7d34fd46db
21836:X 15 Mar 2020 17:09:59.811 # +monitor master mymaster A.B.C.23 6379 
quorum 2
21836:X 15 Mar 2020 17:10:04.874 # +sdown slave A.B.C.52:6379 A.B.C.52 6379 @ 
mymaster A.B.C.D 6379
21836:X 15 Mar 2020 17:10:04.874 # +sdown slave A.B.C.51:6379 A.B.C.51 6379 @ 
mymaster A.B.C.D 6379
21836:X 15 Mar 2020 17:10:55.617 # +sdown sentinel 
fcb4b40293a180b56f4e00c9c0ac6c719f8b3251 A.B.C.51 26379 @ mymaster A.B.C.23 6379
21836:X 15 Mar 2020 17:11:58.393 # +sdown sentinel 
1891b2bf811eae3ccf2e9dee9ad71f234148f6d7 A.B.C.24 26379 @ mymaster A.B.C.23 6379
21836:X 15 Mar 2020 17:12:02.303 # -sdown sentinel 
fcb4b40293a180b56f4e00c9c0ac6c719f8b3251 A.B.C.51 26379 @ mymaster A.B.C.23 6379
21836:X 15 Mar 2020 17:12:22.703 # -sdown sentinel 
1891b2bf811eae3ccf2e9dee9ad71f234148f6d7 A.B.C.24 26379 @ mymaster A.B.C.23 6379
21836:X 15 Mar 2020 17:12:26.459 # +sdown sentinel 
fcb4b40293a180b56f4e00c9c0ac6c719f8b3251 A.B.C.51 26379 @ mymaster A.B.C.23 6379
21836:X 15 Mar 2020 17:12:35.003 # -sdown sentinel 
fcb4b40293a180b56f4e00c9c0ac6c719f8b3251 A.B.C.51 26379 @ mymaster A.B.C.23 6379
Segmentation fault 

This happens after some time on all 4 nodes.

Kdump shows this:

 94624 redis-server RET   write 14/0xe
 94624 redis-server CALL  kevent(5,0x7f7ffffbddb0,1,0,0,0)
 94624 redis-server STRU  struct kevent { ident=12, filter=EVFILT_WRITE, 
flags=0x2<EV_DELETE>, fflags=0<>, data=0, udata=0x0 }
 94624 redis-server RET   kevent 0
 94624 redis-server CALL  gettimeofday(0x7f7ffffbde10,0)
 94624 redis-server STRU  struct timeval { 1584292747<"Mar 15 17:19:07 
2020">.390804 }
 94624 redis-server RET   gettimeofday 0
 94624 redis-server CALL  gettimeofday(0x7f7ffffbde60,0)
 94624 redis-server STRU  struct timeval { 1584292747<"Mar 15 17:19:07 
2020">.390820 }
 94624 redis-server RET   gettimeofday 0
 94624 redis-server CALL  gettimeofday(0x7f7ffffbddd8,0)
 94624 redis-server STRU  struct timeval { 1584292747<"Mar 15 17:19:07 
2020">.390837 }
 94624 redis-server RET   gettimeofday 0
 94624 redis-server CALL  read(3,0x7f7ffffbde4f,0x1)
 94624 redis-server RET   read -1 errno 35 Resource temporarily unavailable
 94624 redis-server CALL  gettimeofday(0x7f7ffffbde60,0)
 94624 redis-server STRU  struct timeval { 1584292747<"Mar 15 17:19:07 
2020">.390868 }
 94624 redis-server RET   gettimeofday 0
 94624 redis-server CALL  kevent(5,0,0,0x1b3c3e9e0008,224,0x7f7ffffbde60)
 94624 redis-server STRU  struct timespec { 0.058000000 }
 94624 redis-server STRU  struct kevent { ident=8, filter=EVFILT_READ, 
flags=0x1<EV_ADD>, fflags=0<>, data=2896, udata=0x0 }
 94624 redis-server RET   kevent 1
 94624 redis-server CALL  read(8,0x7f7ffffb9de0,0x4000)
 94624 redis-server GIO   fd 8 read 3338 bytes
       "$3329\r
        # Server\r
        redis_version:5.0.8\r
        redis_git_sha1:00000000\r
        redis_git_dirty:0\r
        redis_build_id:fa7e9cf2d63d15f4\r
        redis_mode:standalone\r
        os:OpenBSD 6.6 amd64\r
        arch_bits:64\r
        multiplexing_api:kqueue\r
        atomicvar_api:atomic-builtin\r
        gcc_version:4.2.1\r
        process_id:51797\r
        run_id:af018b4eb67b48a5d994ec0dbfbad652dbd94613\r
        tcp_port:6379\r
        uptime_in_seconds:57557\r
        uptime_in_days:0\r
        hz:10\r
        configured_hz:10\r
        lru_clock:7234443\r
        executable:/usr/local/sbin/redis-server\r
        config_file:/etc/redis/redis.conf\r
        \r
        # Clients\r
        connected_clients:2\r
        client_recent_max_input_buffer:2\r
        client_recent_max_output_buffer:0\r
        blocked_clients:0\r
        \r
        # Memory\r
        used_memory:1484880\r
        used_memory_human:1.42M\r
        used_memory_rss:1451088\r
        used_memory_rss_human:1.38M\r
        used_memory_peak:1687496\r
        used_memory_peak_human:1.61M\r
        used_memory_peak_perc:87.99%\r
        used_memory_overhead:1481914\r
        used_memory_startup:349792\r
        used_memory_dataset:2966\r
        used_memory_dataset_perc:0.26%\r
        allocator_allocated:1451088\r
        allocator_active:1413200\r
        allocator_resident:1413200\r
        total_system_memory:0\r
        total_system_memory_human:0B\r
        used_memory_lua:37888\r
        used_memory_lua_human:37.00K\r
        used_memory_scripts:0\r
        used_memory_scripts_human:0B\r
        number_of_cached_scripts:0\r
        maxmemory:0\r
        maxmemory_human:0B\r
        maxmemory_policy:noeviction\r
        allocator_frag_ratio:0.97\r
        allocator_frag_bytes:18446744073709513728\r
        allocator_rss_ratio:1.00\r
        allocator_rss_bytes:0\r
        rss_overhead_ratio:1.03\r
        rss_overhead_bytes:37888\r
        mem_fragmentation_ratio:1.00\r
        mem_fragmentation_bytes:0\r
        mem_not_counted_for_evict:0\r
        mem_replication_backlog:1048584\r
        mem_clients_slaves:16922\r
        mem_clients_normal:66616\r
        mem_aof_buffer:0\r
        mem_allocator:libc\r
        active_defrag_running:0\r
        lazyfree_pending_objects:0\r
        \r
        # Persistence\r
        loading:0\r
        rdb_changes_since_last_save:0\r
        rdb_bgsave_in_progress:0\r
        rdb_last_save_time:1584235190\r
        rdb_last_bgsave_status:ok\r
        rdb_last_bgsave_time_sec:-1\r
        rdb_current_bgsave_time_sec:-1\r
        rdb_last_cow_size:0\r
        aof_enabled:0\r
        aof_rewrite_in_progress:0\r
        aof_rewrite_scheduled:0\r
        aof_last_rewrite_time_sec:-1\r
        aof_current_rewrite_time_sec:-1\r
        aof_last_bgrewrite_status:ok\r
        aof_last_write_status:ok\r
        aof_last_cow_size:0\r
        \r
        # Stats\r
        total_connections_received:27\r
        total_commands_processed:53496\r
        instantaneous_ops_per_sec:1\r
        total_net_input_bytes:2046405\r
        total_net_output_bytes:584703\r
        instantaneous_input_kbps:0.04\r
        instantaneous_output_kbps:0.01\r
        rejected_connections:0\r
        sync_full:0\r
        sync_partial_ok:3\r
        sync_partial_err:0\r
        expired_keys:0\r
        expired_stale_perc:0.00\r
        expired_time_cap_reached_count:0\r
        evicted_keys:0\r
        keyspace_hits:0\r
        keyspace_misses:0\r
        pubsub_channels:1\r
        pubsub_patterns:0\r
        latest_fork_usec:0\r
        migrate_cached_sockets:0\r
        slave_expires_tracked_keys:0\r
        active_defrag_hits:0\r
        active_defrag_misses:0\r
        active_defrag_key_hits:0\r
        active_defrag_key_misses:0\r
        \r
        # Replication\r
        role:master\r
        connected_slaves:1\r
        slave0:ip=A.B.C.24,port=6379,state=online,offset=127698,lag=1\r
        master_replid:2db1b4c0ae966ac5703dc02a70b10aa116229f00\r
        master_replid2:b8858c4518db5ff25a6850a54b678183cbea74b2\r
        master_repl_offset:127712\r
        second_repl_offset:74663\r
        repl_backlog_active:1\r
        repl_backlog_size:1048576\r
        repl_backlog_first_byte_offset:3137\r
        repl_backlog_histlen:124576\r
        \r
        # CPU\r
        used_cpu_sys:2.590000\r
        used_cpu_user:4.570000\r
        used_cpu_sys_children:0.000000\r
        used_cpu_user_children:0.000000\r
        \r
        # Cluster\r
        cluster_enabled:0\r
        \r
        # Keyspace\r
        \r
       "
 94624 redis-server RET   read 3338/0xd0a
 94624 redis-server PSIG  SIGSEGV SIG_DFL code SEGV_MAPERR<1> 
addr=0x1b3b8673f000 trapno=6
 94624 redis-server NAMI  "redis-server.core"

###############


gdb /usr/local/sbin/redis-server /tmp/redis-server.core    
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "amd64-unknown-openbsd6.6"...(no debugging symbols 
found)

Core was generated by `redis-server'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/lib/libpthread.so.26.1...done.
Loaded symbols for /usr/lib/libpthread.so.26.1
Loaded symbols for /usr/local/sbin/redis-server
Reading symbols from /usr/lib/libm.so.10.1...done.
Loaded symbols for /usr/lib/libm.so.10.1
Symbols already loaded for /usr/lib/libpthread.so.26.1
Reading symbols from /usr/local/lib/liblua5.1.so.5.1...done.
Loaded symbols for /usr/local/lib/liblua5.1.so.5.1
Reading symbols from /usr/lib/libc.so.95.1...done.
Loaded symbols for /usr/lib/libc.so.95.1
Reading symbols from /usr/libexec/ld.so...Error while reading shared library 
symbols:
Dwarf Error: wrong version in compilation unit header (is 4, should be 2) [in 
module /usr/libexec/ld.so]
#0  0x0000127e6e9c4ff8 in SHA1Final () from /usr/local/sbin/redis-server

###############


Anything else I could help with?

With kind regards

Uwe
-- 

Reply via email to