4 Replies Latest reply on Apr 9, 2015 8:42 AM by chesik

    CodeXL 1.6 overrides locale settings when GPU profiling on Linux

    sharpneli

      When performing CPU profiling everything works fine. Switch to GPU profiling and the CodeXL will override the applications locale selection into whatever LC_ env vars state and thus ruining float parsing as the separator becomes a comma instead of period.

       

      Steps to reproduce: Do a fresh install of Xubuntu/Ubuntu. Select timezone into somewhere in Europe so it'll automatically set LC_ env vars to whatever locale there is. Install AMD drivers and CodeXL. Profile a program that either prints floats or parses them using the standard C library functions. Observe how in CPU profiling floats print as they normally should under the default C locale. Observe how in GPU profiling CodeXL overrides the locale selection of the program to follow the environment variables and thus changing the parsing style.

       

      Workaround: Change all LC_ env vars to en_US.UFT-8, or whatever you want to force your software to use.

       

      It would be more defensible if it would override it in all cases. But as it does it only on GPU profiling it makes it really painful to debug where the issue is.

       

      P.S.

      Make the catalyst control center on Linux have a language selection.

        • Re: CodeXL 1.6 overrides locale settings when GPU profiling on Linux

          Thanks for the report, the clear reproducibility instructions AND workaround. I have forwarded to the engineering team to ensure they are aware. The feature request as well for the Catalyst control center.

           

          Nicely done!

            • Re: CodeXL 1.6 overrides locale settings when GPU profiling on Linux
              sharpneli

              I wish to retract my claim that it would be more defensible if it would happen also in CPU profiling. As the C specification is quite clear on the issue (C11 Specification 7.11.1.1 paragraph 4) . If no locale is selected by the program then it's equivalent to having the "C" locale set. So the current GPU debugging breaks explicitly C conformant programs. It should be the same in C++.

               

              So the only possible fix is to make GPU profiling not leak it's locale into the process under examination.

                • Re: CodeXL 1.6 overrides locale settings when GPU profiling on Linux
                  chesik

                  Hi,

                   

                  We have tried on several systems to reproduce the issue with the GPU Profiler and so far have been unable to reproduce the issue.  Here's what I tried on my Ubuntu machine

                   

                  Open the Language Support app

                  On the Regional Formats page, I selected "Deutsch (Deutschland)" for the "Display numbers, dates, and currentcy amounts in the usual format for" setting

                  I clicked the "Apply System-wide" button, and rebooted the system

                  After logging back in, I ran an application that write floating point values to stdout.

                  I see no difference in the output when running the app standalone or within CodeXL.

                   

                  CodeXL QA also tried to reproduce this on several of their systems.

                   

                  I took a look at the GPU Profiler code, and I think I know what might be causing the issue you're seeing, but until I can reproduce the issue, I can't confirm that any fix I put in place is correct.

                   

                  Perhaps, you can share how you are changing the locale on you Ubuntu system and perhaps also share the application you are using for testing.

                   

                  Thanks,

                  Chris

              • Re: CodeXL 1.6 overrides locale settings when GPU profiling on Linux

                Cool. Appreciate the update and refinement.