mpromonet / v4l2rtspserver

RTSP Server for V4L2 device capture supporting HEVC/H264/JPEG/VP8/VP9
The Unlicense
1.86k stars 428 forks source link

v4l2rtspserver can't grab any frames on Raspberry Pi Zero W after upgrading from 4.19.118+ #1311 to 5.4.51+ #1327 #197

Open danieltwagner opened 4 years ago

danieltwagner commented 4 years ago

I had a v4l2rtspserver working nicely on my Raspberry Pi Zero W but after I updated it stopped working.

Kernel that worked:

Linux pi-camera 4.19.118+ #1311 Mon Apr 27 14:16:15 BST 2020 armv6l GNU/Linux

Kernel that doesn't work:

Linux pi-camera 5.4.51+ #1327 Thu Jul 23 10:53:06 BST 2020 armv6l GNU/Linux
$ v4l2rtspserver -W 1640 -H 1232 -F 25 -P 8555 -S /dev/video0 -vv
2020-07-27 19:38:46,652 [INFO  ] - /home/pi/v4l2rtspserver/v4l2wrapper/inc/logger.h:44
    level:DEBUG
2020-07-27 19:38:46,660 [NOTICE] - /home/pi/v4l2rtspserver/main.cpp:385
    Version: 0.2.0-19-g0fa3368 live555 version:2020.07.21
2020-07-27 19:38:46,673 [NOTICE] - /home/pi/v4l2rtspserver/main.cpp:426
    Create V4L2 Source.../dev/video0
2020-07-27 19:38:46,680 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:133
    driver:bm2835 mmal capabilities:85200005 mandatory:4000001
2020-07-27 19:38:46,683 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:136
    /dev/video0 support capture
2020-07-27 19:38:46,686 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:138
    /dev/video0 support read/write
2020-07-27 19:38:46,688 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:139
    /dev/video0 support streaming
2020-07-27 19:38:46,690 [DEBUG ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:71
    /dev/video0:H264 size:1640x1232 bufferSize:2050048
2020-07-27 19:38:46,698 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:215
    /dev/video0:H264 size:1640x1232 bufferSize:2050048
2020-07-27 19:38:46,701 [DEBUG ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:71
    /dev/video0:H264 size:1640x1232 bufferSize:2050048
2020-07-27 19:38:46,705 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:236
    fps:1/25
2020-07-27 19:38:46,707 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:237
    nbBuffer:1
2020-07-27 19:38:46,709 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:49
    Device /dev/video0
2020-07-27 19:38:46,743 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:73
    Device /dev/video0 nb buffer:10
2020-07-27 19:38:46,750 [INFO  ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
    Device /dev/video0 buffer idx:0 size:2050048 offset:0
2020-07-27 19:38:46,752 [INFO  ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
    Device /dev/video0 buffer idx:1 size:2050048 offset:2052096
2020-07-27 19:38:46,756 [INFO  ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
    Device /dev/video0 buffer idx:2 size:2050048 offset:4104192
2020-07-27 19:38:46,756 [INFO  ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
    Device /dev/video0 buffer idx:3 size:2050048 offset:6156288
2020-07-27 19:38:46,759 [INFO  ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
    Device /dev/video0 buffer idx:4 size:2050048 offset:8208384
2020-07-27 19:38:46,764 [INFO  ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
    Device /dev/video0 buffer idx:5 size:2050048 offset:10260480
2020-07-27 19:38:46,768 [INFO  ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
    Device /dev/video0 buffer idx:6 size:2050048 offset:12312576
2020-07-27 19:38:46,770 [INFO  ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
    Device /dev/video0 buffer idx:7 size:2050048 offset:14364672
2020-07-27 19:38:46,771 [INFO  ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
    Device /dev/video0 buffer idx:8 size:2050048 offset:16416768
2020-07-27 19:38:46,774 [INFO  ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92
    Device /dev/video0 buffer idx:9 size:2050048 offset:18468864
2020-07-27 19:38:47,173 [NOTICE] - /home/pi/v4l2rtspserver/main.cpp:449
    Create Source .../dev/video0
2020-07-27 19:38:47,178 [DEBUG ] - /home/pi/v4l2rtspserver/src/DeviceSource.cpp:140
    Queue is empty
2020-07-27 19:38:47,182 [NOTICE] - /home/pi/v4l2rtspserver/inc/V4l2RTSPServer.h:82
    Play this stream using the URL "rtsp://10.0.102.237:8555/ts"
2020-07-27 19:38:47,186 [NOTICE] - /home/pi/v4l2rtspserver/main.cpp:527
    HLS       http://10.0.102.237:8555/ts.m3u8
2020-07-27 19:38:47,187 [NOTICE] - /home/pi/v4l2rtspserver/main.cpp:528
    MPEG-DASH http://10.0.102.237:8555/ts.mpd
2020-07-27 19:38:47,188 [NOTICE] - /home/pi/v4l2rtspserver/inc/V4l2RTSPServer.h:82
    Play this stream using the URL "rtsp://10.0.102.237:8555/unicast"
2020-07-27 19:38:47,190 [NOTICE] - /home/pi/v4l2rtspserver/src/DeviceSource.cpp:93
    begin thread

[connect client]

RTCPInstance::RTCPInstance error: totSessionBW parameter should not be zero!

[nothing else appears]

^CSIGINT
2020-07-27 19:39:18,721 [NOTICE] - /home/pi/v4l2rtspserver/main.cpp:549
    Exiting....

I'm thinking the totSessionBW (might be a live 555 thing?) might be a red herring and may have been there before even while things were working. As you can see there is virtually no output despite -vv. All I did was on a clean Raspberry Pi OS Buster checkout perform an apt upgrade.

The following both work nicely after the upgrade:

$ raspistill -o out.jpg
$ raspivid -t 0 --mode 4 -w 1640 -h 1232 --codec H264 -b 2500000 --profile high --level 4.2 --irefresh adaptive --inline -l -o tcp://0.0.0.0:3333 -v -a 127

The latter is a (poor) replacement for the functionality that I'm missing with v4l2rtspserver not working, as I can access the stream from VLC with tcp/h264://<ip>:3333

danieltwagner commented 4 years ago

I found this resolved issue: https://github.com/mpromonet/v4l2rtspserver/issues/162

Neither -r nor -B or the combination of both appears to make any difference.

$ strace v4l2rtspserver -W 1640 -H 1232 -F 25 -P 8555 -S /dev/video0 -vv -r -B  2>&1 | grep -v gettimeofday

[... the process is now waiting for a connection]

_newselect(4, [3], [], [], {tv_sec=0, tv_usec=9472}) = 0 (Timeout)
_newselect(4, [3], [], [], {tv_sec=0, tv_usec=9482}) = 0 (Timeout)
_newselect(4, [3], [], [], {tv_sec=0, tv_usec=9476}) = 1 (in [3], left {tv_sec=0, tv_usec=8669})
accept(3, {sa_family=AF_INET, sin_port=htons(51463), sin_addr=inet_addr("10.0.102.130")}, [16]) = 5
rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0xb6bb3120}, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0xb6bb3120}, 8) = 0
fcntl64(5, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(5, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
getsockopt(5, SOL_SOCKET, SO_SNDBUF, [102400], [4]) = 0
getsockopt(5, SOL_SOCKET, SO_SNDBUF, [102400], [4]) = 0
brk(0x8fc000)                           = 0x8fc000
_newselect(6, [3 5], [], [5], {tv_sec=0, tv_usec=7743}) = 1 (in [5], left {tv_sec=0, tv_usec=7695})
recvfrom(5, "OPTIONS rtsp://pi-camera"..., 20000, 0, 0xbeacfe8c, [16->0]) = 133
send(5, "RTSP/1.0 200 OK\r\nCSeq: 2\r\nDate: "..., 152, 0) = 152
_newselect(6, [3 5], [], [5], {tv_sec=0, tv_usec=9479}) = 1 (in [5], left {tv_sec=0, tv_usec=1024})
recvfrom(5, "DESCRIBE rtsp://pi-camera"..., 20000, 0, 0xbeacfe8c, [16->0]) = 159
socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC, IPPROTO_IP) = 6
setsockopt(6, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
setsockopt(6, SOL_SOCKET, SO_REUSEPORT, [1], 4) = 0
setsockopt(6, SOL_IP, IP_MULTICAST_LOOP, "\1", 1) = 0
fcntl64(6, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(6, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
getsockopt(6, SOL_SOCKET, SO_SNDBUF, [180224], [4]) = 0
getsockopt(6, SOL_SOCKET, SO_SNDBUF, [180224], [4]) = 0
mmap2(NULL, 2052096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5c0b000
munmap(0xb5c0b000, 2052096)             = 0
close(6)                                = 0
getsockname(5, {sa_family=AF_INET, sin_port=htons(8555), sin_addr=inet_addr("10.0.102.237")}, [16]) = 0
send(5, "RTSP/1.0 200 OK\r\nCSeq: 3\r\nDate: "..., 631, 0) = 631
_newselect(6, [3 5], [], [5], {tv_sec=0, tv_usec=9641}) = 1 (in [5], left {tv_sec=0, tv_usec=3748})
recvfrom(5, "SETUP rtsp://10.0.102.237:8555/u"..., 20000, 0, 0xbeacfe8c, [16->0]) = 183
getsockname(5, {sa_family=AF_INET, sin_port=htons(8555), sin_addr=inet_addr("10.0.102.237")}, [16]) = 0
socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC, IPPROTO_IP) = 6
setsockopt(6, SOL_SOCKET, SO_REUSEADDR, [0], 4) = 0
setsockopt(6, SOL_SOCKET, SO_REUSEPORT, [0], 4) = 0
setsockopt(6, SOL_IP, IP_MULTICAST_LOOP, "\1", 1) = 0
bind(6, {sa_family=AF_INET, sin_port=htons(6970), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC, IPPROTO_IP) = 7
setsockopt(7, SOL_SOCKET, SO_REUSEADDR, [0], 4) = 0
setsockopt(7, SOL_SOCKET, SO_REUSEPORT, [0], 4) = 0
setsockopt(7, SOL_IP, IP_MULTICAST_LOOP, "\1", 1) = 0
bind(7, {sa_family=AF_INET, sin_port=htons(6971), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
fcntl64(6, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(6, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
getsockopt(6, SOL_SOCKET, SO_SNDBUF, [180224], [4]) = 0
getsockopt(6, SOL_SOCKET, SO_SNDBUF, [180224], [4]) = 0
mmap2(NULL, 2052096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5c0b000
getsockopt(6, SOL_SOCKET, SO_SNDBUF, [180224], [4]) = 0
getsockopt(6, SOL_SOCKET, SO_SNDBUF, [180224], [4]) = 0
send(5, "RTSP/1.0 200 OK\r\nCSeq: 4\r\nDate: "..., 214, 0) = 214
_newselect(6, [3 5], [], [5], {tv_sec=0, tv_usec=8935}) = 1 (in [5], left {tv_sec=0, tv_usec=2411})
recvfrom(5, "PLAY rtsp://10.0.102.237:8555/un"..., 20000, 0, 0xbeacfe8c, [16->0]) = 162
getsockname(5, {sa_family=AF_INET, sin_port=htons(8555), sin_addr=inet_addr("10.0.102.237")}, [16]) = 0
fcntl64(7, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(7, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
getsockopt(7, SOL_SOCKET, SO_SNDBUF, [180224], [4]) = 0
getsockopt(7, SOL_SOCKET, SO_SNDBUF, [180224], [4]) = 0
write(2, "RTCPInstance::RTCPInstance error"..., 77RTCPInstance::RTCPInstance error: totSessionBW parameter should not be zero!
) = 77
setsockopt(7, SOL_IP, IP_MULTICAST_TTL, "\377", 1) = 0
sendto(7, "\200\310\0\6\17K\247E\342\311\241W\317\215\35\212\227\216\255b\0\0\0\0\0\0\0\0\201\312\0\7"..., 60, 0, {sa_family=AF_INET, sin_port=htons(61459), sin_addr=inet_addr("10.0.102.130")}, 16) = 60
getsockname(7, {sa_family=AF_INET, sin_port=htons(6971), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0
mmap2(NULL, 2052096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5a16000
send(5, "RTSP/1.0 200 OK\r\nCSeq: 5\r\nDate: "..., 187, 0) = 187
_newselect(8, [3 5 7], [], [5], {tv_sec=0, tv_usec=9607}) = 1 (in [7], left {tv_sec=0, tv_usec=9566})
recvfrom(7, "\316\372\355\376", 1422, 0, {sa_family=AF_INET, sin_port=htons(61459), sin_addr=inet_addr("10.0.102.130")}, [16]) = 4
_newselect(8, [3 5 7], [], [5], {tv_sec=0, tv_usec=1753}) = 1 (in [7], left {tv_sec=0, tv_usec=1712})
recvfrom(7, "\316\372\355\376", 1422, 0, {sa_family=AF_INET, sin_port=htons(61459), sin_addr=inet_addr("10.0.102.130")}, [16]) = 4
_newselect(8, [3 5 7], [], [5], {tv_sec=0, tv_usec=9646}) = 0 (Timeout)
_newselect(8, [3 5 7], [], [5], {tv_sec=0, tv_usec=9643}) = 0 (Timeout)
_newselect(8, [3 5 7], [], [5], {tv_sec=0, tv_usec=9655}) = 0 (Timeout)

[keeps repeating]
mpromonet commented 4 years ago

Hi,

In order to analyze strace output you should either add -f option to strace in order to follow threads or add -s option to use only main thread. I made a quick try with kernel 5.4.51-v7+ on a raspberry pi2 but did not have the problem you describe.

Best Regards, Michel.

danieltwagner commented 4 years ago

Thanks for your prompt response, Michel. I'm not sure if that sheds a whole lot more light but for completeness I'm including the top of the main thread as well:

$ strace -o out -fff v4l2rtspserver -W 1640 -H 1232 -F 25 -P 8555 -S /dev/video0 -vv -r -B  2>&1 | grep -v gettimeofday

out.828

execve("/usr/local/bin/v4l2rtspserver", ["v4l2rtspserver", "-W", "1640", "-H", "1232", "-F", "25", "-P", "8555", "-S", "/dev/video0", "-vv", "-r", "-B"], 0xbeb5b6e0 /* 20 vars */) = 0
brk(NULL)                               = 0xe91000
uname({sysname="Linux", nodename="pi-camera", ...}) = 0
access("/etc/ld.so.preload", R_OK)      = 0
openat(AT_FDCWD, "/etc/ld.so.preload", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=54, ...}) = 0
mmap2(NULL, 54, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0xb6f35000
close(3)                                = 0
readlink("/proc/self/exe", "/usr/local/bin/v4l2rtspserver", 4096) = 29
openat(AT_FDCWD, "/usr/lib/arm-linux-gnueabihf/libarmmem-v6l.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\250\3\0\0004\0\0\0"..., 512) = 512
_llseek(3, 8552, [8552], SEEK_SET)      = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 960) = 960
_llseek(3, 8232, [8232], SEEK_SET)      = 0
read(3, "A*\0\0\0aeabi\0\1 \0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 43) = 43
_llseek(3, 8552, [8552], SEEK_SET)      = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 960) = 960
_llseek(3, 8232, [8232], SEEK_SET)      = 0
read(3, "A*\0\0\0aeabi\0\1 \0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 43) = 43
_llseek(3, 8552, [8552], SEEK_SET)      = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 960) = 960
_llseek(3, 8232, [8232], SEEK_SET)      = 0
read(3, "A*\0\0\0aeabi\0\1 \0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 43) = 43
_llseek(3, 8552, [8552], SEEK_SET)      = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 960) = 960
_llseek(3, 8232, [8232], SEEK_SET)      = 0
read(3, "A*\0\0\0aeabi\0\1 \0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 43) = 43
_llseek(3, 8552, [8552], SEEK_SET)      = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 960) = 960
_llseek(3, 8232, [8232], SEEK_SET)      = 0
read(3, "A*\0\0\0aeabi\0\1 \0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 43) = 43
_llseek(3, 8552, [8552], SEEK_SET)      = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 960) = 960
_llseek(3, 8232, [8232], SEEK_SET)      = 0
read(3, "A*\0\0\0aeabi\0\1 \0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 43) = 43
fstat64(3, {st_mode=S_IFREG|0644, st_size=9512, ...}) = 0
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f33000
mmap2(NULL, 73772, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6ef3000
mprotect(0xb6ef5000, 61440, PROT_NONE)  = 0
mmap2(0xb6f04000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0xb6f04000
close(3)                                = 0
munmap(0xb6f35000, 54)                  = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=28908, ...}) = 0
mmap2(NULL, 28908, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6f2b000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib/arm-linux-gnueabihf/liblog4cpp.so.5", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0(\20\1\0004\0\0\0"..., 512) = 512
_llseek(3, 206740, [206740], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
_llseek(3, 206384, [206384], SEEK_SET)  = 0
read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 45) = 45
_llseek(3, 206740, [206740], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
_llseek(3, 206384, [206384], SEEK_SET)  = 0
read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 45) = 45
_llseek(3, 206740, [206740], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
_llseek(3, 206384, [206384], SEEK_SET)  = 0
read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 45) = 45
_llseek(3, 206740, [206740], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
_llseek(3, 206384, [206384], SEEK_SET)  = 0
read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 45) = 45
_llseek(3, 206740, [206740], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
_llseek(3, 206384, [206384], SEEK_SET)  = 0
read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 45) = 45
_llseek(3, 206740, [206740], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
_llseek(3, 206384, [206384], SEEK_SET)  = 0
read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 45) = 45
fstat64(3, {st_mode=S_IFREG|0644, st_size=207820, ...}) = 0
mmap2(NULL, 272572, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6eb0000
mprotect(0xb6ee1000, 65536, PROT_NONE)  = 0
mmap2(0xb6ef1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x31000) = 0xb6ef1000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib/arm-linux-gnueabihf/libstdc++.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0@\343\6\0004\0\0\0"..., 512) = 512
_llseek(3, 1264288, [1264288], SEEK_SET) = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1240) = 1240
_llseek(3, 1263696, [1263696], SEEK_SET) = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 1264288, [1264288], SEEK_SET) = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1240) = 1240
_llseek(3, 1263696, [1263696], SEEK_SET) = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 1264288, [1264288], SEEK_SET) = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1240) = 1240
_llseek(3, 1263696, [1263696], SEEK_SET) = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 1264288, [1264288], SEEK_SET) = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1240) = 1240
_llseek(3, 1263696, [1263696], SEEK_SET) = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 1264288, [1264288], SEEK_SET) = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1240) = 1240
_llseek(3, 1263696, [1263696], SEEK_SET) = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 1264288, [1264288], SEEK_SET) = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1240) = 1240
_llseek(3, 1263696, [1263696], SEEK_SET) = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 1264288, [1264288], SEEK_SET) = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1240) = 1240
_llseek(3, 1263696, [1263696], SEEK_SET) = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
fstat64(3, {st_mode=S_IFREG|0644, st_size=1265528, ...}) = 0
mmap2(NULL, 1337068, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6d69000
mprotect(0xb6e97000, 65536, PROT_NONE)  = 0
mmap2(0xb6ea7000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12e000) = 0xb6ea7000
mmap2(0xb6eae000, 5868, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6eae000
close(3)                                = 0
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libm.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\240r\0\0004\0\0\0"..., 512) = 512
_llseek(3, 463312, [463312], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
_llseek(3, 462960, [462960], SEEK_SET)  = 0
read(3, "A0\0\0\0aeabi\0\1&\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 49) = 49
_llseek(3, 463312, [463312], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
_llseek(3, 462960, [462960], SEEK_SET)  = 0
read(3, "A0\0\0\0aeabi\0\1&\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 49) = 49
_llseek(3, 463312, [463312], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
_llseek(3, 462960, [462960], SEEK_SET)  = 0
read(3, "A0\0\0\0aeabi\0\1&\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 49) = 49
fstat64(3, {st_mode=S_IFREG|0644, st_size=464392, ...}) = 0
mmap2(NULL, 528504, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6ce7000
mprotect(0xb6d58000, 61440, PROT_NONE)  = 0
mmap2(0xb6d67000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x70000) = 0xb6d67000
close(3)                                = 0
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libgcc_s.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\270\321\0\0004\0\0\0"..., 512) = 512
_llseek(3, 115284, [115284], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1040) = 1040
_llseek(3, 114940, [114940], SEEK_SET)  = 0
read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 45) = 45
_llseek(3, 115284, [115284], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1040) = 1040
_llseek(3, 114940, [114940], SEEK_SET)  = 0
read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 45) = 45
_llseek(3, 115284, [115284], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1040) = 1040
_llseek(3, 114940, [114940], SEEK_SET)  = 0
read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 45) = 45
_llseek(3, 115284, [115284], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1040) = 1040
_llseek(3, 114940, [114940], SEEK_SET)  = 0
read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 45) = 45
_llseek(3, 115284, [115284], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1040) = 1040
_llseek(3, 114940, [114940], SEEK_SET)  = 0
read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 45) = 45
_llseek(3, 115284, [115284], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1040) = 1040
_llseek(3, 114940, [114940], SEEK_SET)  = 0
read(3, "A,\0\0\0aeabi\0\1\"\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 45) = 45
fstat64(3, {st_mode=S_IFREG|0644, st_size=116324, ...}) = 0
mmap2(NULL, 180532, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6cba000
mprotect(0xb6cd6000, 61440, PROT_NONE)  = 0
mmap2(0xb6ce5000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0xb6ce5000
close(3)                                = 0
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libpthread.so.0", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\224O\0\0004\0\0\0"..., 512) = 512
_llseek(3, 129016, [129016], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1400) = 1400
_llseek(3, 94664, [94664], SEEK_SET)    = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 129016, [129016], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1400) = 1400
_llseek(3, 94664, [94664], SEEK_SET)    = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 129016, [129016], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1400) = 1400
_llseek(3, 94664, [94664], SEEK_SET)    = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 129016, [129016], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1400) = 1400
_llseek(3, 94664, [94664], SEEK_SET)    = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 129016, [129016], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1400) = 1400
_llseek(3, 94664, [94664], SEEK_SET)    = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 129016, [129016], SEEK_SET)  = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1400) = 1400
_llseek(3, 94664, [94664], SEEK_SET)    = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
fstat64(3, {st_mode=S_IFREG|0755, st_size=130416, ...}) = 0
mmap2(NULL, 168560, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6c90000
mprotect(0xb6ca7000, 61440, PROT_NONE)  = 0
mmap2(0xb6cb6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0xb6cb6000
mmap2(0xb6cb8000, 4720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6cb8000
close(3)                                = 0
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libc.so.6", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\300x\1\0004\0\0\0"..., 512) = 512
_llseek(3, 1293204, [1293204], SEEK_SET) = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2800) = 2800
_llseek(3, 1289788, [1289788], SEEK_SET) = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 1293204, [1293204], SEEK_SET) = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2800) = 2800
_llseek(3, 1289788, [1289788], SEEK_SET) = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 1293204, [1293204], SEEK_SET) = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2800) = 2800
_llseek(3, 1289788, [1289788], SEEK_SET) = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 1293204, [1293204], SEEK_SET) = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2800) = 2800
_llseek(3, 1289788, [1289788], SEEK_SET) = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 1293204, [1293204], SEEK_SET) = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2800) = 2800
_llseek(3, 1289788, [1289788], SEEK_SET) = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 1293204, [1293204], SEEK_SET) = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2800) = 2800
_llseek(3, 1289788, [1289788], SEEK_SET) = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
fstat64(3, {st_mode=S_IFREG|0755, st_size=1296004, ...}) = 0
mmap2(NULL, 1364764, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6b42000
mprotect(0xb6c7a000, 65536, PROT_NONE)  = 0
mmap2(0xb6c8a000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x138000) = 0xb6c8a000
mmap2(0xb6c8d000, 8988, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6c8d000
close(3)                                = 0
openat(AT_FDCWD, "/lib/arm-linux-gnueabihf/libnsl.so.1", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\340/\0\0004\0\0\0"..., 512) = 512
_llseek(3, 70496, [70496], SEEK_SET)    = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
_llseek(3, 70148, [70148], SEEK_SET)    = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 70496, [70496], SEEK_SET)    = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
_llseek(3, 70148, [70148], SEEK_SET)    = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
_llseek(3, 70496, [70496], SEEK_SET)    = 0
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
_llseek(3, 70148, [70148], SEEK_SET)    = 0
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\23\1\24"..., 47) = 47
fstat64(3, {st_mode=S_IFREG|0644, st_size=71576, ...}) = 0
mmap2(NULL, 145164, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6b1e000
mprotect(0xb6b2f000, 61440, PROT_NONE)  = 0
mmap2(0xb6b3e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10000) = 0xb6b3e000
mmap2(0xb6b40000, 5900, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6b40000
close(3)                                = 0
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f29000
set_tls(0xb6f29950)                     = 0
mprotect(0xb6c8a000, 8192, PROT_READ)   = 0
mprotect(0xb6b3e000, 4096, PROT_READ)   = 0
mprotect(0xb6cb6000, 4096, PROT_READ)   = 0
mprotect(0xb6ce5000, 4096, PROT_READ)   = 0
mprotect(0xb6d67000, 4096, PROT_READ)   = 0
mprotect(0xb6ea7000, 20480, PROT_READ)  = 0
mprotect(0xb6ef1000, 4096, PROT_READ)   = 0
mprotect(0xb6f04000, 4096, PROT_READ)   = 0
mprotect(0x110000, 4096, PROT_READ)     = 0
mprotect(0xb6f36000, 4096, PROT_READ)   = 0
munmap(0xb6f2b000, 28908)               = 0
set_tid_address(0xb6f294f8)             = 828
set_robust_list(0xb6f29500, 12)         = 0
rt_sigaction(SIGRTMIN, {sa_handler=0xb6c948e8, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0xb6b6f130}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {sa_handler=0xb6c949a4, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0xb6b6f130}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
ugetrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
brk(NULL)                               = 0xe91000
brk(0xeb2000)                           = 0xeb2000
futex(0xb6eae2c0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0xb6eae2c4, FUTEX_WAKE_PRIVATE, 2147483647) = 0
gettimeofday({tv_sec=1595879551, tv_usec=990640}, NULL) = 0
gettimeofday({tv_sec=1595879551, tv_usec=992997}, NULL) = 0
openat(AT_FDCWD, "/etc/localtime", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=3687, ...}) = 0
fstat64(3, {st_mode=S_IFREG|0644, st_size=3687, ...}) = 0
read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\10\0\0\0\0"..., 4096) = 3687
_llseek(3, -2347, [1340], SEEK_CUR)     = 0
read(3, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10\0\0\0\10\0\0\0\0"..., 4096) = 2347
close(3)                                = 0
write(1, "2020-07-27 20:52:31,992 [INFO  ]"..., 100) = 100
gettimeofday({tv_sec=1595879552, tv_usec=28}, NULL) = 0
write(1, "2020-07-27 20:52:32,000 [NOTICE]"..., 127) = 127
gettimeofday({tv_sec=1595879552, tv_usec=5002}, NULL) = 0
gettimeofday({tv_sec=1595879552, tv_usec=5475}, NULL) = 0
socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 3
setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
bind(3, {sa_family=AF_INET, sin_port=htons(8555), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
fcntl64(3, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
setsockopt(3, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
setsockopt(3, SOL_TCP, TCP_KEEPIDLE, [180], 4) = 0
setsockopt(3, SOL_TCP, TCP_KEEPCNT, [5], 4) = 0
setsockopt(3, SOL_TCP, TCP_KEEPINTVL, [20], 4) = 0
getsockopt(3, SOL_SOCKET, SO_SNDBUF, [16384], [4]) = 0
setsockopt(3, SOL_SOCKET, SO_SNDBUF, [51200], 4) = 0
listen(3, 20)                           = 0
rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0xb6b6f120}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC, IPPROTO_IP) = 4
setsockopt(4, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
setsockopt(4, SOL_SOCKET, SO_REUSEPORT, [1], 4) = 0
setsockopt(4, SOL_IP, IP_MULTICAST_LOOP, "\1", 1) = 0
bind(4, {sa_family=AF_INET, sin_port=htons(15947), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
setsockopt(4, SOL_IP, IP_ADD_MEMBERSHIP, {imr_multiaddr=inet_addr("228.67.43.91"), imr_interface=inet_addr("0.0.0.0")}, 8) = 0
setsockopt(4, SOL_IP, IP_MULTICAST_ALL, [0], 4) = 0
setsockopt(4, SOL_IP, IP_MULTICAST_TTL, "\0", 1) = 0
sendto(4, "hostIdTest\0", 11, 0, {sa_family=AF_INET, sin_port=htons(15947), sin_addr=inet_addr("228.67.43.91")}, 16) = 11
_newselect(5, [4], NULL, NULL, {tv_sec=5, tv_usec=0}) = 1 (in [4], left {tv_sec=4, tv_usec=999969})
recvfrom(4, "hostIdTest\0", 20, 0, {sa_family=AF_INET, sin_port=htons(15947), sin_addr=inet_addr("10.0.102.237")}, [16]) = 11
setsockopt(4, SOL_IP, IP_DROP_MEMBERSHIP, {imr_multiaddr=inet_addr("228.67.43.91"), imr_interface=inet_addr("0.0.0.0")}, 8) = 0
close(4)                                = 0
gettimeofday({tv_sec=1595879552, tv_usec=28199}, NULL) = 0
gettimeofday({tv_sec=1595879552, tv_usec=29481}, NULL) = 0
write(1, "2020-07-27 20:52:32,029 [NOTICE]"..., 106) = 106
stat64("/dev/video0", {st_mode=S_IFCHR|0660, st_rdev=makedev(0x51, 0x7), ...}) = 0
openat(AT_FDCWD, "/dev/video0", O_RDWR|O_LARGEFILE) = 4
ioctl(4, VIDIOC_QUERYCAP, {driver="bm2835 mmal", card="mmal service 16.1", bus_info="platform:bcm2835-v4l2", version=5.4.51, capabilities=V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_VIDEO_OVERLAY|V4L2_CAP_READWRITE|V4L2_CAP_STREAMING|V4L2_CAP_DEVICE_CAPS|V4L2_CAP_EXT_PIX_FORMAT, device_caps=V4L2_CAP_VIDEO_CAPTURE|V4L2_CAP_VIDEO_OVERLAY|V4L2_CAP_READWRITE|V4L2_CAP_STREAMING|V4L2_CAP_EXT_PIX_FORMAT}) = 0
gettimeofday({tv_sec=1595879552, tv_usec=38447}, NULL) = 0
write(1, "2020-07-27 20:52:32,038 [NOTICE]"..., 154) = 154
gettimeofday({tv_sec=1595879552, tv_usec=42983}, NULL) = 0
write(1, "2020-07-27 20:52:32,042 [NOTICE]"..., 123) = 123
gettimeofday({tv_sec=1595879552, tv_usec=50081}, NULL) = 0
write(1, "2020-07-27 20:52:32,050 [NOTICE]"..., 126) = 126
gettimeofday({tv_sec=1595879552, tv_usec=56643}, NULL) = 0
write(1, "2020-07-27 20:52:32,056 [NOTICE]"..., 125) = 125
ioctl(4, VIDIOC_G_FMT, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE, fmt.pix={width=1640, height=1232, pixelformat=v4l2_fourcc('H', '2', '6', '4') /* V4L2_PIX_FMT_H264 */, field=V4L2_FIELD_NONE, bytesperline=0, sizeimage=2050048, colorspace=V4L2_COLORSPACE_SMPTE170M}}) = 0
gettimeofday({tv_sec=1595879552, tv_usec=63245}, NULL) = 0
write(1, "2020-07-27 20:52:32,063 [DEBUG ]"..., 145) = 145
ioctl(4, VIDIOC_S_FMT, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE, fmt.pix={width=1640, height=1232, pixelformat=v4l2_fourcc('H', '2', '6', '4') /* V4L2_PIX_FMT_H264 */, field=V4L2_FIELD_ANY, bytesperline=0, sizeimage=0, colorspace=0 /* V4L2_COLORSPACE_??? */} => fmt.pix={width=1640, height=1232, pixelformat=v4l2_fourcc('H', '2', '6', '4') /* V4L2_PIX_FMT_H264 */, field=V4L2_FIELD_NONE, bytesperline=0, sizeimage=2050048, colorspace=V4L2_COLORSPACE_SMPTE170M}}) = 0
gettimeofday({tv_sec=1595879552, tv_usec=73956}, NULL) = 0
write(1, "2020-07-27 20:52:32,073 [NOTICE]"..., 146) = 146
ioctl(4, VIDIOC_G_FMT, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE, fmt.pix={width=1640, height=1232, pixelformat=v4l2_fourcc('H', '2', '6', '4') /* V4L2_PIX_FMT_H264 */, field=V4L2_FIELD_NONE, bytesperline=0, sizeimage=2050048, colorspace=V4L2_COLORSPACE_SMPTE170M}}) = 0
gettimeofday({tv_sec=1595879552, tv_usec=79076}, NULL) = 0
write(1, "2020-07-27 20:52:32,079 [DEBUG ]"..., 145) = 145
ioctl(4, VIDIOC_S_PARM, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE, parm.capture={capability=0, capturemode=0, timeperframe=1/25, extendedmode=0, readbuffers=0} => parm.capture={capability=V4L2_CAP_TIMEPERFRAME, capturemode=0, timeperframe=1/25, extendedmode=0, readbuffers=1}}) = 0
gettimeofday({tv_sec=1595879552, tv_usec=89357}, NULL) = 0
write(1, "2020-07-27 20:52:32,089 [NOTICE]"..., 104) = 104
gettimeofday({tv_sec=1595879552, tv_usec=94817}, NULL) = 0
write(1, "2020-07-27 20:52:32,094 [NOTICE]"..., 106) = 106
gettimeofday({tv_sec=1595879552, tv_usec=102016}, NULL) = 0
write(1, "2020-07-27 20:52:32,102 [NOTICE]"..., 102) = 102
mmap2(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0xb631d000
mprotect(0xb631e000, 8388608, PROT_READ|PROT_WRITE) = 0
clone(child_stack=0xb6b1cf88, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0xb6b1d4b8, tls=0xb6b1d910, child_tidptr=0xb6b1d4b8) = 829
uname({sysname="Linux", nodename="pi-camera", ...}) = 0
mmap2(NULL, 2052096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6128000
mmap2(NULL, 200704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb60f7000
mmap2(NULL, 2052096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5f02000
gettimeofday({tv_sec=1595879552, tv_usec=113384}, NULL) = 0
write(1, "2020-07-27 20:52:32,113 [DEBUG ]"..., 100) = 100
gettimeofday({tv_sec=1595879552, tv_usec=118782}, NULL) = 0
gettimeofday({tv_sec=1595879552, tv_usec=120136}, NULL) = 0
write(1, "2020-07-27 20:52:32,120 [NOTICE]"..., 145) = 145
gettimeofday({tv_sec=1595879552, tv_usec=126442}, NULL) = 0
write(1, "2020-07-27 20:52:32,126 [NOTICE]"..., 116) = 116
gettimeofday({tv_sec=1595879552, tv_usec=133719}, NULL) = 0
write(1, "2020-07-27 20:52:32,133 [NOTICE]"..., 115) = 115
uname({sysname="Linux", nodename="pi-camera", ...}) = 0
gettimeofday({tv_sec=1595879552, tv_usec=140070}, NULL) = 0
gettimeofday({tv_sec=1595879552, tv_usec=141297}, NULL) = 0
write(1, "2020-07-27 20:52:32,141 [NOTICE]"..., 150) = 150
rt_sigaction(SIGINT, {sa_handler=0x602b0, sa_mask=[INT], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0xb6b6f120}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
gettimeofday({tv_sec=1595879552, tv_usec=148384}, NULL) = 0
_newselect(4, [3], [], [], {tv_sec=0, tv_usec=0}) = 0 (Timeout)
gettimeofday({tv_sec=1595879552, tv_usec=149155}, NULL) = 0
gettimeofday({tv_sec=1595879552, tv_usec=149489}, NULL) = 0
_newselect(4, [3], [], [], {tv_sec=0, tv_usec=9666}) = 0 (Timeout)
gettimeofday({tv_sec=1595879552, tv_usec=162274}, NULL) = 0
gettimeofday({tv_sec=1595879552, tv_usec=162653}, NULL) = 0
gettimeofday({tv_sec=1595879552, tv_usec=162990}, NULL) = 0

[...]

_newselect(4, [3], [], [], {tv_sec=0, tv_usec=9516}) = 0 (Timeout)
gettimeofday({tv_sec=1595879555, tv_usec=640398}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=640895}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=641432}, NULL) = 0
_newselect(4, [3], [], [], {tv_sec=0, tv_usec=9463}) = 1 (in [3], left {tv_sec=0, tv_usec=0})
accept(3, {sa_family=AF_INET, sin_port=htons(51490), sin_addr=inet_addr("10.0.102.130")}, [16]) = 5
rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0xb6b6f120}, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0xb6b6f120}, 8) = 0
fcntl64(5, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(5, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
getsockopt(5, SOL_SOCKET, SO_SNDBUF, [102400], [4]) = 0
getsockopt(5, SOL_SOCKET, SO_SNDBUF, [102400], [4]) = 0
brk(0xed3000)                           = 0xed3000
gettimeofday({tv_sec=1595879555, tv_usec=657977}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=658479}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=658958}, NULL) = 0
_newselect(6, [3 5], [], [5], {tv_sec=0, tv_usec=9521}) = 1 (in [5], left {tv_sec=0, tv_usec=9475})
recvfrom(5, "OPTIONS rtsp://pi-camera"..., 20000, 0, 0xbeff5e8c, [16->0]) = 133
gettimeofday({tv_sec=1595879555, tv_usec=661207}, NULL) = 0
send(5, "RTSP/1.0 200 OK\r\nCSeq: 2\r\nDate: "..., 152, 0) = 152
gettimeofday({tv_sec=1595879555, tv_usec=663235}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=663873}, NULL) = 0
_newselect(6, [3 5], [], [5], {tv_sec=0, tv_usec=4606}) = 1 (in [5], left {tv_sec=0, tv_usec=0})
recvfrom(5, "DESCRIBE rtsp://pi-camera"..., 20000, 0, 0xbeff5e8c, [16->0]) = 159
socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC, IPPROTO_IP) = 6
setsockopt(6, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
setsockopt(6, SOL_SOCKET, SO_REUSEPORT, [1], 4) = 0
setsockopt(6, SOL_IP, IP_MULTICAST_LOOP, "\1", 1) = 0
fcntl64(6, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(6, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
getsockopt(6, SOL_SOCKET, SO_SNDBUF, [180224], [4]) = 0
getsockopt(6, SOL_SOCKET, SO_SNDBUF, [180224], [4]) = 0
gettimeofday({tv_sec=1595879555, tv_usec=675635}, NULL) = 0
mmap2(NULL, 2052096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5c0b000
munmap(0xb5c0b000, 2052096)             = 0
close(6)                                = 0
getsockname(5, {sa_family=AF_INET, sin_port=htons(8555), sin_addr=inet_addr("10.0.102.237")}, [16]) = 0
gettimeofday({tv_sec=1595879555, tv_usec=679276}, NULL) = 0
send(5, "RTSP/1.0 200 OK\r\nCSeq: 3\r\nDate: "..., 632, 0) = 632
gettimeofday({tv_sec=1595879555, tv_usec=681289}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=681803}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=682297}, NULL) = 0
_newselect(6, [3 5], [], [5], {tv_sec=0, tv_usec=9506}) = 1 (in [5], left {tv_sec=0, tv_usec=1085})
recvfrom(5, "SETUP rtsp://10.0.102.237:8555/u"..., 20000, 0, 0xbeff5e8c, [16->0]) = 183
gettimeofday({tv_sec=1595879555, tv_usec=692955}, NULL) = 0
getsockname(5, {sa_family=AF_INET, sin_port=htons(8555), sin_addr=inet_addr("10.0.102.237")}, [16]) = 0
socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC, IPPROTO_IP) = 6
setsockopt(6, SOL_SOCKET, SO_REUSEADDR, [0], 4) = 0
setsockopt(6, SOL_SOCKET, SO_REUSEPORT, [0], 4) = 0
setsockopt(6, SOL_IP, IP_MULTICAST_LOOP, "\1", 1) = 0
bind(6, {sa_family=AF_INET, sin_port=htons(6970), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC, IPPROTO_IP) = 7
setsockopt(7, SOL_SOCKET, SO_REUSEADDR, [0], 4) = 0
setsockopt(7, SOL_SOCKET, SO_REUSEPORT, [0], 4) = 0
setsockopt(7, SOL_IP, IP_MULTICAST_LOOP, "\1", 1) = 0
bind(7, {sa_family=AF_INET, sin_port=htons(6971), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
fcntl64(6, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(6, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
getsockopt(6, SOL_SOCKET, SO_SNDBUF, [180224], [4]) = 0
getsockopt(6, SOL_SOCKET, SO_SNDBUF, [180224], [4]) = 0
gettimeofday({tv_sec=1595879555, tv_usec=702107}, NULL) = 0
mmap2(NULL, 2052096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5c0b000
getsockopt(6, SOL_SOCKET, SO_SNDBUF, [180224], [4]) = 0
getsockopt(6, SOL_SOCKET, SO_SNDBUF, [180224], [4]) = 0
gettimeofday({tv_sec=1595879555, tv_usec=704700}, NULL) = 0
send(5, "RTSP/1.0 200 OK\r\nCSeq: 4\r\nDate: "..., 214, 0) = 214
gettimeofday({tv_sec=1595879555, tv_usec=706601}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=707134}, NULL) = 0
_newselect(6, [3 5], [], [5], {tv_sec=0, tv_usec=9467}) = 1 (in [5], left {tv_sec=0, tv_usec=3968})
recvfrom(5, "PLAY rtsp://10.0.102.237:8555/un"..., 20000, 0, 0xbeff5e8c, [16->0]) = 162
gettimeofday({tv_sec=1595879555, tv_usec=715009}, NULL) = 0
getsockname(5, {sa_family=AF_INET, sin_port=htons(8555), sin_addr=inet_addr("10.0.102.237")}, [16]) = 0
fcntl64(7, F_GETFL)                     = 0x2 (flags O_RDWR)
fcntl64(7, F_SETFL, O_RDWR|O_NONBLOCK)  = 0
getsockopt(7, SOL_SOCKET, SO_SNDBUF, [180224], [4]) = 0
getsockopt(7, SOL_SOCKET, SO_SNDBUF, [180224], [4]) = 0
write(2, "RTCPInstance::RTCPInstance error"..., 77) = 77
gettimeofday({tv_sec=1595879555, tv_usec=721462}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=722081}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=722570}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=723132}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=723831}, NULL) = 0
setsockopt(7, SOL_IP, IP_MULTICAST_TTL, "\377", 1) = 0
sendto(7, "\200\310\0\6\361\246\230(\342\311\257\3\271L\375\t|\304\213\27\0\0\0\0\0\0\0\0\201\312\0\7"..., 60, 0, {sa_family=AF_INET, sin_port=htons(53531), sin_addr=inet_addr("10.0.102.130")}, 16) = 60
getsockname(7, {sa_family=AF_INET, sin_port=htons(6971), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0
mmap2(NULL, 2052096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5a16000
gettimeofday({tv_sec=1595879555, tv_usec=728681}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=729215}, NULL) = 0
send(5, "RTSP/1.0 200 OK\r\nCSeq: 5\r\nDate: "..., 187, 0) = 187
gettimeofday({tv_sec=1595879555, tv_usec=731065}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=731571}, NULL) = 0
_newselect(8, [3 5 7], [], [5], {tv_sec=0, tv_usec=9494}) = 1 (in [7], left {tv_sec=0, tv_usec=9440})
recvfrom(7, "\316\372\355\376", 1422, 0, {sa_family=AF_INET, sin_port=htons(53531), sin_addr=inet_addr("10.0.102.130")}, [16]) = 4
gettimeofday({tv_sec=1595879555, tv_usec=733796}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=734322}, NULL) = 0
_newselect(8, [3 5 7], [], [5], {tv_sec=0, tv_usec=6743}) = 1 (in [7], left {tv_sec=0, tv_usec=6691})
recvfrom(7, "\316\372\355\376", 1422, 0, {sa_family=AF_INET, sin_port=htons(53531), sin_addr=inet_addr("10.0.102.130")}, [16]) = 4
gettimeofday({tv_sec=1595879555, tv_usec=737365}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=737841}, NULL) = 0
_newselect(8, [3 5 7], [], [5], {tv_sec=0, tv_usec=3224}) = 0 (Timeout)
gettimeofday({tv_sec=1595879555, tv_usec=742289}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=742793}, NULL) = 0
gettimeofday({tv_sec=1595879555, tv_usec=743262}, NULL) = 0

[...]

_newselect(8, [3 5 7], [], [5], {tv_sec=0, tv_usec=9514}) = 0 (Timeout)
gettimeofday({tv_sec=1595879557, tv_usec=879582}, NULL) = 0
gettimeofday({tv_sec=1595879557, tv_usec=880089}, NULL) = 0
gettimeofday({tv_sec=1595879557, tv_usec=880580}, NULL) = 0
_newselect(8, [3 5 7], [], [5], {tv_sec=0, tv_usec=9509}) = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGINT {si_signo=SIGINT, si_code=SI_KERNEL} ---
fstat64(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
sigreturn({mask=[]})                    = -1 EINTR (Interrupted system call)
recvfrom(7, 0xeb3890, 1422, 0, 0xbeff5e84, [16]) = -1 EAGAIN (Resource temporarily unavailable)
gettimeofday({tv_sec=1595879557, tv_usec=887935}, NULL) = 0
gettimeofday({tv_sec=1595879557, tv_usec=888609}, NULL) = 0
write(1, "2020-07-27 20:52:37,888 [NOTICE]"..., 85) = -1 EPIPE (Broken pipe)
--- SIGPIPE {si_signo=SIGPIPE, si_code=SI_USER, si_pid=828, si_uid=1000} ---
close(-1)                               = -1 EBADF (Bad file descriptor)
gettimeofday({tv_sec=1595879557, tv_usec=891682}, NULL) = 0
munmap(0xb5a16000, 2052096)             = 0
munmap(0xb5c0b000, 2052096)             = 0
close(6)                                = 0
close(7)                                = 0
close(5)                                = 0
munmap(0xb5f02000, 2052096)             = 0
close(3)                                = 0
close(1)                                = 0
write(1, "SIGINT\n", 7)                 = -1 EBADF (Bad file descriptor)
exit_group(0)                           = ?
+++ exited with 0 +++

out.829

set_robust_list(0xb6b1d4c0, 12)         = 0
mmap2(NULL, 2097152, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0xb5d02000
munmap(0xb5d02000, 1040384)             = 0
munmap(0xb5f00000, 8192)                = 0
mprotect(0xb5e00000, 135168, PROT_READ|PROT_WRITE) = 0
gettimeofday({tv_sec=1595879552, tv_usec=153269}, NULL) = 0
write(1, "2020-07-27 20:52:32,153 [NOTICE]"..., 97) = 97
_newselect(5, [4], NULL, NULL, {tv_sec=1, tv_usec=0}) = 0 (Timeout)
_newselect(5, [4], NULL, NULL, {tv_sec=1, tv_usec=0}) = 0 (Timeout)
_newselect(5, [4], NULL, NULL, {tv_sec=1, tv_usec=0}) = 0 (Timeout)
_newselect(5, [4], NULL, NULL, {tv_sec=1, tv_usec=0}) = 0 (Timeout)
_newselect(5, [4], NULL, NULL, {tv_sec=1, tv_usec=0}) = 0 (Timeout)
_newselect(5, [4], NULL, NULL, {tv_sec=1, tv_usec=0} <unfinished ...>) = ?
+++ exited with 0 +++
danieltwagner commented 4 years ago

I was able to narrow it down to GPU memory consumption, but I'm not able to get it to work at the desired 1640x1232 (2x2 binning on Camera Module v2): This works as already mentioned above:

raspivid -t 0 --mode 4 -w 1640 -h 1232 --codec H264 -b 2500000 --profile high --level 4.2 --irefresh adaptive --inline -l -o tcp://0.0.0.0:3333 -v -a 127

... but ffmpeg fails with a somewhat useful error code:

$ ffmpeg -f v4l2 -input_format h264 -pix_fmt yuyv422 -video_size 1640x1232 -framerate 25 -i /dev/video0 -c:v copy -pix_fmt yuyv422 output.mkv
[...]
[video4linux2,v4l2 @ 0x189fec0] ioctl(VIDIOC_STREAMON): Operation not permitted
/dev/video0: Operation not permitted

It turns out that we fail to allocate some memory:

$ vcgencmd mem_reloc_stats
alloc failures:     1
compactions:        0
legacy block fails: 0

My /etc/config.txt contains gpu_mem=128 and stats look like so when the pi is idle:

$ vcgencmd get_mem arm && vcgencmd get_mem gpu && vcgencmd get_mem malloc_total && vcgencmd get_mem malloc && vcgencmd get_mem reloc_total && vcgencmd get_mem reloc
arm=384M
gpu=128M
malloc_total=10M
malloc=8M
reloc_total=108M
reloc=106M

Running at 2x2-binned 1640x922 resolution, v4l2rtspserver works just fine:

$ v4l2rtspserver -W 1640 -H 922 -F 25 -P 8555 -S /dev/video0 -v
[...]
2020-08-02 15:12:50,018 [INFO  ] - /home/pi/v4l2rtspserver/src/DeviceSource.cpp:29
    outtv_sec:1596377570 fps:27 bandwidth:2551kbps
2020-08-02 15:12:51,015 [INFO  ] - /home/pi/v4l2rtspserver/src/DeviceSource.cpp:29
    intv_sec:1596377571 fps:25 bandwidth:2324kbps

Memory looks happy:

$ vcgencmd get_mem arm && vcgencmd get_mem gpu && vcgencmd get_mem malloc_total && vcgencmd get_mem malloc && vcgencmd get_mem reloc_total && vcgencmd get_mem reloc
arm=384M
gpu=128M
malloc_total=10M
malloc=5M
reloc_total=108M
reloc=39M

ffmpeg continues to be unhappy with the same Operation not permitted error. It will, however, record very-high-bitrate 1280x720 video if asked.

Increasing gpu_mem to 192 or 256 doesn't make 2x2-binned 1640x1232 work, but ffmpeg now has a different complaint:

[video4linux2,v4l2 @ 0x103eec0] Dequeued v4l2 buffer contains 4100096 bytes, but 4040960 were expected. Flags: 0x00002001.
/dev/video0: Invalid data found when processing input

At this point I feel like this is nothing to do with your software anymore and that I might have to take this up with the raspberry pi folks. What do you think? I assume you have not been able to repro?

mpromonet commented 4 years ago

Hi danieltwagner,

If I follow you, after an upgrade of kernel capturing frame of 1280x720 doesnot work anymore, but it works with lower resolution ? I made a try with the kernel version you mentionned but not with this resolution.
If ffmeg can capture using the V4L2driver, it may have a problem in the capture code...

Best Regards, Michel.

danieltwagner commented 4 years ago

Sorry, let me clarify: After the kernel upgrade:

azsde commented 3 years ago

I do have the same issue regarding the max resolution: v4l2rtspserver can capture up to 1640x922, but fails for 1640x1232

WiredLife commented 3 years ago

Has anyone a solution? Have the same problem with newest kernel @ raspbian. Can capture up to 1640x922, but fails for 1640x1232, kernel downgrade also dont help.

mystcb commented 2 years ago

Just wanted to add a little more to this, as I have had the same issue. I have been watching this issue since I had an identical issue to @danieltwagner (down to the same logs so no point in posting them).

I have been lucky enough to get one of the new RPi Zero 2 W's and ran the same configuration on this (both using a similar image, Ansible to deploy the same code etc), and get the same problem. Including being unable to downgrade the Kernel to restore the higher resolution camera image.

Not sure what else I can add, other than having tried all of the options above and ran into the same issues, esp on the new Pi's as well.

CeruleanSpiral commented 2 years ago

I hit and fixed a similar issue over the weekend also with the Zero 2 W and RPi Camera v2.1. While tracking it down I noticed that the bcm2835_v4l2 kernel module was defaulting to a max_video_width/height of 1280x768 for some reason. Changing these to the max of that module (3280x2464) seemed to resolve it for me.

Checking the current module parameters: $ tail -n +1 /sys/module/bcm2835_v4l2/parameters/*

Setting more accurate defaults

$ sudo nano /etc/modprobe.d/bcm2835_v4l2.conf
options bcm2835_v4l2 max_video_height=2464
options bcm2835_v4l2 max_video_width=3280

$ sudo update-initramfs
mystcb commented 2 years ago

I will continue trying, but following the above returns the error of:

VIDIOC_STREAMON: Invalid argument

when using the command:

/usr/local/bin/v4l2rtspserver -W 1640 -H 1232 -P 8554 /dev/video0

Having double-checked the settings, I can see that the module has had its parameters updated:

Output from parameter check ``` # tail -n +1 /sys/module/bcm2835_v4l2/parameters/* ==> /sys/module/bcm2835_v4l2/parameters/debug <== 0 ==> /sys/module/bcm2835_v4l2/parameters/max_video_height <== 2464 ==> /sys/module/bcm2835_v4l2/parameters/max_video_width <== 3280 ==> /sys/module/bcm2835_v4l2/parameters/video_nr <== -1,-1 ```
Full logs using verbose mode ``` 2021-11-01 16:38:51,310 [INFO ] - /home/pi/v4l2rtspserver/v4l2wrapper/inc/logger.h:44 level:DEBUG 2021-11-01 16:38:51,310 [NOTICE] - /home/pi/v4l2rtspserver/main.cpp:294 Version: 1f0c768 live555 version:2021.11.01 2021-11-01 16:38:51,311 [NOTICE] - /home/pi/v4l2rtspserver/src/V4l2RTSPServer.cpp:36 Create V4L2 Source.../dev/video0 2021-11-01 16:38:51,312 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:133 driver:bm2835 mmal capabilities:85200005 mandatory:4000001 2021-11-01 16:38:51,312 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:136 /dev/video0 support capture 2021-11-01 16:38:51,312 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:138 /dev/video0 support read/write 2021-11-01 16:38:51,312 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:139 /dev/video0 support streaming 2021-11-01 16:38:51,313 [DEBUG ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:71 /dev/video0:JPEG size:1640x1232 bufferSize:2050048 2021-11-01 16:38:51,318 [ERROR ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:207 /dev/video0: Cannot set format:H264 Invalid argument 2021-11-01 16:38:51,319 [ERROR ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:207 /dev/video0: Cannot set format:MJPG Invalid argument 2021-11-01 16:38:51,324 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:225 /dev/video0:JPEG size:1640x1232 bufferSize:2050048 2021-11-01 16:38:51,325 [DEBUG ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:71 /dev/video0:JPEG size:1640x1232 bufferSize:2050048 2021-11-01 16:38:51,325 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:246 fps:1/25 2021-11-01 16:38:51,326 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2Device.cpp:247 nbBuffer:1 2021-11-01 16:38:51,326 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:49 Device /dev/video0 2021-11-01 16:38:51,357 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:73 Device /dev/video0 nb buffer:10 2021-11-01 16:38:51,357 [INFO ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92 Device /dev/video0 buffer idx:0 size:2050048 offset:0 2021-11-01 16:38:51,358 [INFO ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92 Device /dev/video0 buffer idx:1 size:2050048 offset:2052096 2021-11-01 16:38:51,358 [INFO ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92 Device /dev/video0 buffer idx:2 size:2050048 offset:4104192 2021-11-01 16:38:51,359 [INFO ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92 Device /dev/video0 buffer idx:3 size:2050048 offset:6156288 2021-11-01 16:38:51,360 [INFO ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92 Device /dev/video0 buffer idx:4 size:2050048 offset:8208384 2021-11-01 16:38:51,360 [INFO ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92 Device /dev/video0 buffer idx:5 size:2050048 offset:10260480 2021-11-01 16:38:51,361 [INFO ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92 Device /dev/video0 buffer idx:6 size:2050048 offset:12312576 2021-11-01 16:38:51,361 [INFO ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92 Device /dev/video0 buffer idx:7 size:2050048 offset:14364672 2021-11-01 16:38:51,362 [INFO ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92 Device /dev/video0 buffer idx:8 size:2050048 offset:16416768 2021-11-01 16:38:51,363 [INFO ] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:92 Device /dev/video0 buffer idx:9 size:2050048 offset:18468864 VIDIOC_STREAMON: Operation not permitted 2021-11-01 16:38:51,810 [NOTICE] - /home/pi/v4l2rtspserver/v4l2wrapper/src/V4l2MmapDevice.cpp:141 Device /dev/video0 ```

I will keep going at trying to see which bit I missed, but it does seem to be very odd. Using a modprobe -r bcm2835_v4l2 removing the .conf file and then a modprobe bcm2835_v4l2 does bring the feed back, but I am still stuck at 640x480 resolution.

Update:

Found this in the dmesg log:

Crash Dump information ``` [ 1293.942550] bcm2835-v4l2-0: vidioc_s_fmt_vid_cap: failed to setup mmal components: -3 [ 1293.943728] bcm2835-v4l2-0: vidioc_s_fmt_vid_cap: failed to setup mmal components: -3 [ 1294.417017] bcm2835-v4l2-0: Failed to enable capture port - error -1. Disabling camera port again [ 1294.430051] ------------[ cut here ]------------ [ 1294.430114] WARNING: CPU: 1 PID: 639 at drivers/media/common/videobuf2/videobuf2-core.c:1548 vb2_start_streaming+0x108/0x178 [videobuf2_common] [ 1294.430126] Modules linked in: bcm2835_v4l2(C) videobuf2_vmalloc cmac bnep hci_uart btbcm bluetooth ecdh_generic ecc 8021q garp stp llc brcmfmac brcmutil sha256_generic cfg80211 raspberrypi_hwmon rfkill bcm2835_codec(C) bcm2835_isp(C) v4l2_mem2mem snd_bcm2835(C) bcm2835_mmal_vchiq(C) videobuf2_dma_contig snd_pcm videobuf2_memops videobuf2_v4l2 snd_timer videobuf2_common i2c_bcm2835 snd videodev mc vc_sm_cma(C) uio_pdrv_genirq fixed uio i2c_dev i2c_bcm2708 ip_tables x_tables ipv6 [last unloaded: videobuf2_vmalloc] [ 1294.430619] CPU: 1 PID: 639 Comm: v4l2rtspserver Tainted: G WC 5.10.63-v7+ #1459 [ 1294.430627] Hardware name: BCM2835 [ 1294.430634] Backtrace: [ 1294.430663] [<809f0cb0>] (dump_backtrace) from [<809f1040>] (show_stack+0x20/0x24) [ 1294.430678] r7:ffffffff r6:00000000 r5:60000013 r4:80fe5e54 [ 1294.430696] [<809f1020>] (show_stack) from [<809f5250>] (dump_stack+0xcc/0xf8) [ 1294.430715] [<809f5184>] (dump_stack) from [<8011eca0>] (__warn+0xfc/0x114) [ 1294.430732] r10:7f1c7218 r9:00000009 r8:7f0e21ec r7:0000060c r6:00000009 r5:7f0e21ec [ 1294.430742] r4:7f0e6f90 r3:80f05050 [ 1294.430758] [<8011eba4>] (__warn) from [<809f168c>] (warn_slowpath_fmt+0x70/0xd8) [ 1294.430771] r7:0000060c r6:7f0e6f90 r5:80f05008 r4:00000000 [ 1294.430813] [<809f1620>] (warn_slowpath_fmt) from [<7f0e21ec>] (vb2_start_streaming+0x108/0x178 [videobuf2_common]) [ 1294.430830] r9:7f0fc068 r8:83939b88 r7:00000001 r6:83939d30 r5:83939e30 r4:ffffffff [ 1294.430896] [<7f0e20e4>] (vb2_start_streaming [videobuf2_common]) from [<7f0e28c8>] (vb2_core_streamon+0x90/0x180 [videobuf2_common]) [ 1294.430910] r7:00000001 r6:80f05008 r5:83a88540 r4:83939d30 [ 1294.430969] [<7f0e2838>] (vb2_core_streamon [videobuf2_common]) from [<7f16c030>] (vb2_streamon+0x24/0x64 [videobuf2_v4l2]) [ 1294.430980] r5:83a88540 r4:00000001 [ 1294.431025] [<7f16c00c>] (vb2_streamon [videobuf2_v4l2]) from [<7f16c0bc>] (vb2_ioctl_streamon+0x4c/0x50 [videobuf2_v4l2]) [ 1294.431180] [<7f16c070>] (vb2_ioctl_streamon [videobuf2_v4l2]) from [<7f0fc094>] (v4l_streamon+0x2c/0x30 [videodev]) [ 1294.431191] r5:40045612 r4:7f16c070 [ 1294.431418] [<7f0fc068>] (v4l_streamon [videodev]) from [<7f101114>] (__video_do_ioctl+0x234/0x460 [videodev]) [ 1294.431428] r5:40045612 r4:83939858 [ 1294.431655] [<7f100ee0>] (__video_do_ioctl [videodev]) from [<7f101b38>] (video_usercopy+0x138/0x5f0 [videodev]) [ 1294.431671] r10:00000000 r9:87eefe3c r8:00000000 r7:80f05008 r6:00000000 r5:40045612 [ 1294.431679] r4:40045612 [ 1294.431908] [<7f101a00>] (video_usercopy [videodev]) from [<7f102010>] (video_ioctl2+0x20/0x24 [videodev]) [ 1294.431925] r10:00000005 r9:87eee000 r8:00000000 r7:83a88540 r6:83a88540 r5:80f05008 [ 1294.431933] r4:7f101ff0 [ 1294.432160] [<7f101ff0>] (video_ioctl2 [videodev]) from [<7f0fa1f4>] (v4l2_ioctl+0x4c/0x60 [videodev]) [ 1294.432284] [<7f0fa1a8>] (v4l2_ioctl [videodev]) from [<8034a468>] (sys_ioctl+0x1d4/0x8ec) [ 1294.432295] r5:80f05008 r4:40045612 [ 1294.432313] [<8034a294>] (sys_ioctl) from [<80100040>] (ret_fast_syscall+0x0/0x28) [ 1294.432322] Exception stack(0x87eeffa8 to 0x87eefff0) [ 1294.432336] ffa0: 00000009 000ee478 00000005 40045612 7ec74080 00000005 [ 1294.432352] ffc0: 00000009 000ee478 00062398 00000036 00000000 00000000 76f82000 7ec740ec [ 1294.432364] ffe0: 0011714c 7ec7401c 000ed088 76c5a50c [ 1294.432380] r10:00000036 r9:87eee000 r8:80100204 r7:00000036 r6:00062398 r5:000ee478 [ 1294.432388] r4:00000009 [ 1294.432398] ---[ end trace 4c380dffd9ad153e ]--- ```
mystcb commented 2 years ago

Woo! Success! Using the changes @zeretar recommended, I noticed that setting the max_video_height/width a high did not seem to work for the specific video settings I was trying to achieve.

Eventually, I set the options to exactly the resolution I was trying to achieve for the video (1640x1232) and it worked!

$ sudo nano /etc/modprobe.d/bcm2835_v4l2.conf
options bcm2835_v4l2 max_video_height=1232
options bcm2835_v4l2 max_video_width=1640

$ sudo modprobe -r bcm2835_v4l2
$ sudo modprobe bcm2835_v4l2

$ tail -n +1 /sys/module/bcm2835_v4l2/parameters/*
==> /sys/module/bcm2835_v4l2/parameters/debug <==
0

==> /sys/module/bcm2835_v4l2/parameters/max_video_height <==
1232

==> /sys/module/bcm2835_v4l2/parameters/max_video_width <==
1640

==> /sys/module/bcm2835_v4l2/parameters/video_nr <==
-1,-1
azsde commented 2 years ago

Amazing ! Thanks for the fix guys :)