DWT+OpenGL crashing on Vista

Bill Baxter wbaxter at gmail.com
Sat Jan 17 19:51:18 PST 2009


On Sun, Jan 18, 2009 at 11:29 AM, Tim M <a at b.com> wrote:
> On Sat, 17 Jan 2009 12:51:46 +1300, Bill Baxter <wbaxter at gmail.com> wrote:
>
>> I'm going crazy here with a very odd bug.
>> My DWT+OpenGL Win32 app is crashing *only* on Vista and *only* when I
>> use client arrays for rendering
>> (i.e. glEnableClientState(GL_VERTEX_ARRAY), glVertexPointer(...),
>> glArrayElement(....)).
>>
>> The exact same code works fine on XP.
>> I have the Areo desktop compositing diabled on Vista.
>> The exact same code works fine if I replace the glArrayElement calls
>> with glVertex3fv calls.
>>
>> Another weird thing is that it doesn't crash right away,   The thing
>> I'm drawing will draw fine for 20 or so frames, then it crashes,
>> usually in swapBuffers or in the glClear.after swapBuffers.
>> Sometimes the same program will not crash at all.
>>
>> I tried modifying a DWT OpenGL snippet to use client arrays, but I
>> couldn't get it to crash.
>>
>> I tried disabling the GC too,  no change.
>> A web search didn't turn up anyone else with similar problems.
>>
>> I upgraded my video drivers (GeForce 8400M GS) with the latest from
>> NVIDIA, but still no change.
>>
>> I just have no idea what else could be going wrong or what else I could
>> try.
>>
>> --bb
>
> I am actually very interested if you find the problem/sollution. If it's not
> D related can you email what you find about it to me:
>
> t i m      <dot>    m a t t h e w s 7   (at) g m a i l [dot]  c o m

So far haven't been able to isolate it.
I updated another program that displays meshes with similar code and
it works fine.
So sounds like some kind of memory problem in my code to me too.  Or
possibly passing a bad pointer to GL somewhere.  I have glGetError's
sprinkled all over my code and get no errors from that.  But GL
doesn't know if you pass it a bad pointer.

I remember one problem I had long ago when I called glGetIntegerv for
something, thinking it returned 1 value when it actually returned two.
 Seems likely it could be something similar here.

--bb



More information about the Digitalmars-d mailing list