I have this running on a box with the igb driver using SO_TIMESTAMPING software TX timestamps. I'm not sure if I will be able to catch this as I haven't seen this on this machine before but we'll see.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
As of this morning, I'm running the patch on a machine where I used to consistently see the issue within 7 days or so. I'll keep an eye on things and let you know if this works.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Bad news indeed, but the good news is that on my dev box by adding an extra loop to send 800 delayreq per second in total, I was able to trigger this after some 30 minutes. Will update when I have any more news. Anyway, the "delayed TX timestamp" case does not catch this one.
Regards,
Wojciech
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
PTPd was not correctly removing SO_TIMESTAMPING before reverting to SO_TIMESTAMPNS. Fix committed in svn revision 554 - soon 2.3.1rc5. This time a ./configure option was added: --disable-so-timestamping - which is a last resort and allows to work around this issue. It is still recommended to use software TX timestamping when available.
Please test at your earliest convenience.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks for the update. I'm running the latest version from the SVN as of this morning and will need the usual 7 days or so til I'm sure it's not happening anymore.
Appreciate your hard work on this!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
7 days have elapsed and I haven't encountered the bug while running rc5! I didn't even have to compile with --disable-so-timestamping, so that's even better.
At least from my perspective I'm going to consider this fixed and start deploying it to my lower environments this week. Thanks again!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I have this running on a box with the igb driver using SO_TIMESTAMPING software TX timestamps. I'm not sure if I will be able to catch this as I haven't seen this on this machine before but we'll see.
As of this morning, I'm running the patch on a machine where I used to consistently see the issue within 7 days or so. I'll keep an eye on things and let you know if this works.
OK - I managed to catch one late TX timestamp after running for a few days. Without the patch this should cause the issue.
Ok, bad news here. I'm seeing the 100% CPU usage again even with the patch. The strace seems like it could be a bit different though.
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 2 (in [10 11])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
recvfrom(11, "\t\2\0006\n\0\2\4\0\0\0\0\0\0\0\0\0\0\0\0\0\16\376\377\376\1\0058\0\1\343"..., 300, MSG_DONTWAIT, {sa_family=AF_INET, sin_port=htons(320), sin_addr=inet_addr("10.2.111.10")}, [16]) = 54
select(12, [10 11], NULL, NULL, NULL) = 2 (in [10 11])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
recvfrom(11, "\t\2\0006\n\0\2\4\0\0\0\0\0\0\0\0\0\0\0\0\0\16\376\377\376\1\0058\0\1,\242"..., 300, MSG_DONTWAIT, {sa_family=AF_INET, sin_port=htons(320), sin_addr=inet_addr("10.2.111.10")}, [16]) = 54
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 2 (in [10 11])
recvmsg(10, {msg_name(16)={sa_family=AF_INET, sin_port=htons(319), sin_addr=inet_addr("10.2.111.10")}, msg_iov(1)=[{"\0\2\0,\n\0\2\4\0\0\0\0\0\0\0\0\0\0\0\0\0\16\376\377\376\1\0058\0\1\373\231"..., 300}], msg_controllen=96, {cmsg_len=32, cmsg_level=SOL_SOCKET, cmsg_type=0x23 / SCM_??? */, ...}, msg_flags=0}, MSG_DONTWAIT) = 44
write(6, "64409 1433945553383039860\n", 26) = 26
fstat(6, {st_mode=S_IFREG|0644, st_size=557596, ...}) = 0
recvfrom(11, "\v\2\0@\n\0\2\4\0\0\0\0\0\0\0\0\0\0\0\0\0\16\376\377\376\1\0058\0\1\373\230"..., 300, MSG_DONTWAIT, {sa_family=AF_INET, sin_port=htons(320), sin_addr=inet_addr("10.2.111.10")}, [16]) = 64
select(12, [10 11], NULL, NULL, NULL) = 2 (in [10 11])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
recvfrom(11, "\10\2\0,\n\0\2\4\0\0\0\0\0\0\0\0\0\0\0\0\0\16\376\377\376\1\0058\0\1\373\231"..., 300, MSG_DONTWAIT, {sa_family=AF_INET, sin_port=htons(320), sin_addr=inet_addr("10.2.111.10")}, [16]) = 44
adjtimex({modes=ADJ_FREQUENCY|ADJ_TICK, offset=0, freq=-10510353, maxerror=1509, esterror=1009, status=STA_PLL|STA_NANO, constant=10, precision=1, tolerance=32768000, time={1433945553, 383529827}, tick=10000, ppsfreq=0, jitter=0, shift=0, stabil=0, jitcnt=0, calcnt=0, errcnt=0, stbcnt=0}) = 0 (TIME_OK)
adjtimex({modes=0, offset=0, freq=-10510353, maxerror=1509, esterror=1009, status=STA_PLL|STA_NANO, constant=10, precision=1, tolerance=32768000, time={1433945553, 383580092}, tick=10000, ppsfreq=0, jitter=0, shift=0, stabil=0, jitcnt=0, calcnt=0, errcnt=0, stbcnt=0}) = 0 (TIME_OK)
adjtimex({modes=ADJ_STATUS, offset=0, freq=-10510353, maxerror=1509, esterror=1009, status=STA_PLL|STA_NANO, constant=10, precision=1, tolerance=32768000, time={1433945553, 383626664}, tick=10000, ppsfreq=0, jitter=0, shift=0, stabil=0, jitcnt=0, calcnt=0, errcnt=0, stbcnt=0}) = 0 (TIME_OK)
adjtimex({modes=ADJ_MAXERROR|ADJ_ESTERROR, offset=0, freq=-10510353, maxerror=1814, esterror=1814, status=STA_PLL|STA_NANO, constant=10, precision=1, tolerance=32768000, time={1433945553, 383678592}, tick=10000, ppsfreq=0, jitter=0, shift=0, stabil=0, jitcnt=0, calcnt=0, errcnt=0, stbcnt=0}) = 0 (TIME_OK)
stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3559, ...}) = 0
write(5, "2015-06-10 09:12:33.383710, slv,"..., 139) = 139
fstat(5, {st_mode=S_IFREG|0755, st_size=24894087, ...}) = 0
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
recvmsg(10, 0x7fffff375c70, MSG_DONTWAIT) = -1 EAGAIN (Resource temporarily unavailable)
select(12, [10 11], NULL, NULL, NULL) = 1 (in [10])
Hi,
Bad news indeed, but the good news is that on my dev box by adding an extra loop to send 800 delayreq per second in total, I was able to trigger this after some 30 minutes. Will update when I have any more news. Anyway, the "delayed TX timestamp" case does not catch this one.
Regards,
Wojciech
PTPd was not correctly removing SO_TIMESTAMPING before reverting to SO_TIMESTAMPNS. Fix committed in svn revision 554 - soon 2.3.1rc5. This time a ./configure option was added: --disable-so-timestamping - which is a last resort and allows to work around this issue. It is still recommended to use software TX timestamping when available.
Please test at your earliest convenience.
Thanks for the update. I'm running the latest version from the SVN as of this morning and will need the usual 7 days or so til I'm sure it's not happening anymore.
Appreciate your hard work on this!
Looks like this was a major pain for multiple users, and no wonder, so thanks for helping out with testing.
7 days have elapsed and I haven't encountered the bug while running rc5! I didn't even have to compile with --disable-so-timestamping, so that's even better.
At least from my perspective I'm going to consider this fixed and start deploying it to my lower environments this week. Thanks again!
Hi,
OK - good news.