[Bug 16280] New: IDirect3DDevice9::reset() is flawed.

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Nov 30 06:30:29 CST 2008


http://bugs.winehq.org/show_bug.cgi?id=16280

           Summary: IDirect3DDevice9::reset() is flawed.
           Product: Wine
           Version: 1.1.9
          Platform: All
        OS/Version: other
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: directx-d3d
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: jerome.gardou at laposte.net


I found this bug when tracking down a crash in Supreme commander. This game
calls device->reset(), and crashes.

Reading the code there (taken from the line 316 of d3d9/device.c) :

if(pool == WINED3DPOOL_DEFAULT) {
    IWineD3DResource_GetParent(resource, &parent);
    if(IUnknown_Release(parent) == 0) {
        TRACE("Parent %p is an implicit resource with ref 0\n", parent);
    } else {
        WARN("Resource %p(wineD3D %p) with pool D3DPOOL_DEFAULT blocks the
Reset call\n", parent, resource);
        ret = S_FALSE;
        *resources_ok = FALSE;
    }
}

the assumption is made that the ref of parent is 0, which seems correct, but
calling getparent calls IUnknown_AddRef, on an already freed object => crash !


-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list