unikraft / catalog

Unikraft Applications & Examples Catalog
23 stars 29 forks source link

`redis:7.2`: Connection freezes #44

Closed razvand closed 4 months ago

razvand commented 5 months ago

Using Redis 7.2 (PR #43) freezes when connecting with redis-cli. Use the following commands to replicate:

wget https://raw.githubusercontent.com/unikraft/catalog-for-maintainers/main/utils/start-buildkit.sh
source start-buildkit.sh
git clone https://github.com/unikraft-upb/catalog
cd catalog
git checkout -b razvand/library/redis origin/razvand/library/redis
cd library/redis/7.2
sed -i "s/# CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/CONFIG_LIBSYSCALL_SHIM_STRACE: 'y'/" Kraftfile
kraft build --no-cache --no-update --plat qemu --arch x86_64
kraft rm --all ; kraft run --log-type basic --log-level debug -M 256M -p 6379:6379 2>&1 | grep -v '\(gettimeofday\|clock_gettime\|/proc/self/stat\|epoll_wait\)'

Use redis-cli to connect to the server:

redis-cli -h localhost

The output shown will have something like this (there are two consecutive - not working redis-cli connection commands run to generate the two chunks of output):


[...]

accept4(0x6, 0x40047fbc0, ...) = 0x7
setsockopt(0x7, 0x6, ...) = 0x0
setsockopt(0x7, 0x1, ...) = 0x0
setsockopt(0x7, 0x6, ...) = 0x0
setsockopt(0x7, 0x6, ...) = 0x0
setsockopt(0x7, 0x6, ...) = 0x0
epoll_ctl(0x5, 0x1, ...) = 0x0
accept4(0x6, 0x40047fbc0, ...) = Resource temporarily unavailable (-11)
mmap(va:0x1000d34000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d34000
read(fd:7, <out>"*2\x0D\x0A$7\x0D\x0ACOMMAND\x0D\x0A$4\x0D\x0ADOC"..., 16384) = 27
mmap(va:0x1000d39000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d39000
mmap(va:0x1000d3e000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d3e000
mmap(va:0x1000d43000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d43000
mmap(va:0x1000d48000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d48000
mmap(va:0x1000d4d000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d4d000
mmap(va:0x1000d52000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d52000
mmap(va:0x1000d57000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d57000
mmap(va:0x1000d5c000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d5c000
mmap(va:0x1000d61000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d61000
mmap(va:0x1000d66000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d66000
time(0x0, 0x53434f44, ...) = 0x65b37800
getpeername(0x7, 0x40047f8b0, ...) = 0x0
mmap(va:0x1000d6b000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, fd:-1, 0) = va:0x1000d6b000
madvise(0x1000d6b000, 0x6000, ...) = 0x0
writev(0x7, 0x40047bb30, ...) = 0x12fd0
epoll_ctl(0x5, 0x3, ...) = 0x0
read(fd:7, <out>"", 16384) = 0
epoll_ctl(0x5, 0x2, ...) = 0x0
close(fd:7) = OK

[...]

accept4(0x6, 0x40047fbc0, ...) = 0x7
setsockopt(0x7, 0x6, ...) = 0x0
setsockopt(0x7, 0x1, ...) = 0x0
setsockopt(0x7, 0x6, ...) = 0x0
setsockopt(0x7, 0x6, ...) = 0x0
setsockopt(0x7, 0x6, ...) = 0x0
epoll_ctl(0x5, 0x1, ...) = 0x0
accept4(0x6, 0x40047fbc0, ...) = Resource temporarily unavailable (-11)
read(fd:7, <out>"*2\x0D\x0A$7\x0D\x0ACOMMAND\x0D\x0A$4\x0D\x0ADOC"..., 16384) = 27
writev(0x7, 0x40047bb30, ...) = 0x12fd0
epoll_ctl(0x5, 0x3, ...) = 0x0

[...]