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.