Results 1 to 8 of 8

Thread: valgrind reporting over 10 million errors on glxgears

  1. #1
    Join Date
    Apr 2008
    Posts
    127

    Default 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. #2
    Join Date
    Oct 2007
    Location
    Toronto-ish
    Posts
    7,411

    Default

    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...

  3. #3
    Join Date
    Apr 2008
    Posts
    127

    Default

    Quote 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.

  4. #4
    Join Date
    Jan 2008
    Posts
    17

    Default

    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 at 05:32 AM.

  5. #5
    Join Date
    Apr 2008
    Posts
    127

    Default

    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

  6. #6
    Join Date
    Apr 2008
    Posts
    127

    Default

    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).

  7. #7
    Join Date
    Dec 2007
    Location
    Germany
    Posts
    365

    Default

    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...

  8. #8
    Join Date
    Apr 2008
    Posts
    127

    Default

    Quote 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.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •