Issue 126629

Summary: aoo suddenly crashes on win7 - incorrect call of "dwmapi.dll" in "salframe.cxx"
Product: General Reporter: Oliver Brinzing <oliver.brinzing>
Component: codeAssignee: AOO issues mailing list <issues>
Status: CONFIRMED --- QA Contact:
Severity: Normal    
Priority: P5 (lowest) CC: oliver.brinzing
Version: 4.0.1Keywords: crash, data_loss
Target Milestone: ---   
Hardware: PC   
OS: Windows 7   
Issue Type: DEFECT Latest Confirmation in: 4.1.2
Developer Difficulty: Simple
Attachments:
Description Flags
correct call
none
incorrect call none

Description Oliver Brinzing 2015-11-05 11:06:25 UTC
Created attachment 85107 [details]
correct call

first noticed with aoo 4.0.1

\main\vcl\win\source\window\salframe.cxx:

static BOOL ImplDwmIsCompositionEnabled()
{
    SalData* pSalData = GetSalData();
    if( ! pSalData->mpDwmIsCompositionEnabled )
    {
        pSalData->maDwmLib = osl_loadAsciiModule( "Dwmapi.dll", SAL_LOADMODULE_DEFAULT );
        if( pSalData->maDwmLib )
            pSalData->mpDwmIsCompositionEnabled = 
			(DwmIsCompositionEnabled_ptr)osl_getAsciiFunctionSymbol( pSalData->maDwmLib, "DwmIsCompositionEnabled" );
        if( ! pSalData->mpDwmIsCompositionEnabled ) // something failed
            pSalData->mpDwmIsCompositionEnabled = backwardCompatibleDwmIsCompositionEnabled;
    }
    BOOL aResult = FALSE;
    HRESULT nError = pSalData->mpDwmIsCompositionEnabled( &aResult );
    return nError == S_OK && aResult;
}

"pSalData->mpDwmIsCompositionEnabled" is initialized only the first time
ImplDwmIsCompositionEnabled() is called.
but ImplDwmIsCompositionEnabled() is called periodically (e.g. window events
from other programs).

for whatever reason sometimes the "pSalData->mpDwmIsCompositionEnabled" pointer gets 
corrupted, and a call causes aoo to crash.

attached "ImplDwmIsCompositionEnabled_1.png" shows a correct call while 
ImplDwmIsCompositionEnabled_2.png shows a corrupted one.

updating "dwmapi.dll" with "KB3078667" https://support.microsoft.com/en-us/kb/3078667
will not solve the problem.

btw: if aoo runs with xp compatibility settings, it will not crash.
Comment 1 Oliver Brinzing 2015-11-05 11:06:58 UTC
Created attachment 85108 [details]
incorrect call
Comment 2 Oliver Brinzing 2015-11-05 11:07:58 UTC
adding keywords