Description
Description
at Org.BouncyCastle.Math.EC.Rfc8032.Ed25519.PointDouble(PointAccum)
at Org.BouncyCastle.Math.EC.Rfc8032.Ed25519.ScalarMultStrausVar(UInt32[], UInt32[], PointAffine, PointAccum)
at Org.BouncyCastle.Math.EC.Rfc8032.Ed25519.ImplVerify(Byte[], Int32, Byte[], Int32, Byte[], Byte, Byte[], Int32, Int32)
at zero.cocoon.models.CcDiscoveries+<ConsumeAsync>d__16.MoveNext()
This started happening regularly and somewhat reproducibly since .Net 7 Preview 5 a couple of versions ago. My next level scheduler & async/await optimizations were also taking affect so I cannot be sure. It could just be caused by the increased load achieved instead of something in the runtime.
zero.cocoon.models.CcDiscoveries+<ConsumeAsync>d__16.MoveNext()
is the part that reads and parses delivered msgs from UDP backend with protobuf & and tries to verify signatures. The signature verification fails. The rate at which this function is called is high, hence eventually the error happens. So the error self is very low probability but the cluster makes it higher.
Reproduction Steps
Clone & compile https://github.com/tactical-drone/zero and run it.
Cluster bootstrap tests regularly fail with that error (1/5) chance.
Expected behavior
Profit.
Actual behavior
Randomly every 2nd or 3rd run I get this error in RELEASE mode. I have never seen this error happen in DEBUG.
What is awesome is, that it is very reproducible. Borg technology is designed to push the runtime to the limits.
Regression?
This worked in .net 7 preview 4
Known Workarounds
None
Configuration
CPU: amd 3900x
RAM: 64GB
7.0.0-preview.5.22266.11
Other information
I have no idea. The cluster test needs 10Gb memory in RELEASE mode, 20GB in DEBUG.
PointDouble
Does a tonne of small byte array allocations and does some basic math on it littered with bit shifts.