Issue 114936 - UpdateCheck thread still running during exit
Summary: UpdateCheck thread still running during exit
Status: CONFIRMED
Alias: None
Product: General
Classification: Code
Component: code (show other issues)
Version: current
Hardware: All All
: P3 Trivial (vote)
Target Milestone: ---
Assignee: AOO issues mailing list
QA Contact:
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-10-05 12:30 UTC by Stephan Bergmann
Modified: 2013-01-29 21:44 UTC (History)
1 user (show)

See Also:
Issue Type: DEFECT
Latest Confirmation in: ---
Developer Difficulty: ---


Attachments

Note You need to log in before you can comment on or make changes to this issue.
Description Stephan Bergmann 2010-10-05 12:30:35 UTC
On OOO330_m9 based unxmacxi.pro seen a crash when terminating OOo (via Option-Q;
note that at least on Mac, it appears that OOo terminates not by returning from
Desktop::Main, but by calling exit from within Application::Execute).  Crashing
thread is

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00000008
[Switching to process 23295 thread 0x5403]
0x926c3935 in std::_Rb_tree_insert_and_rebalance ()
(gdb) where
#0  0x926c3935 in std::_Rb_tree_insert_and_rebalance ()
#1  0x16c9c95f in std::_Rb_tree<configmgr::RootAccess*, configmgr::RootAccess*,
std::_Identity<configmgr::RootAccess*>, std::less<configmgr::RootAccess*>,
std::allocator<configmgr::RootAccess*> >::_M_insert ()
#2  0x16c9cac4 in std::_Rb_tree<configmgr::RootAccess*, configmgr::RootAccess*,
std::_Identity<configmgr::RootAccess*>, std::less<configmgr::RootAccess*>,
std::allocator<configmgr::RootAccess*> >::insert_unique ()
#3  0x16c61fb9 in configmgr::Components::addRootAccess ()
#4  0x16c68a49 in configmgr::configuration_provider::(anonymous
namespace)::Service::createInstanceWithArguments ()
#5  0x1b898529 in (anonymous
namespace)::UpdateInformationProvider::getConfigurationItem ()
#6  0x1b89948c in (anonymous
namespace)::UpdateInformationProvider::UpdateInformationProvider ()
#7  0x1b89a9de in (anonymous
namespace)::UpdateInformationProvider::createInstance ()
#8  0x1b89ac88 in createInstance ()
#9  0x0061da08 in cppu::OSingleFactoryHelper::createInstanceEveryTime ()
#10 0x0061d252 in cppu::OSingleFactoryHelper::createInstanceWithContext ()
#11 0x0061d575 in cppu::OFactoryComponentHelper::createInstanceWithContext ()
#12 0x006205ce in cppu::ORegistryFactoryHelper::createInstanceEveryTime ()
#13 0x0061d252 in cppu::OSingleFactoryHelper::createInstanceWithContext ()
#14 0x0061d575 in cppu::OFactoryComponentHelper::createInstanceWithContext ()
#15 0x03cc23c1 in stoc_smgr::OServiceManager::createInstanceWithContext ()
#16 0x22e162be in com::sun::star::deployment::UpdateInformationProvider::create ()
#17 0x22db90c0 in dp_info::PackageInformationProvider::PackageInformationProvider ()
#18 0x22e166c9 in
boost::detail::function::function_obj_invoker3<comphelper::service_decl::detail::CreateFunc<comphelper::service_decl::detail::ServiceImpl<dp_info::PackageInformationProvider>,
comphelper::service_decl::detail::PostProcessDefault<comphelper::service_decl::detail::ServiceImpl<dp_info::PackageInformationProvider>
>, comphelper::service_decl::with_args<false> >,
com::sun::star::uno::Reference<com::sun::star::uno::XInterface>,
comphelper::service_decl::ServiceDecl const&,
com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&,
com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext>
const&>::invoke ()
#19 0x004a7fb5 in
boost::function3<com::sun::star::uno::Reference<com::sun::star::uno::XInterface>, comphelper::service_decl::ServiceDecl
const&, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&,
com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext>
const&>::operator() ()
#20 0x00443445 in
comphelper::service_decl::ServiceDecl::Factory::createInstanceWithContext ()
#21 0x006205ce in cppu::ORegistryFactoryHelper::createInstanceEveryTime ()
#22 0x0061d252 in cppu::OSingleFactoryHelper::createInstanceWithContext ()
#23 0x0061d575 in cppu::OFactoryComponentHelper::createInstanceWithContext ()
#24 0x03cc23c1 in stoc_smgr::OServiceManager::createInstanceWithContext ()
#25 0x00626001 in cppu::ComponentContext::lookupMap ()
#26 0x00626774 in cppu::ComponentContext::getValueByName ()
#27 0x16e211f5 in checkForPendingUpdates ()
#28 0x16e19e17 in UpdateCheck::initialize ()
#29 0x16e1b5bf in (anonymous namespace)::InitUpdateCheckJobThread::run ()
#30 0x16e3aebe in threadFunc ()
#31 0x001f5d3d in osl_thread_start_Impl ()
#32 0x92f96155 in _pthread_start ()
#33 0x92f96012 in thread_start ()

while main thread already deletes static configmgr::Components instance (without
holding configmgr::lock) from within exit:

[Switching to thread 1 (process 23295 local thread 0x9707)]
0x92f6ecc4 in szone_size ()
(gdb) where
#0  0x92f6ecc4 in szone_size ()
#1  0x92f6b347 in free ()
#2  0x16c9d520 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#3  0x16c704b3 in configmgr::LocalizedPropertyNode::~LocalizedPropertyNode ()
#4  0x16c9d520 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#5  0x16c9d4f6 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#6  0x16c9d4f6 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#7  0x16c70028 in configmgr::GroupNode::~GroupNode ()
#8  0x16c9d520 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#9  0x16c9d4f6 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#10 0x16c9d4f6 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#11 0x16c9d4f6 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#12 0x16c9d4f6 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#13 0x16c9d4f6 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#14 0x16c9d4f6 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#15 0x16c75c0e in configmgr::SetNode::~SetNode ()
#16 0x16c9d520 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#17 0x16c70028 in configmgr::GroupNode::~GroupNode ()
#18 0x16c9d520 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#19 0x16c9d4f6 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#20 0x16c9d4f6 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#21 0x16c9d4f6 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#22 0x16c9d4f6 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const,
rtl::Reference<configmgr::Node> >, std::_Select1st<std::pair<rtl::OUString
const, rtl::Reference<configmgr::Node> > >, std::less<rtl::OUString>,
std::allocator<std::pair<rtl::OUString const, rtl::Reference<configmgr::Node> >
> >::_M_erase ()
#23 0x16c628e5 in configmgr::Components::~Components ()
#24 0x92f8dd9c in __cxa_finalize ()
#25 0x92f8dc90 in exit ()
#26 0x9045132b in -[NSApplication terminate:] ()
#27 0x90371e8f in -[NSApplication sendAction:to:from:] ()
#28 0x90420b64 in -[NSMenu performActionForItemAtIndex:] ()
#29 0x90420869 in -[NSCarbonMenuImpl
performActionWithHighlightingForItemAtIndex:] ()
#30 0x904204ef in -[NSMenu performKeyEquivalent:] ()
#31 0x01d3a6fe in -[VCL_NSApplication sendEvent:] ()
#32 0x01d37573 in AquaSalInstance::Yield ()
#33 0x01aac93c in Application::Yield ()
#34 0x01aaca01 in Application::Execute ()
#35 0x000d04fa in desktop::Desktop::Main ()
#36 0x01ab28c3 in ImplSVMain ()
#37 0x01d36b1c in AquaSalInstance::handleAppDefinedEvent ()
#38 0x01d3a49e in -[VCL_NSApplication sendEvent:] ()
#39 0x90298fe7 in -[NSApplication run] ()
#40 0x902661d8 in NSApplicationMain ()
#41 0x01d37900 in ImplSVMainHook ()
#42 0x01ab294f in SVMain ()
#43 0x000ee00e in soffice_main ()
#44 0x00001f0e in main ()
Comment 1 dirk.voelzke 2010-10-06 09:07:23 UTC
Looks like an follow up problem of calling application::Exit