Here is the crash.
test {boring} {
r config set list-max-ziplist-size -5
r lpush lst {*}[split [string repeat "1" 65529] ""]
set large [string repeat a 65536]
set i 0
set k 10
set l 1
set patch 2000
while {$i < 65529} {
while {$i < $k && $i < 65529} {
r write "*4\r\n\$4\r\nlset\r\n\$3\r\nlst\r\n\$$l\r\n$i\r\n\$65536\r\n$large\r\n"
incr i
if {$i == $patch} {
puts $patch
set patch [expr {$patch + 2000}]
}
}
set k [expr {$k * 10}]
incr l
}
r flush
for {set j 0} {$j < 65528} {incr j} {
assert_equal [r read] {OK}
}
}
see issue #12548
Comment From: sundb
@imchuncai Good catch, it seems it's caused by a single node exceeding 4GB, can you point out exactly why?
Comment From: oranagra
@imchuncai can you please make a specific PR to fix it (not as part of a huge rewrite). such a bug fix will also need to be backported, so localized fix would be preferred.
Comment From: imchuncai
@imchuncai Good catch, it seems it's caused by a single node exceeding 4GB, can you point out exactly why?
The title says it follows issue #12548, which is the listpack violate size limit.