Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Worker hits ASSERT condition in production #1316

Open
gitamirp opened this issue Jan 17, 2024 · 14 comments
Open

Worker hits ASSERT condition in production #1316

gitamirp opened this issue Jan 17, 2024 · 14 comments
Labels

Comments

@gitamirp
Copy link

gitamirp commented Jan 17, 2024

worker hits assert in

https://github.com/versatica/mediasoup/blob/v3/worker/src/RTC/RateCalculator.cpp#L37

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007f8d1f851535 in __GI_abort () at abort.c:79
#2  0x000055814b9c3e7f in RTC::RateCalculator::Update(unsigned long, unsigned long) ()
#3  0x000055814ba754d1 in RTC::WebRtcTransport::SendRtpPacket(RTC::Consumer*, RTC::RtpPacket*, std::function<void (bool)> const*) ()
#4  0x000055814ba528d2 in RTC::Transport::OnConsumerSendRtpPacket(RTC::Consumer*, RTC::RtpPacket*) ()
#5  0x000055814ba116f0 in RTC::SimpleConsumer::SendRtpPacket(RTC::RtpPacket*, std::shared_ptr<RTC::RtpPacket>&) ()
#6  0x000055814b9d38c2 in RTC::Router::OnTransportProducerRtpPacketReceived(RTC::Transport*, RTC::Producer*, RTC::RtpPacket*) ()
#7  0x000055814ba510a0 in RTC::Transport::OnProducerRtpPacketReceived(RTC::Producer*, RTC::RtpPacket*) ()
#8  0x000055814b9bd28e in RTC::Producer::ReceiveRtpPacket(RTC::RtpPacket*) ()
#9  0x000055814ba3d326 in RTC::Transport::ReceiveRtpPacket(RTC::RtpPacket*) ()
#10 0x000055814ba7ee97 in RTC::WebRtcTransport::OnRtpDataReceived(RTC::TransportTuple*, unsigned char const*, unsigned long) ()
#11 0x000055814ba808b3 in RTC::WebRtcTransport::OnPacketReceived(RTC::TransportTuple*, unsigned char const*, unsigned long) ()
#12 0x000055814ba81192 in non-virtual thunk to RTC::WebRtcTransport::OnUdpSocketPacketReceived(RTC::UdpSocket*, unsigned char const*, unsigned long, sockaddr const*) ()
#13 0x000055814ba6a5d1 in RTC::UdpSocket::UserOnUdpDatagramReceived(unsigned char const*, unsigned long, sockaddr const*) ()
#14 0x000055814b9218ce in onRecv(uv_udp_s*, long, uv_buf_t const*, sockaddr const*, unsigned int) ()
#15 0x000055814bde4c5d in uv.udp_io ()
#16 0x000055814bde7fd6 in uv.io_poll ()
#17 0x000055814bddb6ae in uv_run ()
#18 0x000055814b8c410f in DepLibUV::RunLoop() ()
#19 0x000055814b8ed381 in Worker::Worker(Channel::ChannelSocket*, PayloadChannel::PayloadChannelSocket*) ()
#20 0x000055814b8be813 in mediasoup_worker_run ()
#21 0x000055814b8bc709 in main ()
@gitamirp gitamirp added the bug label Jan 17, 2024
@jmillan
Copy link
Member

jmillan commented Jan 17, 2024

@gitamirp,

  • Which mediasoup version are you using?
  • Can you repro? can you provide an STR?
  • Please provide as much context info as you can.

@gitamirp
Copy link
Author

@jmillan thanks for looking into it.
We are using version 3.12.12.
Unfortunately, it happens in a production environment therefore its harder to get detailed logs or STR for it.
It rarely happens but I can try to get some more info around it.

@nazar-pc
Copy link
Collaborator

You should upgrade to latest release first, 3.12.12 is very old and the issue you are hitting might have been long fixed

@jmillan
Copy link
Member

jmillan commented Jan 17, 2024

Yes please, you're using quite an old version. Upgrade it as soon as you can.

Don't hesitate to reopen the issue if it comes out in the future.

@jmillan jmillan closed this as completed Jan 17, 2024
@ibc
Copy link
Member

ibc commented Jan 17, 2024

Honestly there is no change since 3.12.12 that could have fix this issue. Let me reopen to not forget. I think we need a fuzzer test for this class.

@ibc ibc reopened this Jan 17, 2024
@gitamirp
Copy link
Author

thanks, fwiw there were no significant changes to RateCalculator.cpp over the last 2 years.

https://github.com/versatica/mediasoup/commits/v3/worker/src/RTC/RateCalculator.cpp

I suspect it might occur when

https://github.com/versatica/mediasoup/blob/v3/worker/src/RTC/RateCalculator.cpp#L27

nowMs - this->newestItemStartTime >= this->itemSizeMs

and

https://github.com/versatica/mediasoup/blob/v3/worker/src/RTC/RateCalculator.cpp#L32

this->newestItemIndex >= this->windowItems

and

this->oldestItemIndex == 0

probably just logging an error and resting the RateCalculator will be more appropriate error handling

@ibc
Copy link
Member

ibc commented Jan 17, 2024

probably just logging an error and resting the RateCalculator will be more appropriate error handling

Defensive programming hides real bugs. We don't do that. If something should never happen then it must never happen, otherwise it's a bug that needs to be fixed.

@nazar-pc
Copy link
Collaborator

If there was a memory corruption somewhere, side-effects might be unexpected. This needs to be confirmed on latest version first.

@gitamirp
Copy link
Author

probably just logging an error and resting the RateCalculator will be more appropriate error handling

Defensive programming hides real bugs. We don't do that. If something should never happen then it must never happen, otherwise it's a bug that needs to be fixed.

also true

@gitamirp
Copy link
Author

If there was a memory corruption somewhere, side-effects might be unexpected. This needs to be confirmed on latest version first.

I am not sure how fast we can get these hosts on latest release. for now I will just patch it to suit our needs.

I'll let you know if I find more about this condition.

thanks

@ibc
Copy link
Member

ibc commented Feb 14, 2024

@gitamirp any news? I assumed you patched version 3.12.12 so it's not a problem for you anymore but perhaps you updated to latest version (without patching it)?

@gitamirp
Copy link
Author

We patched 3.12.12 by using

MS_ASSERT( this->newestItemIndex != this->oldestItemIndex || this->oldestItemIndex == -1 || this->newestItemIndex, "newest index overlaps with the oldest one");

I will let you know if we run into this ASSERT again with this patch.
If you are interested we can add some logs when

this->newestItemIndex == this->oldestItemIndex

I believe that in 3.12.12 both newest && oldest can be zero at the same time but I don't have logs to support it.

@ibc
Copy link
Member

ibc commented Feb 20, 2024

Yes please. Add those logs and comment here when you get something. We will investigate this next week. Too busy these days.

@gitamirp
Copy link
Author

Sure, we'll do. thanks

ibc added a commit that referenced this issue Mar 21, 2024
### Details

- This new fuzzer should trigger the crash reported in issue #1316.
- However it doesn't :(

With debugging logs (removed in the PR) it runs as follows:

```
----- rateCalculator.Update() [size:1478, nowMs:333916840]
----- rateCalculator.Update() [size:943, nowMs:333916840]
----- rateCalculator.Update() [size:564, nowMs:333916840]
----- rateCalculator.Update() [size:1384, nowMs:333916841]
----- rateCalculator.Update() [size:889, nowMs:333916841]
----- rateCalculator.Update() [size:1134, nowMs:333916841]
----- rateCalculator.Update() [size:1001, nowMs:333916841]
----- rateCalculator.Update() [size:54, nowMs:333916841]
----- rateCalculator.Update() [size:923, nowMs:333916841]
----- rateCalculator.Update() [size:244, nowMs:333916841]
----- rateCalculator.Update() [size:1257, nowMs:333916842]
----- rateCalculator.Update() [size:1082, nowMs:333916842]
----- rateCalculator.Update() [size:1498, nowMs:333916842]
----- rateCalculator.Update() [size:670, nowMs:333916842]
----- rateCalculator.Update() [size:59, nowMs:333916842]
----- rateCalculator.Update() [size:987, nowMs:333916842]
----- rateCalculator.Update() [size:1448, nowMs:333916843]
----- rateCalculator.Update() [size:728, nowMs:333916843]
----- rateCalculator.Update() [size:1225, nowMs:333916843]
----- rateCalculator.Update() [size:1177, nowMs:333916843]
----- rateCalculator.Update() [size:1478, nowMs:333916844]
----- rateCalculator.Update() [size:257, nowMs:333916844]
----- rateCalculator.Update() [size:953, nowMs:333916844]
----- rateCalculator.Update() [size:629, nowMs:333916844]
----- rateCalculator.Update() [size:4, nowMs:333916844]
----- rateCalculator.Update() [size:472, nowMs:333916844]
----- rateCalculator.Update() [size:872, nowMs:333916845]
----- rateCalculator.Update() [size:1268, nowMs:333916846]
----- rateCalculator.Update() [size:40, nowMs:333916846]
----- rateCalculator.Update() [size:1423, nowMs:333916847]
----- rateCalculator.Update() [size:942, nowMs:333916847]
----- rateCalculator.Update() [size:276, nowMs:333916847]
----- rateCalculator.Update() [size:379, nowMs:333916848]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:422, nowMs:333916848]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:586, nowMs:333916848]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:1224, nowMs:333916848]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:416, nowMs:333916848]
----- rateCalculator.Update() [size:430, nowMs:333916849]
----- rateCalculator.Update() [size:731, nowMs:333916849]
----- rateCalculator.Update() [size:758, nowMs:333916850]
----- rateCalculator.Update() [size:328, nowMs:333916851]
----- rateCalculator.Update() [size:1429, nowMs:333916851]
----- rateCalculator.Update() [size:312, nowMs:333916851]
----- rateCalculator.Update() [size:897, nowMs:333916851]
----- rateCalculator.Update() [size:404, nowMs:333916851]
----- rateCalculator.Update() [size:218, nowMs:333916851]
----- rateCalculator.Update() [size:887, nowMs:333916852]
----- rateCalculator.Update() [size:643, nowMs:333916852]
----- rateCalculator.Update() [size:54, nowMs:333916853]
----- rateCalculator.Update() [size:1428, nowMs:333916853]
----- rateCalculator.Update() [size:1371, nowMs:333916854]
----- rateCalculator.Update() [size:314, nowMs:333916854]
----- rateCalculator.Update() [size:1248, nowMs:333916854]
----- rateCalculator.Update() [size:512, nowMs:333916854]
----- rateCalculator.Update() [size:997, nowMs:333916855]
----- rateCalculator.Update() [size:118, nowMs:333916855]
----- rateCalculator.Update() [size:1496, nowMs:333916855]
----- rateCalculator.Update() [size:341, nowMs:333916855]
----- rateCalculator.Update() [size:1443, nowMs:333916855]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:1303, nowMs:333916855]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:1238, nowMs:333916856]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:692, nowMs:333916856]
----- rateCalculator.Update() [size:994, nowMs:333916856]
----- rateCalculator.Update() [size:570, nowMs:333916856]
----- rateCalculator.Update() [size:1213, nowMs:333916857]
----- rateCalculator.Update() [size:952, nowMs:333916857]
----- rateCalculator.Update() [size:766, nowMs:333916857]
----- rateCalculator.Update() [size:295, nowMs:333916857]
----- rateCalculator.Update() [size:1451, nowMs:333916857]
----- rateCalculator.Update() [size:1336, nowMs:333916857]
----- rateCalculator.Update() [size:687, nowMs:333916858]
----- rateCalculator.Update() [size:87, nowMs:333916858]
----- rateCalculator.Update() [size:1039, nowMs:333916858]
----- rateCalculator.Update() [size:1154, nowMs:333916858]
----- rateCalculator.Update() [size:1235, nowMs:333916859]
----- rateCalculator.Update() [size:439, nowMs:333916859]
----- rateCalculator.Update() [size:265, nowMs:333916859]
----- rateCalculator.Update() [size:1223, nowMs:333916860]
----- rateCalculator.Update() [size:47, nowMs:333916861]
----- rateCalculator.Update() [size:730, nowMs:333916861]
----- rateCalculator.Update() [size:1371, nowMs:333916862]
----- rateCalculator.Update() [size:582, nowMs:333916862]
----- rateCalculator.Update() [size:155, nowMs:333916862]
----- rateCalculator.Update() [size:1388, nowMs:333916862]
----- rateCalculator.Update() [size:348, nowMs:333916863]
----- rateCalculator.Update() [size:916, nowMs:333916863]
----- rateCalculator.Update() [size:485, nowMs:333916863]
----- rateCalculator.Update() [size:813, nowMs:333916863]
----- rateCalculator.Update() [size:1444, nowMs:333916863]
----- rateCalculator.Update() [size:781, nowMs:333916864]
----- rateCalculator.Update() [size:1093, nowMs:333916864]
----- rateCalculator.Update() [size:1425, nowMs:333916865]
----- rateCalculator.Update() [size:568, nowMs:333916865]
----- rateCalculator.Update() [size:1355, nowMs:333916865]
----- rateCalculator.Update() [size:1372, nowMs:333916865]
----- rateCalculator.Update() [size:735, nowMs:333916865]
----- rateCalculator.Update() [size:318, nowMs:333916865]
----- rateCalculator.Update() [size:1367, nowMs:333916865]
----- rateCalculator.Update() [size:1267, nowMs:333916866]
----- rateCalculator.Update() [size:765, nowMs:333916866]
----- rateCalculator.Update() [size:1024, nowMs:333916866]
----- rateCalculator.Update() [size:125, nowMs:333916867]
----- rateCalculator.Update() [size:68, nowMs:333916867]
----- rateCalculator.Update() [size:1014, nowMs:333916867]
----- rateCalculator.Update() [size:465, nowMs:333916868]
----- rateCalculator.Update() [size:1376, nowMs:333916868]
----- rateCalculator.Update() [size:997, nowMs:333916869]
----- rateCalculator.Update() [size:233, nowMs:333916869]
----- rateCalculator.Update() [size:1031, nowMs:333916870]
----- rateCalculator.Update() [size:790, nowMs:333916870]
----- rateCalculator.Update() [size:62, nowMs:333916870]
----- rateCalculator.Update() [size:300, nowMs:333916871]
----- rateCalculator.Update() [size:72, nowMs:333916871]
----- rateCalculator.Update() [size:216, nowMs:333916872]
----- rateCalculator.Update() [size:1440, nowMs:333916872]
----- rateCalculator.Update() [size:1141, nowMs:333916873]
----- rateCalculator.Update() [size:1477, nowMs:333916873]
----- rateCalculator.Update() [size:1313, nowMs:333916873]
----- rateCalculator.Update() [size:1154, nowMs:333916874]
----- rateCalculator.Update() [size:1049, nowMs:333916875]
----- rateCalculator.Update() [size:645, nowMs:333916875]
----- rateCalculator.Update() [size:475, nowMs:333916875]
----- rateCalculator.Update() [size:409, nowMs:333916876]
----- rateCalculator.Update() [size:669, nowMs:333916877]
----- rateCalculator.Update() [size:1075, nowMs:333916877]
----- rateCalculator.Update() [size:1386, nowMs:333916878]
----- rateCalculator.Update() [size:1129, nowMs:333916879]
----- rateCalculator.Update() [size:1103, nowMs:333916879]
----- rateCalculator.Update() [size:915, nowMs:333916880]
----- rateCalculator.Update() [size:795, nowMs:333916881]
----- rateCalculator.Update() [size:684, nowMs:333916881]
----- rateCalculator.Update() [size:321, nowMs:333916882]
----- rateCalculator.Update() [size:1312, nowMs:333916883]
----- rateCalculator.Update() [size:682, nowMs:333916883]
----- rateCalculator.Update() [size:1281, nowMs:333916884]
----- rateCalculator.Update() [size:528, nowMs:333916884]
----- rateCalculator.Update() [size:1483, nowMs:333916884]
----- rateCalculator.Update() [size:596, nowMs:333916885]
----- rateCalculator.Update() [size:1423, nowMs:333916885]
----- rateCalculator.Update() [size:1271, nowMs:333916885]
----- rateCalculator.Update() [size:256, nowMs:333916885]
----- rateCalculator.Update() [size:193, nowMs:333916885]
----- rateCalculator.Update() [size:623, nowMs:333916885]
----- rateCalculator.Update() [size:39, nowMs:333916886]
----- rateCalculator.Update() [size:635, nowMs:333916886]
----- rateCalculator.Update() [size:515, nowMs:333916886]
----- rateCalculator.Update() [size:856, nowMs:333916886]
----- rateCalculator.Update() [size:636, nowMs:333916886]
----- rateCalculator.Update() [size:882, nowMs:333916886]
----- rateCalculator.Update() [size:791, nowMs:333916887]
----- rateCalculator.Update() [size:12, nowMs:333916887]
----- rateCalculator.Update() [size:1083, nowMs:333916888]
----- rateCalculator.Update() [size:101, nowMs:333916888]
----- rateCalculator.Update() [size:1391, nowMs:333916889]
----- rateCalculator.Update() [size:764, nowMs:333916889]
----- rateCalculator.Update() [size:1285, nowMs:333916890]
----- rateCalculator.Update() [size:1015, nowMs:333916890]
----- rateCalculator.Update() [size:306, nowMs:333916890]
----- rateCalculator.Update() [size:605, nowMs:333916890]
----- rateCalculator.Update() [size:1276, nowMs:333916890]
----- rateCalculator.Update() [size:510, nowMs:333916890]
----- rateCalculator.Update() [size:1328, nowMs:333916891]
----- rateCalculator.Update() [size:138, nowMs:333916892]
----- rateCalculator.Update() [size:797, nowMs:333916892]
----- rateCalculator.Update() [size:1445, nowMs:333916893]
----- rateCalculator.Update() [size:84, nowMs:333916893]
----- rateCalculator.Update() [size:908, nowMs:333916893]
----- rateCalculator.Update() [size:84, nowMs:333916894]
----- rateCalculator.Update() [size:789, nowMs:333916894]
----- rateCalculator.Update() [size:36, nowMs:333916894]
----- rateCalculator.Update() [size:444, nowMs:333916894]
----- rateCalculator.Update() [size:486, nowMs:333916895]
----- rateCalculator.Update() [size:1233, nowMs:333916895]
----- rateCalculator.Update() [size:11, nowMs:333916896]
----- rateCalculator.Update() [size:773, nowMs:333916897]
----- rateCalculator.Update() [size:1272, nowMs:333916897]
----- rateCalculator.Update() [size:148, nowMs:333916898]
----- rateCalculator.Update() [size:404, nowMs:333916898]
----- rateCalculator.Update() [size:1316, nowMs:333916899]
----- rateCalculator.Update() [size:1317, nowMs:333916899]
----- rateCalculator.Update() [size:232, nowMs:333916900]
----- rateCalculator.Update() [size:1270, nowMs:333916900]
----- rateCalculator.Update() [size:277, nowMs:333916900]
----- rateCalculator.Update() [size:1091, nowMs:333916900]
----- rateCalculator.Update() [size:1271, nowMs:333916901]
----- rateCalculator.Update() [size:610, nowMs:333916901]
----- rateCalculator.Update() [size:42, nowMs:333916901]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:244, nowMs:333916901]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:1280, nowMs:333916901]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:302, nowMs:333916901]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:130, nowMs:333916901]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:68, nowMs:333916902]
----- rateCalculator.Update() [size:110, nowMs:333916902]
----- rateCalculator.Update() [size:748, nowMs:333916903]
----- rateCalculator.Update() [size:1168, nowMs:333916903]
----- rateCalculator.Update() [size:1326, nowMs:333916904]
----- rateCalculator.Update() [size:582, nowMs:333916904]
----- rateCalculator.Update() [size:679, nowMs:333916904]
----- rateCalculator.Update() [size:1489, nowMs:333916905]
----- rateCalculator.Update() [size:420, nowMs:333916906]
----- rateCalculator.Update() [size:394, nowMs:333916906]
----- rateCalculator.Update() [size:718, nowMs:333916907]
----- rateCalculator.Update() [size:1431, nowMs:333916907]
----- rateCalculator.Update() [size:1437, nowMs:333916907]
----- rateCalculator.Update() [size:1, nowMs:333916907]
----- rateCalculator.Update() [size:617, nowMs:333916907]
----- rateCalculator.Update() [size:1430, nowMs:333916908]
----- rateCalculator.Update() [size:1158, nowMs:333916908]
----- rateCalculator.Update() [size:1232, nowMs:333916908]
----- rateCalculator.Update() [size:1113, nowMs:333916909]
----- rateCalculator.Update() [size:401, nowMs:333916909]
----- rateCalculator.Update() [size:657, nowMs:333916910]
----- rateCalculator.Update() [size:1254, nowMs:333916910]
----- rateCalculator.Update() [size:47, nowMs:333916910]
----- rateCalculator.Update() [size:847, nowMs:333916910]
----- rateCalculator.Update() [size:576, nowMs:333916910]
----- rateCalculator.Update() [size:550, nowMs:333916911]
----- rateCalculator.Update() [size:358, nowMs:333916911]
----- rateCalculator.Update() [size:1212, nowMs:333916911]
----- rateCalculator.Update() [size:455, nowMs:333916911]
----- rateCalculator.Update() [size:723, nowMs:333916911]
----- rateCalculator.Update() [size:605, nowMs:333916912]
----- rateCalculator.Update() [size:1042, nowMs:333916912]
----- rateCalculator.Update() [size:702, nowMs:333916912]
----- rateCalculator.Update() [size:1496, nowMs:333916912]
----- rateCalculator.Update() [size:183, nowMs:333916912]
----- rateCalculator.Update() [size:1201, nowMs:333916913]
----- rateCalculator.Update() [size:1040, nowMs:333916913]
----- rateCalculator.Update() [size:1070, nowMs:333916914]
----- rateCalculator.Update() [size:1391, nowMs:333916915]
----- rateCalculator.Update() [size:1089, nowMs:333916915]
----- rateCalculator.Update() [size:1219, nowMs:333916916]
----- rateCalculator.Update() [size:173, nowMs:333917833]
----- rateCalculator.Update() [size:381, nowMs:333917834]
----- rateCalculator.Update() [size:1493, nowMs:333917834]
----- rateCalculator.Update() [size:1105, nowMs:333917835]
----- rateCalculator.Update() [size:1443, nowMs:333917835]
----- rateCalculator.Update() [size:1410, nowMs:333917836]
----- rateCalculator.Update() [size:1413, nowMs:333917836]
----- rateCalculator.Update() [size:115, nowMs:333917836]
----- rateCalculator.Update() [size:388, nowMs:333917836]
----- rateCalculator.Update() [size:1315, nowMs:333917836]
----- rateCalculator.Update() [size:1222, nowMs:333917837]
----- rateCalculator.Update() [size:528, nowMs:333917837]
----- rateCalculator.Update() [size:720, nowMs:333917837]
----- rateCalculator.Update() [size:507, nowMs:333917837]
----- rateCalculator.Update() [size:696, nowMs:333917838]
----- rateCalculator.Update() [size:713, nowMs:333917838]
----- rateCalculator.Update() [size:185, nowMs:333917838]
----- rateCalculator.Update() [size:1255, nowMs:333917839]
----- rateCalculator.Update() [size:1462, nowMs:333917839]
----- rateCalculator.Update() [size:818, nowMs:333917839]
----- rateCalculator.Update() [size:199, nowMs:333917839]
----- rateCalculator.Update() [size:364, nowMs:333917840]
----- rateCalculator.Update() [size:420, nowMs:333917840]
----- rateCalculator.Update() [size:1492, nowMs:333917840]
----- rateCalculator.Update() [size:965, nowMs:333917841]
----- rateCalculator.Update() [size:927, nowMs:333917842]
----- rateCalculator.Update() [size:1208, nowMs:333917842]
----- rateCalculator.Update() [size:1104, nowMs:333917843]
----- rateCalculator.Update() [size:1040, nowMs:333917843]
----- rateCalculator.Update() [size:132, nowMs:333917843]
----- rateCalculator.Update() [size:395, nowMs:333917844]
----- rateCalculator.Update() [size:962, nowMs:333917844]
----- rateCalculator.Update() [size:1298, nowMs:333917844]
----- rateCalculator.Update() [size:303, nowMs:333917844]
----- rateCalculator.Update() [size:1474, nowMs:333917844]
----- rateCalculator.Update() [size:1084, nowMs:333917845]
----- rateCalculator.Update() [size:186, nowMs:333917845]
----- rateCalculator.Update() [size:819, nowMs:333917845]
----- rateCalculator.Update() [size:1009, nowMs:333917846]
----- rateCalculator.Update() [size:1060, nowMs:333917846]
----- rateCalculator.Update() [size:645, nowMs:333917846]
----- rateCalculator.Update() [size:4, nowMs:333917847]
----- rateCalculator.Update() [size:1300, nowMs:333917847]
----- rateCalculator.Update() [size:460, nowMs:333917847]
----- rateCalculator.Update() [size:318, nowMs:333917848]
----- rateCalculator.Update() [size:1030, nowMs:333917848]
----- rateCalculator.Update() [size:482, nowMs:333917848]
----- rateCalculator.Update() [size:228, nowMs:333917849]
----- rateCalculator.Update() [size:1379, nowMs:333917849]
----- rateCalculator.Update() [size:33, nowMs:333917849]
----- rateCalculator.Update() [size:321, nowMs:333917850]
----- rateCalculator.Update() [size:167, nowMs:333917850]
----- rateCalculator.Update() [size:810, nowMs:333917850]
----- rateCalculator.Update() [size:1369, nowMs:333917850]
----- rateCalculator.Update() [size:1236, nowMs:333917850]
----- rateCalculator.Update() [size:759, nowMs:333917850]
----- rateCalculator.Update() [size:95, nowMs:333917850]
----- rateCalculator.Update() [size:856, nowMs:333917851]
----- rateCalculator.Update() [size:185, nowMs:333917851]
----- rateCalculator.Update() [size:595, nowMs:333917851]
----- rateCalculator.Update() [size:432, nowMs:333917851]
----- rateCalculator.Update() [size:165, nowMs:333917851]
----- rateCalculator.Update() [size:607, nowMs:333917852]
----- rateCalculator.Update() [size:818, nowMs:333917852]
----- rateCalculator.Update() [size:30, nowMs:333917852]
----- rateCalculator.Update() [size:771, nowMs:333917852]
----- rateCalculator.Update() [size:1047, nowMs:333917852]
----- rateCalculator.Update() [size:920, nowMs:333917852]
----- rateCalculator.Update() [size:1099, nowMs:333917852]
----- rateCalculator.Update() [size:344, nowMs:333917853]
----- rateCalculator.Update() [size:1156, nowMs:333917853]
----- rateCalculator.Update() [size:527, nowMs:333917853]
----- rateCalculator.Update() [size:54, nowMs:333917853]
----- rateCalculator.Update() [size:639, nowMs:333917854]
----- rateCalculator.Update() [size:178, nowMs:333917855]
----- rateCalculator.Update() [size:870, nowMs:333917855]
----- rateCalculator.Update() [size:799, nowMs:333917856]
----- rateCalculator.Update() [size:462, nowMs:333917857]
----- rateCalculator.Update() [size:305, nowMs:333917857]
----- rateCalculator.Update() [size:1295, nowMs:333917857]
----- rateCalculator.Update() [size:1392, nowMs:333917857]
----- rateCalculator.Update() [size:318, nowMs:333917857]
----- rateCalculator.Update() [size:1177, nowMs:333917857]
----- rateCalculator.Update() [size:1214, nowMs:333917858]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:624, nowMs:333917858]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:1360, nowMs:333917858]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:1185, nowMs:333917858]
----- rateCalculator.Update() [size:312, nowMs:333917858]
----- rateCalculator.Update() [size:1085, nowMs:333917858]
----- rateCalculator.Update() [size:808, nowMs:333917858]
----- rateCalculator.Update() [size:1056, nowMs:333917858]
----- rateCalculator.Update() [size:344, nowMs:333917858]
----- rateCalculator.Update() [size:619, nowMs:333917859]
----- rateCalculator.Update() [size:2, nowMs:333917859]
----- rateCalculator.Update() [size:765, nowMs:333917859]
----- rateCalculator.Update() [size:141, nowMs:333917859]
----- rateCalculator.Update() [size:109, nowMs:333917860]
----- rateCalculator.Update() [size:317, nowMs:333917860]
----- rateCalculator.Update() [size:591, nowMs:333917860]
----- rateCalculator.Update() [size:17, nowMs:333917861]
----- rateCalculator.Update() [size:651, nowMs:333917861]
----- rateCalculator.Update() [size:1151, nowMs:333917861]
----- rateCalculator.Update() [size:796, nowMs:333917862]
----- rateCalculator.Update() [size:551, nowMs:333917862]
----- rateCalculator.Update() [size:1414, nowMs:333917862]
----- rateCalculator.Update() [size:841, nowMs:333917862]
----- rateCalculator.Update() [size:1197, nowMs:333917862]
----- rateCalculator.Update() [size:1082, nowMs:333917863]
----- rateCalculator.Update() [size:1448, nowMs:333917863]
----- rateCalculator.Update() [size:863, nowMs:333917863]
----- rateCalculator.Update() [size:1185, nowMs:333917863]
----- rateCalculator.Update() [size:868, nowMs:333917863]
----- rateCalculator.Update() [size:460, nowMs:333917863]
----- rateCalculator.Update() [size:1386, nowMs:333917864]
----- rateCalculator.Update() [size:371, nowMs:333917864]
----- rateCalculator.Update() [size:219, nowMs:333917864]
----- rateCalculator.Update() [size:706, nowMs:333917864]
----- rateCalculator.Update() [size:972, nowMs:333917864]
----- rateCalculator.Update() [size:878, nowMs:333917864]
----- rateCalculator.Update() [size:567, nowMs:333917864]
----- rateCalculator.Update() [size:423, nowMs:333917865]
----- rateCalculator.Update() [size:1178, nowMs:333917865]
----- rateCalculator.Update() [size:1386, nowMs:333917865]
----- rateCalculator.Update() [size:849, nowMs:333917865]
----- rateCalculator.Update() [size:868, nowMs:333917865]
----- rateCalculator.Update() [size:1090, nowMs:333917865]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:724, nowMs:333917865]
***** rateCalculator.GetRate()
----- rateCalculator.Update() [size:1076, nowMs:333917866]
----- rateCalculator.Update() [size:950, nowMs:333917866]
----- rateCalculator.Update() [size:1367, nowMs:333917866]
----- rateCalculator.Update() [size:991, nowMs:333917867]
```

I cannot make it crash :(
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

No branches or pull requests

4 participants