Could someone explain to me why this piece of code is doing well when I execute it on a x86 platform and why it fail on x64 ?
Results :
- x86 Debug : 12345678910
- x64 Debug : 12345678910
- x86 Release : 12345678910
- x64 Release : 1111111111
If I change something, like removing one of the unused variables, or if I remove the useless for-loop after p_lFirstId++, the strange behavior disappear.
I found that changing "pdb开发者_开发百科-only" to "full" in my release configuration, it's work again.
If you run the code directly from visual studio, it's doing well too.
Is this a JIT Compiler bug ?
Thank you in advance.
class Program
{
static void Main(string[] args)
{
Test(null, null, null, 0, 1);
}
public static void Test(
List<string> liste, List<string> unused1,
string unused2, int unused3, long p_lFirstId)
{
liste = new List<string>();
StringBuilder sbSql = new StringBuilder();
for (int i = 0 ; i < 10 ; i++)
{
sbSql.Append(p_lFirstId);
p_lFirstId++;
foreach (string sColonne in liste)
{
}
}
System.Console.WriteLine(sbSql.ToString());
}
}
This is a bug in the CLR. I would advise contacting Microsoft and asking them to correct this bug in their next release.
精彩评论