开发者

Variable is not incrementing in C# Release x64

开发者 https://www.devze.com 2023-02-05 06:46 出处:网络
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 ?

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消