Apache OpenOffice (AOO) Bugzilla – Issue 72707
Ignore WM_*CHANGE messages in DeInitVCL()
Last modified: 2007-01-30 12:31:59 UTC
In SRC680m196 and probably before the WM_*CHANGE messages when closing the office can crash. Typically the message causing the problem is WM_FONTCHANGE when the temporarily installed fonts get uninstalled. vcl680mi.dll!_STL::__hashtable<_STL::pair<ImplFontSelectData const ,ImplFontEntry *>,ImplFontSelectData,ImplFontCache::IFSD_Hash,_STL::_Select1st<_STL::pair<ImplFontSelectData const ,ImplFontEntry *> >,ImplFontCache::IFSD_Equal,_STL::allocator<_STL::pair<ImplFontSelectData const ,ImplFontEntry *> > >::begin() + 0xb C++ vcl680mi.dll!_STL::hashtable<_STL::pair<ImplFontSelectData const ,ImplFontEntry *>,ImplFontSelectData,ImplFontCache::IFSD_Hash,_STL::_Select1st<_STL::pair<ImplFontSelectData const ,ImplFontEntry *> >,ImplFontCache::IFSD_Equal,_STL::allocator<_STL::pair<ImplFontSelectData const ,ImplFontEntry *> > >::begin() + 0x16 C++ vcl680mi.dll!_STL::hash_map<ImplFontSelectData,ImplFontEntry *,ImplFontCache::IFSD_Hash,ImplFontCache::IFSD_Equal,_STL::allocator<_STL::pair<ImplFontSelectData const ,ImplFontEntry *> > >::begin() + 0x10 C++ vcl680mi.dll!ImplFontCache::Invalidate() + 0x20 C++ vcl680mi.dll!OutputDevice::ImplUpdateAllFontData() + 0x99 C++ vcl680mi.dll!Window::ImplAsyncFocusHdl() + 0x460 C++ vcl680mi.dll!ImplWindowFrameProc() + 0x2d7 C++ vcl680mi.dll!SalFrame::CallCallback() + 0x16 C++ vcl680mi.dll!WinSalFrame::ShowFullScreen() + 0x2c7 C++ vcl680mi.dll!SalFrameWndProc() + 0x259 C++ vcl680mi.dll!SalFrameWndProcW() + 0x30 C++ user32.dll!GetDC() + 0x6d user32.dll!GetDC() + 0x14f user32.dll!DefWindowProcW() + 0x184 user32.dll!DefWindowProcW() + 0x1d0 ntdll.dll!KiUserCallbackDispatcher() + 0x13 vcl680mi.dll!ImplReleaseTempFonts() + 0xc4 C++ vcl680mi.dll!ImplFreeSalGDI() + 0x135 C++ vcl680mi.dll!DestroySalInstance() + 0x10 C++ vcl680mi.dll!DeInitVCL() + 0x28b C++ vcl680mi.dll!ImplSVMain() + 0xdc C++ vcl680mi.dll!SVMain() + 0x1c C++ soffice.bin!00404a90() soffice.bin!00404ad7() kernel32.dll!RegisterWaitForInputIdle() + 0x49
.
It seems that in your scenario a WIN32 window is still existing but the corresponding vcl frame is already deleted. How this could have happened is still unknown (e.g. by deleted salframe from another thread?).
Fixed in CWS vcl71.
@PL: please verify in CWS vcl71
verified in CWS vcl71
*** Issue 73519 has been marked as a duplicate of this issue. ***
pl->hdu: in SRC680m201 and OOF680m5 there is PostMessage. Please close this issue if you have decided that is what you wanted after all, else do a followup.
Yup, PostMessage + ignoring them during application shutdown is the right thing to do