Skip to content

Ensure empty error tables in scripts don't crash#14163

Merged
sundb merged 3 commits intoredis:unstablefrom
sundb:fusl-eval-empty-error-table-fix
Jul 7, 2025
Merged

Ensure empty error tables in scripts don't crash#14163
sundb merged 3 commits intoredis:unstablefrom
sundb:fusl-eval-empty-error-table-fix

Conversation

@sundb
Copy link
Collaborator

@sundb sundb commented Jul 2, 2025

This PR is based on: valkey-io/valkey#2229

When calling the command EVAL error{} 0, Redis crashes with the following stack trace. This patch ensures we never leave the err_info.msg field null when we fail to extract a proper error message.


Signed-off-by: Fusl [email protected]
Signed-off-by: Binbin [email protected]
Co-authored-by: Fusl [email protected]
Co-authored-by: Binbin [email protected]

When calling the command `EVAL error{} 0`, Redis crashes with the
following stack trace. This patch ensures we never leave the
`err_info.msg` field null when we fail to extract a proper error
message.
@snyk-io
Copy link

snyk-io bot commented Jul 2, 2025

🎉 Snyk checks have passed. No issues have been found so far.

security/snyk check is complete. No issues have been found. (View Details)

license/snyk check is complete. No issues have been found. (View Details)

@github-project-automation github-project-automation bot moved this to Todo in Redis 8.2 Jul 2, 2025
@sundb sundb added the release-notes indication that this issue needs to be mentioned in the release notes label Jul 2, 2025
@sundb sundb requested a review from ShooterIT July 4, 2025 09:08
Copy link
Member

@ShooterIT ShooterIT left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, maybe crash stack can be provided

@sundb
Copy link
Collaborator Author

sundb commented Jul 7, 2025

Crash report

=== REDIS BUG REPORT START: Cut & paste starting from here ===
16216:M 07 Jul 2025 09:43:35.434 # Redis 255.255.255 crashed by signal: 11, si_code: 1
16216:M 07 Jul 2025 09:43:35.434 # Accessing address: (nil)
16216:M 07 Jul 2025 09:43:35.434 # Crashed running the instruction at: 0x7f6b1859b8dc

------ STACK TRACE ------
EIP:
/lib/x86_64-linux-gnu/libc.so.6(+0x19b8dc)[0x7f6b1859b8dc]

16219 bio_aof
/lib/x86_64-linux-gnu/libc.so.6(+0x98d71)[0x7f6b18498d71]
/lib/x86_64-linux-gnu/libc.so.6(pthread_cond_wait+0x20d)[0x7f6b1849b7ed]
src/redis-server 127.0.0.1:21134(bioProcessBackgroundJobs+0x1ea)[0x5562ed26c02a]
/lib/x86_64-linux-gnu/libc.so.6(+0x9caa4)[0x7f6b1849caa4]
/lib/x86_64-linux-gnu/libc.so.6(+0x129c3c)[0x7f6b18529c3c]

16220 bio_lazy_free
/lib/x86_64-linux-gnu/libc.so.6(+0x98d71)[0x7f6b18498d71]
/lib/x86_64-linux-gnu/libc.so.6(pthread_cond_wait+0x20d)[0x7f6b1849b7ed]
src/redis-server 127.0.0.1:21134(bioProcessBackgroundJobs+0x1ea)[0x5562ed26c02a]
/lib/x86_64-linux-gnu/libc.so.6(+0x9caa4)[0x7f6b1849caa4]
/lib/x86_64-linux-gnu/libc.so.6(+0x129c3c)[0x7f6b18529c3c]

16218 bio_close_file
/lib/x86_64-linux-gnu/libc.so.6(+0x98d71)[0x7f6b18498d71]
/lib/x86_64-linux-gnu/libc.so.6(pthread_cond_wait+0x20d)[0x7f6b1849b7ed]
src/redis-server 127.0.0.1:21134(bioProcessBackgroundJobs+0x1ea)[0x5562ed26c02a]
/lib/x86_64-linux-gnu/libc.so.6(+0x9caa4)[0x7f6b1849caa4]
/lib/x86_64-linux-gnu/libc.so.6(+0x129c3c)[0x7f6b18529c3c]

16216 redis-server *
/lib/x86_64-linux-gnu/libc.so.6(+0x45330)[0x7f6b18445330]
/lib/x86_64-linux-gnu/libc.so.6(+0x19b8dc)[0x7f6b1859b8dc]
src/redis-server 127.0.0.1:21134(sdscatfmt+0x814)[0x5562ed19db44]
src/redis-server 127.0.0.1:21134(luaCallFunction+0x2d5)[0x5562ed302965]
src/redis-server 127.0.0.1:21134(evalGenericCommand+0x1ae)[0x5562ed26221e]
src/redis-server 127.0.0.1:21134(call+0x74c)[0x5562ed18624c]
src/redis-server 127.0.0.1:21134(processCommand+0xb3d)[0x5562ed189f3d]
src/redis-server 127.0.0.1:21134(processInputBuffer+0xd9)[0x5562ed1b0ea9]
src/redis-server 127.0.0.1:21134(readQueryFromClient+0x358)[0x5562ed1b2448]
src/redis-server 127.0.0.1:21134(+0x222434)[0x5562ed2f7434]
src/redis-server 127.0.0.1:21134(aeMain+0xf9)[0x5562ed167929]
src/redis-server 127.0.0.1:21134(main+0x4a7)[0x5562ed1617e7]
/lib/x86_64-linux-gnu/libc.so.6(+0x2a1ca)[0x7f6b1842a1ca]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x8b)[0x7f6b1842a28b]
src/redis-server 127.0.0.1:21134(_start+0x25)[0x5562ed163075]

4/4 expected stacktraces.

------ STACK TRACE DONE ------

------ REGISTERS ------
16216:M 07 Jul 2025 09:43:35.436 # 
RAX:0000000000000000 RBX:00007f6b180a2893
RCX:0000000000000000 RDX:0000000000000073
RDI:0000000000000000 RSI:0000000000000010
RBP:00007fff94543010 RSP:00007fff94542ec8
R8 :0000000000008540 R9 :00005562ed40a2b9
R10:0000000000217bc8 R11:0000000000000008
R12:00005562ed3e8ac8 R13:00005562ed40a2b8
R14:0000000000000001 R15:0000000000000001
RIP:00007f6b1859b8dc EFL:0000000000010283
CSGSFS:002b000000000033
16216:M 07 Jul 2025 09:43:35.436 # (00007fff94542ed7) -> 0000000000000000
16216:M 07 Jul 2025 09:43:35.436 # (00007fff94542ed6) -> 3132633361613638
16216:M 07 Jul 2025 09:43:35.436 # (00007fff94542ed5) -> 3039643939643435
16216:M 07 Jul 2025 09:43:35.436 # (00007fff94542ed4) -> 1dd05398df168b00
16216:M 07 Jul 2025 09:43:35.436 # (00007fff94542ed3) -> 00007fff94542f30
16216:M 07 Jul 2025 09:43:35.436 # (00007fff94542ed2) -> 00007fff94543020
16216:M 07 Jul 2025 09:43:35.436 # (00007fff94542ed1) -> 0000003000000018
16216:M 07 Jul 2025 09:43:35.436 # (00007fff94542ed0) -> 0000000000000000
16216:M 07 Jul 2025 09:43:35.436 # (00007fff94542ecf) -> 3ff0000000000000
16216:M 07 Jul 2025 09:43:35.436 # (00007fff94542ece) -> 00005562ed3e8290
16216:M 07 Jul 2025 09:43:35.436 # (00007fff94542ecd) -> 000000000000000e
16216:M 07 Jul 2025 09:43:35.436 # (00007fff94542ecc) -> 0000000000000000
16216:M 07 Jul 2025 09:43:35.436 # (00007fff94542ecb) -> 00005562ed40a2b9
16216:M 07 Jul 2025 09:43:35.436 # (00007fff94542eca) -> b8f55492d76105bb
16216:M 07 Jul 2025 09:43:35.436 # (00007fff94542ec9) -> 00007f6b16c05000
16216:M 07 Jul 2025 09:43:35.436 # (00007fff94542ec8) -> 00005562ed19db44

------ INFO OUTPUT ------
# Server
redis_version:255.255.255
redis_git_sha1:5ff81f68
redis_git_dirty:1
redis_build_id:65d8d2cce6701778
redis_mode:standalone
os:Linux 6.8.0-63-generic x86_64
arch_bits:64
monotonic_clock:POSIX clock_gettime
multiplexing_api:epoll
atomicvar_api:c11-builtin
gcc_version:13.3.0
process_id:16216
process_supervised:no
run_id:f92984cc5d5cf899601aa367ab1a73ffefac94aa
tcp_port:21134
server_time_usec:1751852615434686
uptime_in_seconds:0
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:7022151
executable:/home/sundb/data/redis_fork_5/src/redis-server
config_file:/home/sundb/data/redis_fork_5/./tests/tmp/redis.conf.15016.48
io_threads_active:0
listener0:name=tcp,bind=127.0.0.1,port=21134
listener1:name=unix,bind=/home/sundb/data/redis_fork_5/tests/tmp/server.15016.47/socket

# Clients
connected_clients:1
cluster_connections:0
maxclients:10000
client_recent_max_input_buffer:0
client_recent_max_output_buffer:0
blocked_clients:0
tracking_clients:0
pubsub_clients:0
watching_clients:0
clients_in_timeout_table:0
total_watched_keys:0
total_blocking_keys:0
total_blocking_keys_on_nokey:0

# Memory
used_memory:899392
used_memory_human:878.31K
used_memory_rss:9961472
used_memory_rss_human:9.50M
used_memory_peak:899392
used_memory_peak_human:878.31K
used_memory_peak_time:1751852615
used_memory_peak_perc:100.39%
used_memory_overhead:748624
used_memory_startup:650656
used_memory_dataset:150768
used_memory_dataset_perc:60.61%
allocator_allocated:1486432
allocator_active:1667072
allocator_resident:9101312
allocator_muzzy:0
total_system_memory:66516320256
total_system_memory_human:61.95G
used_memory_lua:57344
used_memory_vm_eval:57344
used_memory_lua_human:56.00K
used_memory_scripts_eval:4672
number_of_cached_scripts:20
number_of_functions:0
number_of_libraries:0
used_memory_vm_functions:32768
used_memory_vm_total:90112
used_memory_vm_total_human:88.00K
used_memory_functions:192
used_memory_scripts:4864
used_memory_scripts_human:4.75K
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
allocator_frag_ratio:1.10
allocator_frag_bytes:104608
allocator_rss_ratio:5.46
allocator_rss_bytes:7434240
rss_overhead_ratio:1.09
rss_overhead_bytes:860160
mem_fragmentation_ratio:15.31
mem_fragmentation_bytes:9310672
mem_not_counted_for_evict:0
mem_replication_backlog:0
mem_total_replication_buffers:0
mem_replica_full_sync_buffer:0
mem_clients_slaves:0
mem_clients_normal:0
mem_cluster_links:0
mem_aof_buffer:0
mem_allocator:jemalloc-5.3.0
mem_overhead_db_hashtable_rehashing:0
active_defrag_running:0
lazyfree_pending_objects:0
lazyfreed_objects:0

# Persistence
loading:0
async_loading:0
current_cow_peak:0
current_cow_size:0
current_cow_size_age:0
current_fork_perc:0.00
current_save_keys_processed:0
current_save_keys_total:0
rdb_changes_since_last_save:3
rdb_bgsave_in_progress:0
rdb_last_save_time:1751852615
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
rdb_saves:0
rdb_last_cow_size:0
rdb_last_load_keys_expired:0
rdb_last_load_keys_loaded:0
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_rewrites:0
aof_rewrites_consecutive_failures:0
aof_last_write_status:ok
aof_last_cow_size:0
module_fork_in_progress:0
module_fork_last_cow_size:0

# Threads
io_thread_0:clients=1,reads=16,writes=16

# Stats
total_connections_received:0
total_commands_processed:19
instantaneous_ops_per_sec:0
total_net_input_bytes:1166
total_net_output_bytes:6662
total_net_repl_input_bytes:0
total_net_repl_output_bytes:0
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
instantaneous_input_repl_kbps:0.00
instantaneous_output_repl_kbps:0.00
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_subkeys:0
expired_keys:0
expired_stale_perc:0.00
expired_time_cap_reached_count:0
expire_cycle_cpu_milliseconds:0
evicted_keys:0
evicted_clients:0
evicted_scripts:0
total_eviction_exceeded_time:0
current_eviction_exceeded_time:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
pubsubshard_channels:0
latest_fork_usec:0
total_forks:0
migrate_cached_sockets:0
slave_expires_tracked_keys:0
active_defrag_hits:0
active_defrag_misses:0
active_defrag_key_hits:0
active_defrag_key_misses:0
total_active_defrag_time:0
current_active_defrag_time:0
tracking_total_keys:0
tracking_total_items:0
tracking_total_prefixes:0
unexpected_error_replies:0
total_error_replies:3
dump_payload_sanitizations:0
total_reads_processed:16
total_writes_processed:16
io_threaded_reads_processed:0
io_threaded_writes_processed:0
io_threaded_total_prefetch_batches:0
io_threaded_total_prefetch_entries:0
client_query_buffer_limit_disconnections:0
client_output_buffer_limit_disconnections:0
reply_buffer_shrinks:0
reply_buffer_expands:0
eventloop_cycles:16
eventloop_duration_sum:192
eventloop_duration_cmd_sum:97
instantaneous_eventloop_cycles_per_sec:0
instantaneous_eventloop_duration_usec:0
acl_access_denied_auth:0
acl_access_denied_cmd:0
acl_access_denied_key:0
acl_access_denied_channel:0

# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:2dd177259e472174078097c77938f539965936ef
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU
used_cpu_sys:0.004537
used_cpu_user:0.002310
used_cpu_sys_children:0.000000
used_cpu_user_children:0.000000
used_cpu_sys_main_thread:0.004330
used_cpu_user_main_thread:0.002228

# Modules
module:name=vectorset,ver=1,api=1,filters=0,usedby=[],using=[],options=[handle-io-errors|handle-repl-async-load]

# Commandstats
cmdstat_eval:calls=10,usec=77,usec_per_call=7.70,rejected_calls=0,failed_calls=3
cmdstat_info:calls=2,usec=15,usec_per_call=7.50,rejected_calls=0,failed_calls=0
cmdstat_set:calls=2,usec=2,usec_per_call=1.00,rejected_calls=0,failed_calls=0
cmdstat_memory|usage:calls=2,usec=1,usec_per_call=0.50,rejected_calls=0,failed_calls=0
cmdstat_ping:calls=1,usec=0,usec_per_call=0.00,rejected_calls=0,failed_calls=0
cmdstat_config|resetstat:calls=1,usec=3,usec_per_call=3.00,rejected_calls=0,failed_calls=0
cmdstat_setnx:calls=1,usec=0,usec_per_call=0.00,rejected_calls=0,failed_calls=0

# Errorstats
errorstat_ERR:count=3

# Latencystats
latency_percentiles_usec_eval:p50=7.007,p99=14.015,p99.9=14.015
latency_percentiles_usec_info:p50=1.003,p99=14.015,p99.9=14.015
latency_percentiles_usec_set:p50=1.003,p99=1.003,p99.9=1.003
latency_percentiles_usec_memory|usage:p50=0.001,p99=1.003,p99.9=1.003
latency_percentiles_usec_ping:p50=0.001,p99=0.001,p99.9=0.001
latency_percentiles_usec_config|resetstat:p50=3.007,p99=3.007,p99.9=3.007
latency_percentiles_usec_setnx:p50=0.001,p99=0.001,p99.9=0.001

# Cluster
cluster_enabled:0

# Keyspace
db9:keys=2,expires=0,avg_ttl=0,subexpiry=0

# Keysizes
db9_distrib_strings_sizes:1=1,32=1

------ CLIENT LIST OUTPUT ------
id=5 addr=127.0.0.1:44875 laddr=127.0.0.1:21134 fd=12 name= age=0 idle=0 flags=N db=9 sub=0 psub=0 ssub=0 multi=-1 watch=0 qbuf=36 qbuf-free=20438 argv-mem=14 multi-mem=0 rbs=16384 rbp=16384 obl=0 oll=0 omem=0 tot-mem=37798 events=r cmd=eval user=default redir=-1 resp=2 lib-name= lib-ver= io-thread=0 tot-net-in=4069 tot-net-out=62273 tot-cmds=82

------ CURRENT CLIENT INFO ------
id=5 addr=127.0.0.1:44875 laddr=127.0.0.1:21134 fd=12 name= age=0 idle=0 flags=N db=9 sub=0 psub=0 ssub=0 multi=-1 watch=0 qbuf=36 qbuf-free=20438 argv-mem=14 multi-mem=0 rbs=16384 rbp=16384 obl=0 oll=0 omem=0 tot-mem=37798 events=r cmd=eval user=default redir=-1 resp=2 lib-name= lib-ver= io-thread=0 tot-net-in=4069 tot-net-out=62273 tot-cmds=82
argc: '3'
argv[0]: '"eval"'
argv[1]: '"error({})"'
argv[2]: '"0"'

------ EXECUTING CLIENT INFO ------
id=5 addr=127.0.0.1:44875 laddr=127.0.0.1:21134 fd=12 name= age=0 idle=0 flags=N db=9 sub=0 psub=0 ssub=0 multi=-1 watch=0 qbuf=36 qbuf-free=20438 argv-mem=14 multi-mem=0 rbs=16384 rbp=16384 obl=0 oll=0 omem=0 tot-mem=37798 events=r cmd=eval user=default redir=-1 resp=2 lib-name= lib-ver= io-thread=0 tot-net-in=4069 tot-net-out=62273 tot-cmds=82
argc: '3'
argv[0]: '"eval"'
argv[1]: '"error({})"'
argv[2]: '"0"'

------ MODULES INFO OUTPUT ------

------ CONFIG DEBUG OUTPUT ------
client-query-buffer-limit 1gb
lazyfree-lazy-server-del no
lazyfree-lazy-user-flush no
repl-diskless-load disabled
lazyfree-lazy-user-del no
replica-read-only yes
repl-diskless-sync yes
io-threads 1
activedefrag no
list-compress-depth 0
sanitize-dump-payload no
proto-max-bulk-len 512mb
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
slave-read-only yes

------ FAST MEMORY TEST ------
16216:M 07 Jul 2025 09:43:35.436 # Bio worker thread #0 terminated
16216:M 07 Jul 2025 09:43:35.436 # Bio worker thread #1 terminated
16216:M 07 Jul 2025 09:43:35.436 # Bio worker thread #2 terminated
*** Preparing to test memory region 5562ed4e2000 (2322432 bytes)
*** Preparing to test memory region 5563097fc000 (135168 bytes)
*** Preparing to test memory region 7f6b10000000 (135168 bytes)
*** Preparing to test memory region 7f6b143fc000 (8388608 bytes)
*** Preparing to test memory region 7f6b14bfd000 (8388608 bytes)
*** Preparing to test memory region 7f6b153fe000 (8388608 bytes)
*** Preparing to test memory region 7f6b15bff000 (8388608 bytes)
*** Preparing to test memory region 7f6b16400000 (8388608 bytes)
*** Preparing to test memory region 7f6b16c00000 (10485760 bytes)
*** Preparing to test memory region 7f6b17c00000 (8388608 bytes)
*** Preparing to test memory region 7f6b18605000 (53248 bytes)
*** Preparing to test memory region 7f6b18a7a000 (16384 bytes)
*** Preparing to test memory region 7f6b18c0a000 (28672 bytes)
*** Preparing to test memory region 7f6b18d3e000 (8192 bytes)
.O.O.O.O.O.O.O.O.O.O.O.O.O.O
Fast memory test PASSED, however your memory can still be broken. Please run a memory test for several hours if possible.

------ DUMPING CODE AROUND EIP ------
Symbol: (null) (base: (nil))
Module: /lib/x86_64-linux-gnu/libc.so.6 (base 0x7f6b18400000)
$ xxd -r -p /tmp/dump.hex /tmp/dump.bin
$ objdump --adjust-vma=(nil) -D -b binary -m i386:x86-64 /tmp/dump.bin
------

=== REDIS BUG REPORT END. Make sure to include from START to END. ===

       Please report the crash by opening an issue on github:

           http://github.com/redis/redis/issues

  If a Redis module was involved, please open in the module's repo instead.

  Suspect RAM error? Use redis-server --test-memory to verify it.

  Some other issues could be detected by redis-server --check-system

@sundb sundb merged commit 4322ceb into redis:unstable Jul 7, 2025
18 checks passed
@github-project-automation github-project-automation bot moved this from Todo to Done in Redis 8.2 Jul 7, 2025
@sundb sundb mentioned this pull request Aug 4, 2025
sundb added a commit that referenced this pull request Aug 4, 2025
This is the General Availability release of Redis Open Source 8.2.

### Major changes compared to 8.0

- Streams - new commands: `XDELEX` and `XACKDEL`; extension to `XADD`
and `XTRIM`
- Bitmap - `BITOP`: new operators: `DIFF`, `DIFF1`, `ANDOR`, and `ONE`
- Query Engine - new SVS-VAMANA vector index type which supports vector
compression
- More than 15 performance and resource utilization improvements
- New metrics: per-slot usage metrics, key size distributions for basic
data types, and more

### Binary distributions

- Alpine and Debian Docker images - https://hub.docker.com/_/redis
- Install using snap - see https://github.com/redis/redis-snap
- Install using brew - see https://github.com/redis/homebrew-redis
- Install using RPM - see https://github.com/redis/redis-rpm
- Install using Debian APT - see https://github.com/redis/redis-debian


### Operating systems we test Redis 8.2 on

- Ubuntu 22.04 (Jammy Jellyfish), 24.04 (Noble Numbat)
- Rocky Linux 8.10, 9.5
- AlmaLinux 8.10, 9.5
- Debian 12 (Bookworm)
- macOS 13 (Ventura), 14 (Sonoma), 15 (Sequoia)

### Security fixes (compared to 8.2-RC1)

- (CVE-2025-32023) Fix out-of-bounds write in `HyperLogLog` commands
- (CVE-2025-48367) Retry accepting other connections even if the
accepted connection reports an error

### New Features (compared to 8.2-RC1)

- #14141 Keyspace notifications - new event types:
  - `OVERWRITTEN` - the value of a key is completely overwritten
  - `TYPE_CHANGED` - key type change

### Bug fixes (compared to 8.2-RC1)

- #14162 Crash when using evport with I/O threads
- #14163 `EVAL` crash when error table is empty
- #14144 Vector sets - RDB format is not compatible with big endian
machines
- #14165 Endless client blocking for blocking commands
- #14164 Prevent `CLIENT UNBLOCK` from unblocking `CLIENT PAUSE`
- #14216 TTL was not removed by the `SET` command
- #14224 `HINCRBYFLOAT` removes field expiration on replica

### Performance and resource utilization improvements (compared to
8.2-RC1)

- #14200 Store iterators on stack instead of on heap
- #14144 Vector set - improve RDB loading / RESTORE speed by storing the
worst link info
- #Q6430 More compression variants for the SVS-VAMANA vector index
- #Q6535 `SHARD_K_RATIO` parameter - favor network latency over accuracy
for KNN vector query in a Redis cluster (unstable feature) (MOD-10359)

### Modules API

- #14051 `RedisModule_Get*`, `RedisModule_Set*` - allow modules to
access Redis configurations
- #14114 `RM_UnsubscribeFromKeyspaceEvents` - unregister a module from
specific keyspace notifications
YaacovHazan pushed a commit to YaacovHazan/redis that referenced this pull request Sep 29, 2025
This PR is based on: valkey-io/valkey#2229

When calling the command `EVAL error{} 0`, Redis crashes with the
following stack trace. This patch ensures we never leave the
`err_info.msg` field null when we fail to extract a proper error
message.

---------

Signed-off-by: Fusl <[email protected]>
Signed-off-by: Binbin <[email protected]>
Co-authored-by: Fusl <[email protected]>
Co-authored-by: Binbin <[email protected]>
YaacovHazan pushed a commit to YaacovHazan/redis that referenced this pull request Sep 30, 2025
This PR is based on: valkey-io/valkey#2229

When calling the command `EVAL error{} 0`, Redis crashes with the
following stack trace. This patch ensures we never leave the
`err_info.msg` field null when we fail to extract a proper error
message.

---------

Signed-off-by: Fusl <[email protected]>
Signed-off-by: Binbin <[email protected]>
Co-authored-by: Fusl <[email protected]>
Co-authored-by: Binbin <[email protected]>
@YaacovHazan YaacovHazan moved this from Todo to pending in Redis 7.2 Backport Sep 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-notes indication that this issue needs to be mentioned in the release notes

Projects

Status: pending
Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants