# Another strange debugger/Math.Sqrt interaction

I'm seeing another strange behavior that seems independent from other stuff I've found today. It seems that the mere presence of a breakpoint on a line can affect the computation.

I'm using Linqpad 6.5.5 x64

.NET Core version (host): 3.0.0

.NET Core version (queries): 3.0.0

Roslyn Version: 3.3.1-beta4-19462-11

FSharp.Compiler.Service version: 32.0.0.0

Here's the reproduction.

- Create a C# statements script

Console.WriteLine(Math.Sqrt(1)); Console.WriteLine(Math.Sqrt(1)); // breakpoint Console.WriteLine(Math.Sqrt(1)); Console.WriteLine(Math.Sqrt(4)); Console.WriteLine(Math.Sqrt(4)); // breakpoint Console.WriteLine(Math.Sqrt(4)); Console.WriteLine(Math.Sqrt(9)); Console.WriteLine(Math.Sqrt(9)); // breakpoint Console.WriteLine(Math.Sqrt(9));

- Set breakpoints on the appropriate lines.
- Ensure compiler optimizations are turned off.
- Execute the script.
- For each breakpoint, just continue the script.

The final output (on my machine) is

1 1.0000000000000278 1 2 2.0000000000000555 2 3 3.000000000000074 3

## Comments

I've delved into this a little more. I don't understand it but I've scoped out the behavior a little more. It seems that in certain cases, a breakpoint causes the first byte of

`double`

to get overwritten.http://share.linqpad.net/2t5kcw.linq

So far, I've observed 251, 184, and 185 overwriting the first byte. Curiously it seems that the

`double`

value`0`

is immune from this behavior, although infinity and NaN are not.Output:

I'm seeing the same behavior in Visual Studio. This is very peculiar, and I'd suggest logging a bug report either on the Visual Studio site or here:

https://github.com/dotnet/coreclr/issues

If you mention that you're experiencing the same behavior in LINQPad's debugger, it should help narrow it down for them.