Announcement

Collapse
No announcement yet.

valgrind reporting over 10 million errors on glxgears

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • valgrind reporting over 10 million errors on glxgears

    Using driver 8.8 for a Radeon 4870 on Ubuntu 8.04.1 (64 bits), I got some error messages when shutting down glxgears/fgl_glxgears:

    Code:
    heiko@baldr-ubuntu:~$ fgl_glxgears 
    Using GLX_SGIX_pbuffer
    10130 frames in 5.0 seconds = 2026.000 FPS
    minus back
    XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0"
          after 60693 requests (60692 known processed) with 0 events remaining.
    
    heiko@baldr-ubuntu:~$ glxgears 
    30318 frames in 5.0 seconds = 6063.559 FPS
    XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0"
          after 41 requests (40 known processed) with 0 events remaining.
    Also glxgears is running a lot slower (although I know this is not really important) then the previous driver release: 6000 versus 12000 fps.


    Because when I was debugging a self written OpenGL program, I saw valgrind mentioning a lot of things about fglrx_dri.so, I thought lets see what it does when using valgrind on glxgears. After running a few seconds it tells me that it had reported over 10 million errors (and that I should fix my program)!!! Most of them concerning fglrx_dri.so. I guess something is terribly wrong with this driver release? I ran the program again, with settings to provide some more detail (that time it gave less errors, but still more then 5 million), here some output of valgrind (of course fglrx_dri.so does not contain any debugging info, so I'm not sure how helpful this is):

    Code:
    ==12812== 
    ==12812== 1375957 errors in context 121 of 124:
    ==12812== Invalid write of size 1
    ==12812==    at 0x4C250C7: memcpy (mc_replace_strmem.c:402)
    ==12812==    by 0x7654630: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x7656887: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x748A570: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x74405F7: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x74835BF: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x743EEC1: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x6A8DD61: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x7086BEE: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x709C0C7: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x709C34D: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x76087C3: __driCreateNewScreen_20050727 (in /usr/lib/dri/fglrx_dri.so)
    ==12812==  Address 0x7f714f1cabb4 is not stack'd, malloc'd or (recently) free'd
    ==12812==
    ==12812== 1375957 errors in context 122 of 124:
    ==12812== Invalid write of size 1
    ==12812==    at 0x4C250BC: memcpy (mc_replace_strmem.c:402)
    ==12812==    by 0x7654630: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x7656887: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x748A570: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x74405F7: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x74835BF: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x743EEC1: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x6A8DD61: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x7086BEE: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x709C0C7: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x709C34D: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x76087C3: __driCreateNewScreen_20050727 (in /usr/lib/dri/fglrx_dri.so)
    ==12812==  Address 0x7f714f1cabb5 is not stack'd, malloc'd or (recently) free'd
    ==12812== 
    ==12812== 1375957 errors in context 123 of 124:
    ==12812== Invalid write of size 1
    ==12812==    at 0x4C250B5: memcpy (mc_replace_strmem.c:402)
    ==12812==    by 0x7654630: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x7656887: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x748A570: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x74405F7: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x74835BF: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x743EEC1: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x6A8DD61: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x7086BEE: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x709C0C7: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x709C34D: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x76087C3: __driCreateNewScreen_20050727 (in /usr/lib/dri/fglrx_dri.so)
    ==12812==  Address 0x7f714f1cabb6 is not stack'd, malloc'd or (recently) free'd
    ==12812== 
    ==12812== 1375957 errors in context 124 of 124:
    ==12812== Invalid write of size 1
    ==12812==    at 0x4C250AF: memcpy (mc_replace_strmem.c:402)
    ==12812==    by 0x7654630: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x7656887: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x748A570: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x74405F7: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x74835BF: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x743EEC1: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x6A8DD61: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x7086BEE: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x709C0C7: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x709C34D: (within /usr/lib/dri/fglrx_dri.so)
    ==12812==    by 0x76087C3: __driCreateNewScreen_20050727 (in /usr/lib/dri/fglrx_dri.so)
    ==12812==  Address 0x7f714f1cabb7 is not stack'd, malloc'd or (recently) free'd
    I saved the complete output of valgrind, but it is too long to post here. Happy to provide it if necessary. BTW: on nvidia hardware this gives 0 errors. Not sure what it does on previous driver releaeses.

  • #2
    Hve you upgraded the kernel to 2.6.26 or higher ? I'm not sure, but those errors might be resulting from a PAT-related conflict. If you are running 2.6.24 then ignore this, but if you are running a kernel with PAT enabled try the "nopat" boot option.

    Just a guess but...

    Comment


    • #3
      Originally posted by bridgman View Post
      Hve you upgraded the kernel to 2.6.26 or higher ? I'm not sure, but those errors might be resulting from a PAT-related conflict. If you are running 2.6.24 then ignore this, but if you are running a kernel with PAT enabled try the "nopat" boot option.

      Just a guess but...
      I'm running 2.6.24-19, so as I understand that can't be the problem?
      Also tried it on another computer, the details:

      Ubuntu 8.04.1
      Code:
      heiko@thor:~$ uname -a
      Linux thor.harders 2.6.24-19-generic #1 SMP Wed Aug 20 17:53:40 UTC 2008 x86_64 GNU/Linux
      AMD Radeon 3450 on an Asus motherboard with 780G chipset (but as hybrid crossfire doesn't work yet, that is a bit irrelevant I guess).
      AMD Athlon X2 5200+, 2 Gb of memory (using 8.8 driver).

      Same problem as described before, valgrind on glxgears reporting millions of errors.

      Comment


      • #4
        I tried that too now.
        Code:
        ==21573== More than 10000000 total errors detected.  I'm not reporting any more.
        ==21573== Final error counts will be inaccurate.  Go fix your program!
        ==21573== Rerun with --error-limit=no to disable this cutoff.  Note
        ==21573== that errors may occur in your program without prior warning from
        ==21573== Valgrind, because errors are no longer being displayed.
        ==21573==
        XIO:  fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0"
              after 64 requests (64 known processed) with 0 events remaining.
        the "XIO ... " happens when i close glxgears.

        Yes most point to "/usr/lib/dri/fglrx_dri.so"

        i run: Debian lenny
        Fglrx 8.8
        kernel : 2.6.26-1-686
        # CONFIG_X86_PAT is not set

        Mobility Radeon x700 ( rv410 is it? )
        1 GB ram , intel pentium M

        If you want the whole valgrind output: http://pastebin.com/m2fa8de2
        Last edited by flami; 09-15-2008, 05:32 AM.

        Comment


        • #5
          I submitted the bug to the Unofficial ATI Linux Driver Bugzilla, bugnumber 1263, I also pointed to this topic in the bug report.

          Besides that I've put my complete output of valgrind also to pastebin:
          http://pastebin.com/m78912b4a

          Comment


          • #6
            The same problems also occur with driver 8.9 which I gave a quick try this morning (didn't try them on both computers yet).

            Comment


            • #7
              The problem was also existant in earlier fglrx releases (not sure if it was even before 8.42 though), I remind someone complaining about it...
              However, I'm not that familiar with how valgrind works, but I think it sometimes spits out errors in unclear situations (i.e. actually possible memleaks, which are irrelevant though as it would be just a special case that never occurs), and I think proprietary software (and it's optimizations) are full of those...

              Comment


              • #8
                Originally posted by NeoBrain View Post
                The problem was also existant in earlier fglrx releases (not sure if it was even before 8.42 though), I remind someone complaining about it...
                However, I'm not that familiar with how valgrind works, but I think it sometimes spits out errors in unclear situations (i.e. actually possible memleaks, which are irrelevant though as it would be just a special case that never occurs), and I think proprietary software (and it's optimizations) are full of those...
                You could of course be right, but I can assure you that it isn't fun debugging your own OpenGL programs with those millions of fglrx_dri.so errors coming through. I don't really care about glxgears, it is more a simple example for a program that everybody has installed. If the driver devs can assure that this is just a flaw of valgrind, caused by heavy driver optimization, that would be great. Although it still isn't fun when you try to debug your own program and see a lot of:

                Invalid write of size 4
                Conditional jump or move depends on uninitialised value(s)
                etc.

                Comment

                Working...
                X