[ros-bugs] [Bug 2069] Infinite loop in SEH code
ReactOS.Bugzilla at www.reactos.org
ReactOS.Bugzilla at www.reactos.org
Thu Mar 1 23:44:34 CET 2007
http://www.reactos.org/bugzilla/show_bug.cgi?id=2069
------- Comment #6 from greatlord at reactos.com 2007-03-01 23:44 CET -------
I am using my own testcase and I using one more debug print I did put it in
framebase.h as kjk sugested. I getting like this.
(./subsystems/win32/win32k/ntddraw/ddraw.c:292) NtGdiDdQueryDirectDrawObject
_SEHCompilerSpecificHandler(A17197F8)
_SEHCompilerSpecificHandler(A17197F8)
_SEHCompilerSpecificHandler(A17197F8)
_SEHCompilerSpecificHandler(A17197F8)
it print this msg in a inifiloop.
I am using vmware own display drv + vmware workstaion + 0.3.1 branch and back
port trunk pseh changes. I am using my own testcase win32kdxtest.exe it is in
rosapps for trunk. also slight modifycations for NtGdiDdQueryDirectDrawObject
now we will see pseh going into a loop in SEHCompilerSpecificHandler.
here is NtGdiDdQueryDirectDrawObject the change I made are not in svn
BOOL STDCALL
NtGdiDdQueryDirectDrawObject(
HANDLE hDirectDrawLocal,
DD_HALINFO *pHalInfo,
DWORD *pCallBackFlags,
LPD3DNTHAL_CALLBACKS puD3dCallbacks,
LPD3DNTHAL_GLOBALDRIVERDATA puD3dDriverData,
PDD_D3DBUFCALLBACKS puD3dBufferCallbacks,
LPDDSURFACEDESC puD3dTextureFormats,
DWORD *puNumHeaps,
VIDEOMEMORY *puvmList,
DWORD *puNumFourCC,
DWORD *puFourCC
)
{
PDD_DIRECTDRAW pDirectDraw;
NTSTATUS Status = FALSE;
DPRINT1("NtGdiDdQueryDirectDrawObject\n");
if (hDirectDrawLocal == NULL)
{
return FALSE;
}
pDirectDraw = GDIOBJ_LockObj(DdHandleTable, hDirectDrawLocal,
GDI_OBJECT_TYPE_DIRECTDRAW);
if (!pDirectDraw)
{
return FALSE;
}
_SEH_TRY
{
// _SEH_EnableDebug();
_SEH_EnableTracing(_SEH_DO_TRACE_ALL);
ProbeForWrite(pHalInfo, sizeof(DD_HALINFO), 1);
RtlCopyMemory(pHalInfo,&pDirectDraw->Hal, sizeof(DD_HALINFO));
ProbeForWrite(pCallBackFlags, sizeof(DWORD)*3, 1);
pCallBackFlags[0]=pDirectDraw->DD.dwFlags;
pCallBackFlags[1]=pDirectDraw->Surf.dwFlags;
pCallBackFlags[2]=pDirectDraw->Pal.dwFlags;
//if (pDirectDraw->Hal.lpD3DHALCallbacks != NULL)
//{
DPRINT1("Found DirectDraw CallBack for 3D Hal\n");
ProbeForWrite(puD3dCallbacks, sizeof(D3DNTHAL_CALLBACKS), 1);
RtlCopyMemory( puD3dCallbacks, pDirectDraw->Hal.lpD3DHALCallbacks,
sizeof( D3DNTHAL_CALLBACKS ) );
//}
//if (pDirectDraw->Hal.lpD3DGlobalDriverData != NULL)
//{
DPRINT1("Found DirectDraw Global DriverData \n");
ProbeForWrite(puD3dDriverData, sizeof(D3DNTHAL_GLOBALDRIVERDATA),
1);
RtlCopyMemory( puD3dDriverData,
pDirectDraw->Hal.lpD3DGlobalDriverData,
sizeof(D3DNTHAL_GLOBALDRIVERDATA));
//}
//if (pDirectDraw->Hal.lpD3DBufCallbacks != NULL)
//{
DPRINT1("Found DirectDraw CallBack for 3D Hal Bufffer \n");
ProbeForWrite(puD3dBufferCallbacks, sizeof(DD_D3DBUFCALLBACKS),
1);
RtlCopyMemory( puD3dBufferCallbacks,
pDirectDraw->Hal.lpD3DBufCallbacks,
sizeof(DD_D3DBUFCALLBACKS));
//}
/* FIXME LPDDSURFACEDESC puD3dTextureFormats */
ProbeForWrite(puNumHeaps, sizeof(DWORD), 1);
*puNumHeaps = pDirectDraw->dwNumHeaps;
if (pDirectDraw->pvmList != NULL)
{
ProbeForWrite(puvmList, sizeof(VIDEOMEMORY) * pDirectDraw->dwNumHeaps,
1);
RtlCopyMemory( puvmList,
pDirectDraw->pvmList,
sizeof(VIDEOMEMORY) * pDirectDraw->dwNumHeaps);
}
ProbeForWrite(puNumFourCC, sizeof(DWORD), 1);
*puNumFourCC = pDirectDraw->dwNumFourCC;
if (pDirectDraw->pdwFourCC != NULL)
{
ProbeForWrite(puFourCC, sizeof(DWORD) * pDirectDraw->dwNumFourCC, 1);
RtlCopyMemory( puFourCC,
pDirectDraw->pdwFourCC,
sizeof(DWORD) * pDirectDraw->dwNumFourCC);
}
}
_SEH_HANDLE
{
Status = _SEH_GetExceptionCode();
}
_SEH_END;
GDIOBJ_UnlockObjByPtr(DdHandleTable, pDirectDraw);
if(!NT_SUCCESS(Status))
{
SetLastNtError(Status);
return FALSE;
}
return TRUE;
}
--
Configure bugmail: http://www.reactos.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug, or are watching the QA contact.
You are the assignee for the bug, or are watching the assignee.
More information about the Ros-bugs
mailing list