Software Archive
Read-only legacy content
17061 Discussions

GMA 4500MHD memory corruption in SetPixelFormat(...)

trigve
Beginner
1,119 Views

Hi,

I'm using Intel GMA 4500MHD with 6.14.10.4990 drivers (with Asus F6A) with Visual studio 2005 SP1 and Windows XP SP3. When using basic opengl initialization code, VS informs me that memory heap was modified after it was freed:

[cpp]HEAP[enum.exe]: HEAP: Free Heap block 1baf28 modified at 1bb0a8 after it was freed
Windows has triggered a breakpoint in enum.exe.

This may be due to a corruption of the heap, and indicates a bug in enum.exe or any of the DLLs it has loaded.

The output window may have more diagnostic information[/cpp]

The error occurs when executing the DestroyWindow(hwnd); statement (see below). Also note that when I comment SetPixelFormat(hdc, format, &pfd); line, the memory corruption doesn't apply.

Here is the code:

[cpp]#ifndef _WIN32_WINNT
#	define _WIN32_WINNT 0x0501
#endif
#include 

LRESULT __stdcall dummyWndProc(HWND hwnd, UINT umsg, WPARAM wp, LPARAM lp)
{
    return DefWindowProc(hwnd, umsg, wp, lp);
}

int main(int argc, char* argv[])
{

	LPCSTR dummyText = "WglDummy";

	HINSTANCE hinst = GetModuleHandle( NULL );



	WNDCLASS dummyClass;

	memset(&dummyClass, 0, sizeof(WNDCLASS));

	dummyClass.style = CS_OWNDC;

	dummyClass.hInstance = hinst;

	dummyClass.lpfnWndProc = &dummyWndProc;

	dummyClass.lpszClassName = dummyText;

	RegisterClass(&dummyClass);



	HWND hwnd = CreateWindow(dummyText, dummyText,

		WS_CLIPCHILDREN | WS_CLIPSIBLINGS,

		0, 0, 32, 32, 0, 0, hinst, 0);

	// if a simple CreateWindow fails, then boy are we in trouble...

	if (hwnd == NULL)

		throw 1;

	// no chance of failure and no need to release thanks to CS_OWNDC

	HDC hdc = GetDC(hwnd); 

	// assign a simple OpenGL pixel format that everyone supports

	PIXELFORMATDESCRIPTOR pfd = { 

		sizeof(PIXELFORMATDESCRIPTOR),   // size of this pfd 

		1,                     // version number 

		PFD_DRAW_TO_WINDOW |   // support window 

		PFD_SUPPORT_OPENGL |   // support OpenGL 

		PFD_DOUBLEBUFFER,      // double buffered 

		PFD_TYPE_RGBA,         // RGBA type 

		24,                    // 24-bit color depth 

		0, 0, 0, 0, 0, 0,      // color bits ignored 

		0,                     // no alpha buffer 

		0,                     // shift bit ignored 

		0,                     // no accumulation buffer 

		0, 0, 0, 0,            // accum bits ignored 

		32,                    // 32-bit z-buffer 

		0,                     // no stencil buffer 

		0,                     // no auxiliary buffer 

		PFD_MAIN_PLANE,        // main layer 

		0,                     // reserved 

		0, 0, 0                // layer masks ignored 

	}; 

	// if these fail, wglCreateContext will also quietly fail

	int format;

	if ((format = ChoosePixelFormat(hdc, &pfd)) != 0)

		SetPixelFormat(hdc, format, &pfd);

	// clean up our dummy window and class

	DestroyWindow(hwnd);

	UnregisterClass(dummyText, hinst);

	return 0;

}[/cpp]

I have tried it debug and set the data breakpoint on the memory where the modifying occurs, and it looks like it is somewhere in the driver when calling SetPixelFormat(hdc, format, &pfd); and then in DestroyWindow(hwnd); (Here the memory is actually modified AFAICS; see the next call stack)

Here is call stack:

[cpp]        ig4icd32.dll!089db303()
 	[Frames below may be incorrect and/or missing, no symbols loaded for ig4icd32.dll]
 	ig4icd32.dll!089db3be()
 	ig4icd32.dll!089db405()
 	ig4icd32.dll!08b8dc89()
 	ig4icd32.dll!08b8ec3d()
 	ntdll.dll!_RtlQueryEnvironmentVariable_U@12()  + 0x6d bytes
 	opengl32.dll!___DrvSetPixelFormat@12()  + 0x23 bytes
	opengl32.dll!_wglSetPixelFormat@12()  + 0x12d bytes
 	gdi32.dll!_SetPixelFormat@12()  + 0x37 bytes[/cpp]

Here is the call stack BEFORE Visual Studio pop up memory corruption error:

[cpp]ig4icd32.dll!089db463()
 	[Frames below may be incorrect and/or missing, no symbols loaded for ig4icd32.dll]
 	ig4icd32.dll!08b8d68d()
 	ig4icd32.dll!08b90e79()
 	user32.dll!_DispatchHookA@16()  + 0x52 bytes
 	user32.dll!_fnHkINLPCWPSTRUCTA@20()  + 0x4f bytes
 	user32.dll!___fnDWORD@4()  + 0x24 bytes
 	ntdll.dll!_KiUserCallbackDispatcher@12()  + 0x13 bytes
 	user32.dll!_NtUserDestroyWindow@4()  + 0xc bytes[/cpp]

Here is memory dump (notice the 'ED' value at address 0x001BB0A8 that was modified after this block was freed):

0x001BB0A8 ed fe ee fe ee fe ee fe ee fe ee fe ee fe ee fe ee fe

Anyone know where the problem could be?

thanks

Trigve

/edit: Added more info

0 Kudos
1 Solution
Eric_P_Intel
Employee
1,119 Views
Trigve,

What isthe latest driver version you have tested? Memory-related OpenGL bugs have been identified recently, and an upcoming fix may solve the issue you are seeing. Look for next week's driver update and try it. Also, if you could post a really simple Visual Studio project we can compile and test, it may help.

- Eric

View solution in original post

0 Kudos
13 Replies
trigve
Beginner
1,119 Views

I'm watching this thread everyday with hope that someone could answer my question but without success yet. This bug is showstopprt for me because I can't code anything.

Please if someone could give me some contacts to someone responsible I would be VERY greatfull.

Thanks for reading

Trigve

0 Kudos
Eric_P_Intel
Employee
1,120 Views
Trigve,

What isthe latest driver version you have tested? Memory-related OpenGL bugs have been identified recently, and an upcoming fix may solve the issue you are seeing. Look for next week's driver update and try it. Also, if you could post a really simple Visual Studio project we can compile and test, it may help.

- Eric

0 Kudos
trigve
Beginner
1,119 Views
Trigve,

What isthe latest driver version you have tested? Memory-related OpenGL bugs have been identified recently, and an upcoming fix may solve the issue you are seeing. Look for next week's driver update and try it. Also, if you could post a really simple Visual Studio project we can compile and test, it may help.

- Eric

Hi Eric,

thanks for reply. The latest drivers I've tried were 6.14.10.4990. As of mid october I've installed vista bussiness (with a some sort of malevolence) because I wasn't able to code any OGL stuff. So I can't try the new drivers. sorry.

But I'm sending you the visual studio files. Hope it helps

thanks

Trigve

0 Kudos
trigve
Beginner
1,119 Views

So I've found that the currently most recent drivers for vista (from 3. november) are causing the same memory corruption. Here is info report from intel utility:

Report Date: 11/16/2008
Report Time[hr:mm:ss]: 18:41:21
Driver Version: 7.15.10.1591
Operating System: Windows Vista Business* , Service Pack 1 (6.0.6001)
Default Language: Slovak
DirectX* Version: 10.0
Physical Memory: 3036 MB
Minimum Graphics Memory: 32 MB
Maximum Graphics Memory: 1294 MB
Graphics Memory in Use: 103 MB
Processor: x86 family 6 Model 23 Stepping 6
Processor Speed: 2261 MHZ
Vendor ID: 8086
Device ID: 2A42
Device Revision: 07

The drivers from notebook's driver CD are working good (version: 7.15.10.1508)

Trigve

0 Kudos
trigve
Beginner
1,119 Views
So I've updated once more to the most recent drivers and it is still the same behaviour (memory corruption).

Report Date: 03/29/2009
Report Time[hr:mm:ss]: 13:34:57
Driver Version: 7.15.10.1659
Operating System: Windows Vista Business* , Service Pack 1 (6.0.6001)
Default Language: Slovak
DirectX* Version: 10.0
Physical Memory: 3036 MB
Minimum Graphics Memory: 32 MB
Maximum Graphics Memory: 1294 MB
Graphics Memory in Use: 103 MB
Processor: x86 family 6 Model 23 Stepping 6
Processor Speed: 2261 MHZ
Vendor ID: 8086
Device ID: 2A42
Device Revision: 07


* Accelerator Information *

Accelerator in Use: Mobile Intel 4 Series Express Chipset Family
Video BIOS: 1654.0
Current Graphics Mode: 1680 podla 1050 True Color (60 Hz)

I want to ask once more where can I report this kind of errors without ignoring it?

thanks Trigve
0 Kudos
Chuck_De_Sylva
Beginner
1,119 Views
Quoting - trigve
So I've updated once more to the most recent drivers and it is still the same behaviour (memory corruption).

Report Date: 03/29/2009
Report Time[hr:mm:ss]: 13:34:57
Driver Version: 7.15.10.1659
Operating System: Windows Vista Business* , Service Pack 1 (6.0.6001)
Default Language: Slovak
DirectX* Version: 10.0
Physical Memory: 3036 MB
Minimum Graphics Memory: 32 MB
Maximum Graphics Memory: 1294 MB
Graphics Memory in Use: 103 MB
Processor: x86 family 6 Model 23 Stepping 6
Processor Speed: 2261 MHZ
Vendor ID: 8086
Device ID: 2A42
Device Revision: 07


* Accelerator Information *

Accelerator in Use: Mobile Intel 4 Series Express Chipset Family
Video BIOS: 1654.0
Current Graphics Mode: 1680 podla 1050 True Color (60 Hz)

I want to ask once more where can I report this kind of errors without ignoring it?

thanks Trigve

I'll uplevel this as a bug with your test case to our driver bug. Stay tuned.
0 Kudos
trigve
Beginner
1,119 Views

I'll uplevel this as a bug with your test case to our driver bug. Stay tuned.

Thanks for reply,
I'm glad to hear this. I'll be happy to help with it if needed.

thanks

Trigve
0 Kudos
trigve
Beginner
1,119 Views
Hi,
I've updated to the newest drivers (7.15.10.1688) and now it looks like that this bug has been fixed. But the one has appeared so I start the new thread for the new one.

Thanks for all and everyone that helped

Trigve

edit: I've tried to revert to old drivers to see if it was really bad driver that cause the bug. Unfortunately I'm bit confused now. Drivers that was exhibiting the bug now work ok. What I think now is that there was some bug in system and that some update that I've previously installed has fixed it. I also think that drivers has some code that triggers the bug or there was also some bug in drivers that was only tied to particular system configuration.
0 Kudos
cezardamian
Beginner
1,119 Views
Quoting - trigve
Hi,
I've updated to the newest drivers (7.15.10.1688) and now it looks like that this bug has been fixed. But the one has appeared so I start the new thread for the new one.

Thanks for all and everyone that helped

Trigve

edit: I've tried to revert to old drivers to see if it was really bad driver that cause the bug. Unfortunately I'm bit confused now. Drivers that was exhibiting the bug now work ok. What I think now is that there was some bug in system and that some update that I've previously installed has fixed it. I also think that drivers has some code that triggers the bug or there was also some bug in drivers that was only tied to particular system configuration.

Hi,

I also have this problem, with an IBM X61 and a GM965 Express Family chipset.
Do you have any new drivers solving the issue for this model ?




0 Kudos
trigve
Beginner
1,119 Views
Quoting - cezardamian

Hi,

I also have this problem, with an IBM X61 and a GM965 Express Family chipset.
Do you have any new drivers solving the issue for this model ?





Hi,
only driver that works for me is the one shipped on driver DVD. But as I wrote this bug "suddenly disappeared" (in fact it was probably "moved" to some other code, seehttp://software.intel.com/en-us/forums/showthread.php?t=66670) after some Vista update.

Trigve
0 Kudos
levicki
Valued Contributor I
1,119 Views
Unrelated to the bug -- you might want to read this:
http://blogs.msdn.com/oldnewthing/archive/2006/06/01/612970.aspx

Using CS_OWNDC seems not to be a good idea.

0 Kudos
depnaker
Beginner
1,119 Views
Quoting - Igor Levicki
Unrelated to the bug -- you might want to read this:
http://blogs.msdn.com/oldnewthing/archive/2006/06/01/612970.aspx

Using CS_OWNDC seems not to be a good idea.


It's not a bug. It's just error coding.
0 Kudos
avensue
Beginner
1,119 Views
Quoting - depnaker

It's not a bug. It's just error coding.

I also have this problem
0 Kudos
Reply