2 Replies Latest reply on Jul 6, 2010 4:24 PM by SillyRob

    [CRASH] Reproducible OpenGL driver crash (Catalyst 10.4, HD 4850, XP64)

    SillyRob
      Crash during DrvValidateVersion() under special conditions

      Hallo.

      First of all: I am sorry if this is not the place to report bugs! I remember some place else I used to report bugs, but it's been a few years since then and I couldn't find any other place.

      I've spent a few hours debugging to resolve a crash in a game I am working on.

      System: XP64, regular Radeon HD 4850 / 512 MiB, 32bit application, Catalyst 10.2 and 10.4 were the only two versions I tested and both are affected.

      The crash happens in atioglxx.dll and is currently 100% reproducible on my side. Tests on a Netbook with an Intel GMA950 (OpenGL 1.4, no MSAA) did not display this behaviour, so at this time it doesn't appear to be a bug in the game. (See update below.)

      I was able to narrow it down to pretty much this (not a literal step-by-step):

      • Create OpenGL 3.2 compatibility context, only fixed function is used in the relevant parts, although shaders are used elsewhere
      • (A) Set point size distance attenuation (during initialization) to anything but (1.0f, 0.0f, 0.0f) via glPointParameterfv(GL_POINT_DISTANCE_ATTENUATION_ARB, #);
      • Set a perspective projection
      • (B) Enable Multisampling (set to 8x, no other AA enabled)
      • (C) Draw a plain (just color) line with a thickness of more than two pixels via glBegin/End()

      The game crashes and there's a lot of ??s in the call stack shown by gdb (the game is being compiled with gcc 3.5.x), but there's five calls to atioglxx!DrvValidateVersion() among them. The game crashes without any warnings, just shuts down with some obscure error code (large negative number).

      The crash occurs after the line draw calls are issued.

      Now, it doesn't crash at all when one of the steps marked with A, B or C is changed:

      A: Set the distance attenuation to exactly (1.0f, 0.0f, 0.0f)

      B: Disable Multisampling

      C: Draw the line with a thickness of at most 2 pixels

      I hope this helps improving the OpenGL driver a tiny little bit - even though this has to be a rather rare issue, I must admit.

      Have a nice day.

      Regards,

      Rob

       

      Update: Tests on a Geforce GTX 260 confirm that this must be a driver bug, because there are no issues there, at all. I will do some testing on some other Radeon cards as soon as possible.

        • [CRASH] Reproducible OpenGL driver crash (Catalyst 10.4, HD 4850, XP64)
          SillyRob

          Just a small update:

          Today I'll test with some other, older Radeon cards. Recent tests with 10.5 on a 4350 always crashed hard (VC++ runtime error, nothing meaningful in the logs) on a user system without a debugger, even though the same program ran with an 9.x version of the driver. After having tested different builds of the program I had prepared, I'm sure that's not the (exact) same problem.

          I will also do tests with 10.5 on a development system in a few moments.

          Regards,

          Rob

           

          UPDATE: I didn't get around to make an example, yet. There's been just too much going on recently. Hopefully, I'll manage to get something together once everything is going as usual.