Hi Carsten,

Here is the crash report.

Get pdb_version from commanline: 20091103.1700
pdb_version: 20091103.1700 pdb_file:
./Sym_Sym2.0_beta1_20091103.1700_pdbfiles.zip
zzz
Stack frame position [0]
function name:     int __cdecl ImplGetMessage(struct tagMSG *,struct HWND__
*,unsigned int,unsigned int)
function name:     void __cdecl ImplSalYieldMutexAcquireWithWait(void)
function name:     long __cdecl ImplHandleSalObjKeyMsg(struct HWND__
*,unsigned int,unsigned int,long)
function name:     long __stdcall SalFrameWndProc(struct HWND__ *,unsigned
int,unsigned int,long,int &)
function name:     long __stdcall SalFrameWndProcW(struct HWND__ *,unsigned
int,unsigned int,long)
function name:     int __cdecl ImplGetMessage(struct tagMSG *,struct HWND__
*,unsigned int,unsigned int)
function name:     void __cdecl ImplSalYieldMutexAcquireWithWait(void)
function name:     long __cdecl ImplHandleSalObjKeyMsg(struct HWND__
*,unsigned int,unsigned int,long)
function name:     long __stdcall SalFrameWndProc(struct HWND__ *,unsigned
int,unsigned int,long,int &)
function name:     long __stdcall SalFrameWndProcW(struct HWND__ *,unsigned
int,unsigned int,long)
function name:     int __cdecl ImplGetMessage(struct tagMSG *,struct HWND__
*,unsigned int,unsigned int)
function name:     void __cdecl ImplSalYieldMutexAcquireWithWait(void)
function name:     long __cdecl ImplHandleSalObjKeyMsg(struct HWND__
*,unsigned int,unsigned int,long)
function name:     long __stdcall SalFrameWndProc(struct HWND__ *,unsigned
int,unsigned int,long,int &)
function name:     long __stdcall SalFrameWndProcW(struct HWND__ *,unsigned
int,unsigned int,long)
function name:     int __cdecl ImplGetMessage(struct tagMSG *,struct HWND__
*,unsigned int,unsigned int)
function name:     void __cdecl ImplSalYieldMutexAcquireWithWait(void)
function name:     public: virtual void __thiscall
WinSalInstance::Yield(bool,bool)
function name:     public: static void __cdecl Application::Yield(bool)
function name:     public: static void __cdecl Application::Execute(void)
function name:     unsigned char __cdecl ImplSVMain(void)
function name:     unsigned char __cdecl SVMain(void)
function name:     _soffice_main
function name:     _main
function name:     _winm...@16
Stack frame position [0]
function name:     _rtl_cache_free
Stack frame position [0]
Stack frame position [0]
function name:     public: int __thiscall
WinLmrInstance::RunPrefetching(void)
function name:     unsigned long __stdcall runWinLmrPrefetching(void *)
Stack frame position [0]
function name:     _osl_waitCondition
function name:     public: virtual enum vos::ICondition::TResult __cdecl
vos::OCondition::wait(struct TimeValue const *)
function name:     protected: virtual void __cdecl
vos::OTimerManager::run(void)
function name:     void __cdecl vos::threadWorkerFunction_impl(void *)
function name:     _osl_getGlobalMutex
Stack frame position [0]
function name:     _osl_acceptPipe
function name:     public: enum vos::OPipe::TPipeError __cdecl
vos::OPipe::accept(class vos::OStreamPipe &)
function name:     protected: virtual void __cdecl
desktop::OfficeIPCThread::run(void)
function name:     void __cdecl vos::threadWorkerFunction_impl(void *)
function name:     _osl_getGlobalMutex
Stack frame position [0]
function name:     _osl_acceptPipe
function name:     public: void __cdecl desktop::Acceptor::run(void)
function name:     _osl_getGlobalMutex
Stack frame position [0]
function name:     _osl_waitCondition
function name:     public: virtual void __cdecl
bridges_urp::OWriterThread::run(void)
function name:     _threadFunc
function name:     _osl_getGlobalMutex
Stack frame position [0]
function name:     _osl_receivePipe
function name:     _osl_readPipe
function name:     private: unsigned char __thiscall
bridges_urp::OReaderThread::readBlock(long *)
function name:     private: virtual void __cdecl
bridges_urp::OReaderThread::run(void)
function name:     _threadFunc
function name:     _osl_getGlobalMutex
Stack frame position [0]
function name:     private: unsigned int __thiscall
CMtaOleClipboard::run(void)
function name:     private: static unsigned int __stdcall
CMtaOleClipboard::oleThreadProc(void *)
Stack frame position [0]
function name:     private: static unsigned int __stdcall
CMtaOleClipboard::clipboardChangedNotifierThreadProc(void *)
Stack frame position [0]
function name:     unsigned long __stdcall DndTargetOleSTAFunc(void *)
Stack frame position [0]
Stack frame position [0]
function name:     public: virtual void __cdecl DropTarget::initialize(class
com::sun::star::uno::Sequence<class com::sun::star::uno::Any> const &)
function name:     public: virtual class
com::sun::star::uno::Reference<class com::sun::star::uno::XInterface>
__cdecl
cppu::OSingleFactoryHelper::createInstanceWithArgumentsAndContext(class
com::sun::star::uno::Sequence<class com::sun::star::uno::Any> const &,class
com::sun::star::uno::Reference<class com::sun::star::uno::XComponentContext>
const &)
function name:     public: virtual class
com::sun::star::uno::Reference<class com::sun::star::uno::XInterface>
__cdecl
cppu::OFactoryComponentHelper::createInstanceWithArgumentsAndContext(class
com::sun::star::uno::Sequence<class com::sun::star::uno::Any> const &,class
com::sun::star::uno::Reference<class com::sun::star::uno::XComponentContext>
const &)
function name:     public: virtual class
com::sun::star::uno::Reference<class com::sun::star::uno::XInterface>
__cdecl
cppu::ORegistryFactoryHelper::createInstanceWithArgumentsAndContext(class
com::sun::star::uno::Sequence<class com::sun::star::uno::Any> const &,class
com::sun::star::uno::Reference<class com::sun::star::uno::XComponentContext>
const &)
function name:     public: virtual class
com::sun::star::uno::Reference<class
com::sun::star::datatransfer::dnd::XDragSource> __thiscall
Window::GetDragSource(void)
function name:     public: virtual class
com::sun::star::uno::Reference<class
com::sun::star::datatransfer::dnd::XDropTarget> __thiscall
Window::GetDropTarget(void)
function name:     public: void __thiscall Window::SetParent(class Window *)
function name:     public: virtual bool __thiscall
sd::ViewShell::RelocateToParentWindow(class Window *)
function name:     public: bool __thiscall
sd::slidesorter::SlideSorter::RelocateToWindow(class Window *)
function name:     public: virtual unsigned char __cdecl
sd::framework::ViewShellWrapper::relocateToAnchor(class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResource> const &)
function name:     private: void __thiscall
sd::framework::BasicViewFactory::ReleaseView(class boost::shared_ptr<class
sd::framework::BasicViewFactory::ViewDescriptor> const &,bool)
function name:     public: virtual void __cdecl
sd::framework::BasicViewFactory::releaseResource(class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResource> const &)
function name:     private: void __thiscall
sd::framework::ConfigurationControllerResourceManager::DeactivateResource(class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId> const &,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XConfiguration> const &)
function name:     class boost::_bi::bind_t<void,class
boost::_mfi::mf2<void,class
sd::framework::ConfigurationControllerResourceManager,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId> const &,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XConfiguration> const &>,class
boost::_bi::list3<class boost::_bi::value<class
sd::framework::ConfigurationControllerResourceManager *>,class
boost::arg<1>,class boost::_bi::value<class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XConfiguration> > > > __cdecl
_STL::for_each<class _STL::reverse_iterator<class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId> const *,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId>,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId> const &,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId> const *,int>,class
boost::_bi::bind_t<void,class boost::_mfi::mf2<void,class
sd::framework::ConfigurationControllerResourceManager,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId> const &,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XConfiguration> const &>,class
boost::_bi::list3<class boost::_bi::value<class
sd::framework::ConfigurationControllerResourceManager *>,class
boost::arg<1>,class boost::_bi::value<class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XConfiguration> > > > >(class
_STL::reverse_iterator<class com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId> const *,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId>,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId> const &,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId> const *,int>,class
_STL::reverse_iterator<class com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId> const *,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId>,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId> const &,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId> const *,int>,class
boost::_bi::bind_t<void,class boost::_mfi::mf2<void,class
sd::framework::ConfigurationControllerResourceManager,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId> const &,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XConfiguration> const &>,class
boost::_bi::list3<class boost::_bi::value<class
sd::framework::ConfigurationControllerResourceManager *>,class
boost::arg<1>,class boost::_bi::value<class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XConfiguration> > > >)
function name:     public: void __thiscall
sd::framework::ConfigurationControllerResourceManager::DeactivateResources(class
_STL::vector<class com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId>,class _STL::allocator<class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XResourceId> > > const &,class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XConfiguration> const &)
function name:     private: void __thiscall
sd::framework::ConfigurationUpdater::UpdateCore(class
sd::framework::ConfigurationClassifier const &)
function name:     private: void __thiscall
sd::framework::ConfigurationUpdater::UpdateConfiguration(void)
function name:     public: void __thiscall
sd::framework::ConfigurationUpdater::RequestUpdate(class
com::sun::star::uno::Reference<class
com::sun::star::drawing::framework::XConfiguration> const &)
function name:     public: void __thiscall
sd::framework::ChangeRequestQueueProcessor::ProcessOneEvent(void)
function name:     public: void __thiscall
sd::framework::ChangeRequestQueueProcessor::ProcessUntilEmpty(void)
function name:     public: virtual void __cdecl
cppu::WeakComponentImplHelperBase::dispose(void)
function name:     private: void __thiscall
sd::DrawController::DisposeFrameworkControllers(void)
function name:     public: virtual void __cdecl
sd::DrawController::dispose(void)
function name:     public: virtual unsigned char __cdecl
framework::Frame::setComponent(class com::sun::star::uno::Reference<class
com::sun::star::awt::XWindow> const &,class
com::sun::star::uno::Reference<class com::sun::star::frame::XController>
const &)
function name:     public: virtual void __cdecl
framework::Frame::close(unsigned char)
function name:     public: unsigned char __thiscall SfxFrame::DoClose(void)
function name:     protected: virtual void __thiscall
SfxTopViewFrame::Notify(class SfxBroadcaster &,class SfxHint const &)
function name:     public: void __thiscall SfxBroadcaster::Broadcast(class
SfxHint const &)
function name:     public: virtual void __cdecl
SfxModelListener_Impl::notifyClosing(struct
com::sun::star::lang::EventObject const &)
function name:     public: virtual void __cdecl SfxBaseModel::close(unsigned
char)
function name:     public: class com::sun::star::uno::XInterface *
__thiscall bridges::cpp_uno::shared::UnoInterfaceProxy::getCppI(void)
function name:     public: class com::sun::star::uno::XInterface *
__thiscall bridges::cpp_uno::shared::UnoInterfaceProxy::getCppI(void)
function name:     void __cdecl
bridges::cpp_uno::shared::unoInterfaceProxyDispatch(struct _uno_Interface
*,struct _typelib_TypeDescription const *,void *,void * * const,struct
_uno_Any * *)
function name:     _thisDispatch
function name:     public: void __thiscall
bridges_urp::ServerMultiJob::execute(void)
function name:     void __cdecl _STL::_Construct<struct _STL::pair<class
rtl::ByteSequence const ,class _STL::list<class bridges_urp::ClientJob
*,class _STL::allocator<class bridges_urp::ClientJob *> > >,struct
_STL::pair<class rtl::ByteSequence const ,class _STL::list<class
bridges_urp::ClientJob *,class _STL::allocator<class bridges_urp::ClientJob
*> > > >(struct _STL::pair<class rtl::ByteSequence const ,class
_STL::list<class bridges_urp::ClientJob *,class _STL::allocator<class
bridges_urp::ClientJob *> > > *,struct _STL::pair<class rtl::ByteSequence
const ,class _STL::list<class bridges_urp::ClientJob *,class
_STL::allocator<class bridges_urp::ClientJob *> > > const &)
function name:     public: void * __thiscall
cppu_threadpool::JobQueue::enter(__int64,unsigned char)
function name:     public: void __thiscall
cppu_threadpool::ORequestThread::run(void)
function name:     _osl_getGlobalMutex
Stack frame position [0]
Stack frame position [0]
Stack frame position [0]





On Fri, Dec 4, 2009 at 12:24 AM, Carsten Driesner
<carsten.dries...@sun.com>wrote:

> Huaidong Qiu wrote:
>
>> Hi all,
>>
>> dtrans\source\win32\dnd\target.cxx
>>
>> I encountered a freeze problem recently, the office freezed in function
>> DropTarget::initialize
>>
>> void SAL_CALL DropTarget::initialize( const Sequence< Any >& aArguments )
>>        throw(Exception, RuntimeException)
>> {
>>
>> ..........
>>            m_hOleThread= CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)
>> DndTargetOleSTAFunc,
>>                                            &m_evtThreadReady, 0,
>> &m_threadIdTarget);
>>            WaitForSingleObject( m_evtThreadReady, INFINITE);
>>
>> ..........
>> }
>>
>> After several days investigation, I think the maybe the function
>> WaitForSingleObject is missused.
>>
>> If DropTarget::initialize called from a STA thread, the wait function
>> WaitForSingleObject() should not be used, because this wait will block the
>> message pumping of the thread, all COM calls will be blocked, this could
>> lead to a freeze.
>>
>> Quote from the API document of WaitForSingleObject:
>>
>> Use caution when calling the wait functions and code that directly or
>> indirectly creates windows. If a thread creates any windows, it must
>> process
>> messages. Message broadcasts are sent to all windows in the system. A
>> thread
>> that uses a wait function with no time-out interval may cause the system
>> to
>> become deadlocked. Two examples of code that indirectly creates windows
>> are
>> DDE and the *CoInitialize* function.
>> Therefore, if you have a thread that creates windows, use
>> *MsgWaitForMultipleObjects* or *MsgWaitForMultipleObjectsEx*,
>> rather than *WaitForSingleObject*.
>>
>> I think we should use CoWaitForMultipleHandles(), which is a wrapper for
>> MsgWaitForMultipleObjects(), after I switched to
>> CoWaitForMultipleHandles(),
>> app did not freeze in DropTarget::initialize anymore.
>>
>> And this issue also mentioned in this MSDN tech article The Rules of the
>> Component Object Model, in the section Apartment Threading Model
>>
>> http://msdn.microsoft.com/en-us/library/ms810016.aspx
>>
>>  Hi Huaidong,
>
> I think your findings look convincing. I am not the maintainer of the
> project and therefore cannot approve your changes. Do you know what thread
> calls DropTarget::initialize? Is this the main thread (the thread that
> normally executes the message loop?
>
> Regards,
> Carsten
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@gsl.openoffice.org
> For additional commands, e-mail: dev-h...@gsl.openoffice.org
>
>

Reply via email to