[Bf-committers] I found a GHOSTBuster ;)

Jürgen Herrmann shadowrom at me.com
Sun Apr 28 20:15:38 CEST 2013

Hi Campbell, 

it was quite hard to find because there were multiple exceptions on different points in the message loop.
One was here:

void GHOST_WindowWin32::bringTabletContextToFront()
->>	if (m_wintab) {

This had tob e fixed by making m_wintab static.

Another one was here:
LRESULT WINAPI GHOST_SystemWin32::s_wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)

			if (LOWORD(lParam) == HTCLIENT) {
					// Load the current cursor
-->					window->loadCursor(window->getCursorVisibility(), window->getCursorShape());

And so on

This was the point where i took a closer look at the window* at the beginning of s_wndProc

It was:
GHOST_WindowWin32 *window = (GHOST_WindowWin32 *)::GetWindowLong(hwnd, GWL_USERDATA);

I changed it to:
GHOST_WindowWin32 *window = (GHOST_WindowWin32 *)::GetWindowLongPtr(hwnd, GWL_USERDATA);

I'll provide a patch on patchtracker for this ;)

- Jürgen
-----Ursprüngliche Nachricht-----
Von: bf-committers-bounces at blender.org [mailto:bf-committers-bounces at blender.org] Im Auftrag von Campbell Barton
Gesendet: Sonntag, 28. April 2013 20:01
An: bf-blender developers
Betreff: Re: [Bf-committers] I found a GHOSTBuster ;)

On Mon, Apr 29, 2013 at 3:46 AM, Jürgen Herrmann <shadowrom at me.com> wrote:
> I finally found the crashing factor in GHOST Win32 on Win8.
> It was a nasty GetWindowLong that should have been a GetWindowLongPtr.
> I tested the change in MSVC 2008, 2010 and 2012. Everything seems to work fine and smooth.
> I'll upload 3 test builds and the patch to my site. This could take a while due to a slow Internet connection.
> Now I'll focus on fixing OpenCOLLADA and libmv compilation. Maybe I'll find time to build cuda binaries with 2012 too, this guide looks promising:
> http://blog.norture.com/2012/10/gpu-parallel-programming-in-vs2012-wit
> h-nvidia-cuda/
> If someone wants to try: http://shadowrom.de
> Jürgen

Good to hear you found the problem,
Sounds like this fix should be applied to trunk too?, could you make a patch available?

Out of curiosity what made this problem so hard to track down?

- Campbell
Bf-committers mailing list
Bf-committers at blender.org

More information about the Bf-committers mailing list