https://bugs.documentfoundation.org/show_bug.cgi?id=148851
Michael Weghorn <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Ever confirmed|0 |1 CC| |[email protected] Assignee|[email protected] |[email protected] |desktop.org | --- Comment #1 from Michael Weghorn <[email protected]> --- In a memory profile created with perfetto's "heap_profile" tool, the xdictionary ctor clearly showed up as allocating memory that was not freed, easily more than 1GB after a while. For the Chinese sample doc, it get's called when painting a tile with this backtrace: > i18npool::xdictionary::xdictionary(char const*) xdictionary.cxx:69 > std::__ndk1::__unique_if<i18npool::xdictionary>::__unique_single > std::__ndk1::make_unique<i18npool::xdictionary, char const (&) [3]>(char > const (&) [3]) memory:3132 > i18npool::BreakIterator_zh::BreakIterator_zh() breakiterator_cjk.cxx:147 > ::i18npool_BreakIterator_zh_get_implementation(com::sun::star::uno::XComponentContext > *, const com::sun::star::uno::Sequence<com::sun::star::uno::Any> &) > registerservices.cxx:242 > decltype(std::__ndk1::forward<com::sun::star::uno::XInterface* > (*&)(com::sun::star::uno::XComponentContext*, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> > const&)>(fp)(std::__ndk1::forward<com::sun::star::uno::XComponentContext*>(fp0), > std::__ndk1::forward<com::sun::star::uno::Sequence<com::sun::star::uno::Any> > const&>(fp0))) std::__ndk1::__invoke<com::sun::star::uno::XInterface* > (*&)(com::sun::star::uno::XComponentContext*, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&), > com::sun::star::uno::XComponentContext*, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> > const&>(com::sun::star::uno::XInterface* > (*&)(com::sun::star::uno::XComponentContext*, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&), > com::sun::star::uno::XComponentContext*&&, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) > type_traits:4353 > com::sun::star::uno::XInterface* > std::__ndk1::__invoke_void_return_wrapper<com::sun::star::uno::XInterface*>::__call<com::sun::star::uno::XInterface* > (*&)(com::sun::star::uno::XComponentContext*, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&), > com::sun::star::uno::XComponentContext*, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> > const&>(com::sun::star::uno::XInterface* > (*&)(com::sun::star::uno::XComponentContext*, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&), > com::sun::star::uno::XComponentContext*&&, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) > __functional_base:318 > std::__ndk1::__function::__alloc_func<com::sun::star::uno::XInterface* > (*)(com::sun::star::uno::XComponentContext*, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&), > std::__ndk1::allocator<com::sun::star::uno::XInterface* > (*)(com::sun::star::uno::XComponentContext*, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&)>, > com::sun::star::uno::XInterface* (com::sun::star::uno::XComponentContext*, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> > const&)>::operator()(com::sun::star::uno::XComponentContext*&&, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) > functional:1527 > std::__ndk1::__function::__func<com::sun::star::uno::XInterface* > (*)(com::sun::star::uno::XComponentContext*, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&), > std::__ndk1::allocator<com::sun::star::uno::XInterface* > (*)(com::sun::star::uno::XComponentContext*, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&)>, > com::sun::star::uno::XInterface* (com::sun::star::uno::XComponentContext*, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> > const&)>::operator()(com::sun::star::uno::XComponentContext*&&, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) > functional:1651 > std::__ndk1::__function::__value_func<com::sun::star::uno::XInterface* > (com::sun::star::uno::XComponentContext*, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> > const&)>::operator()(com::sun::star::uno::XComponentContext*&&, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) const > functional:1799 > std::__ndk1::function<com::sun::star::uno::XInterface* > (com::sun::star::uno::XComponentContext*, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> > const&)>::operator()(com::sun::star::uno::XComponentContext*, > com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) const > functional:2347 > cppuhelper::ServiceManager::Data::Implementation::doCreateInstance(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> > const&) servicemanager.cxx:705 > cppuhelper::ServiceManager::Data::Implementation::createInstance(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> > const&, bool) servicemanager.cxx:674 > cppuhelper::ServiceManager::createInstanceWithContext(rtl::OUString const&, > com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> > const&) servicemanager.cxx:1005 > non-virtual thunk to > cppuhelper::ServiceManager::createInstanceWithContext(rtl::OUString const&, > com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> > const&) servicemanager.cxx:0 > i18npool::BreakIteratorImpl::createLocaleSpecificBreakIterator(rtl::OUString > const&) breakiteratorImpl.cxx:596 > i18npool::BreakIteratorImpl::getLocaleSpecificBreakIterator(com::sun::star::lang::Locale > const&) breakiteratorImpl.cxx:647 > i18npool::BreakIteratorImpl::nextWord(rtl::OUString const&, int, > com::sun::star::lang::Locale const&, short) breakiteratorImpl.cxx:147 > non-virtual thunk to i18npool::BreakIteratorImpl::nextWord(rtl::OUString > const&, int, com::sun::star::lang::Locale const&, short) > breakiteratorImpl.cxx:0 > ImpEditEngine::WordRight(EditPaM const&, short) impedit2.cxx:1504 > ImpEditEngine::DoOnlineSpelling(ContentNode*, bool, bool) impedit4.cxx:2307 > EditEngine::CompleteOnlineSpelling() editeng.cxx:2393 > sc::SpellCheckContext::ensureResults(short, int) spellcheckcontext.cxx:339 > sc::SpellCheckContext::isMisspelled(short, int) const > spellcheckcontext.cxx:219 > ScOutputData::LayoutStrings(bool, bool, ScAddress const&) output2.cxx:1633 > ScOutputData::DrawStrings(bool) output2.cxx:1470 > ScGridWindow::DrawContent(OutputDevice&, ScTableInfo const&, ScOutputData&, > bool) gridwin4.cxx:920 > ScGridWindow::PaintTile(VirtualDevice&, int, int, int, int, long, long) > gridwin4.cxx:1627 > ScModelObj::paintTile(VirtualDevice&, int, int, int, int, long, long) > docuno.cxx:559 > non-virtual thunk to ScModelObj::paintTile(VirtualDevice&, int, int, int, > int, long, long) docuno.cxx:0 > doc_paintTile(_LibreOfficeKitDocument*, unsigned char*, int, int, int, int, > int, int) init.cxx:3478 > ::Java_org_libreoffice_kit_Document_paintTileNative(JNIEnv *, jobject, > jobject, jint, jint, jint, jint, jint, jint) lokandroid.cxx:267 > art_quick_generic_jni_trampoline 0x000070fb4d19ffac > art_quick_invoke_stub 0x000070fb4d194c95 > art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, > art::JValue*, char const*) 0x000070fb4d21d67b > art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, > art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*) > 0x000070fb4d3a2c9d > bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, > art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) > 0x000070fb4d39dfc7 > void art::interpreter::ExecuteSwitchImplCpp<false, > false>(art::interpreter::SwitchImplContext*) 0x000070fb4d1abfe6 > ExecuteSwitchImplAsm 0x000070fb4d1a2056 > art::interpreter::ExecuteSwitch(art::Thread*, art::CodeItemDataAccessor > const&, art::ShadowFrame&, art::JValue, bool) 0x000070fb4d39c3ae > art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, > art::ShadowFrame&, art::JValue, bool, bool) 0x000070fb4d394421 > art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, > art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) > 0x000070fb4d39be9c > bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, > art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) > 0x000070fb4d39dfaf > void art::interpreter::ExecuteSwitchImplCpp<false, > false>(art::interpreter::SwitchImplContext*) 0x000070fb4d1acf96 > ExecuteSwitchImplAsm 0x000070fb4d1a2056 > art::interpreter::ExecuteSwitch(art::Thread*, art::CodeItemDataAccessor > const&, art::ShadowFrame&, art::JValue, bool) 0x000070fb4d39c3ae > art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, > art::ShadowFrame&, art::JValue, bool, bool) 0x000070fb4d394421 > art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, > art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) > 0x000070fb4d39be9c > bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, > art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) > 0x000070fb4d39dfaf > void art::interpreter::ExecuteSwitchImplCpp<false, > false>(art::interpreter::SwitchImplContext*) 0x000070fb4d1acf96 > ExecuteSwitchImplAsm 0x000070fb4d1a2056 > art::interpreter::ExecuteSwitch(art::Thread*, art::CodeItemDataAccessor > const&, art::ShadowFrame&, art::JValue, bool) 0x000070fb4d39c3ae > art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, > art::ShadowFrame&, art::JValue, bool, bool) 0x000070fb4d394421 > art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, > art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) > 0x000070fb4d39be9c > bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, > art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) > 0x000070fb4d39ca8e > void art::interpreter::ExecuteSwitchImplCpp<false, > false>(art::interpreter::SwitchImplContext*) 0x000070fb4d1ad330 > ExecuteSwitchImplAsm 0x000070fb4d1a2056 > art::interpreter::ExecuteSwitch(art::Thread*, art::CodeItemDataAccessor > const&, art::ShadowFrame&, art::JValue, bool) 0x000070fb4d39c3ae > art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, > art::ShadowFrame&, art::JValue, bool, bool) 0x000070fb4d394421 > art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, > art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) > 0x000070fb4d39be9c > bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, > art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) > 0x000070fb4d39ca8e > void art::interpreter::ExecuteSwitchImplCpp<false, > false>(art::interpreter::SwitchImplContext*) 0x000070fb4d1abe50 > ExecuteSwitchImplAsm 0x000070fb4d1a2056 > art::interpreter::ExecuteSwitch(art::Thread*, art::CodeItemDataAccessor > const&, art::ShadowFrame&, art::JValue, bool) 0x000070fb4d39c3ae > art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, > art::ShadowFrame&, art::JValue, bool, bool) 0x000070fb4d394421 > art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, > art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) > 0x000070fb4d39be9c > bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, > art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) > 0x000070fb4d39ca8e > void art::interpreter::ExecuteSwitchImplCpp<false, > false>(art::interpreter::SwitchImplContext*) 0x000070fb4d1abe50 > ExecuteSwitchImplAsm 0x000070fb4d1a2056 > art::interpreter::ExecuteSwitch(art::Thread*, art::CodeItemDataAccessor > const&, art::ShadowFrame&, art::JValue, bool) 0x000070fb4d39c3ae > art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, > art::ShadowFrame&, art::JValue, bool, bool) 0x000070fb4d394421 > artQuickToInterpreterBridge 0x000070fb4d758b40 > art_quick_to_interpreter_bridge 0x000070fb4d1a013d > art_quick_invoke_stub 0x000070fb4d194c95 > art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, > art::JValue*, char const*) 0x000070fb4d21d67b > art::JValue > art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable > const&, _jobject*, art::ArtMethod*, jvalue const*) 0x000070fb4d619e2f > art::Thread::CreateCallback(void*) 0x000070fb4d679420 > __pthread_start(void*) 0x000070fe0146e58b > __start_thread 0x000070fe01406d88 > -- You are receiving this mail because: You are the assignee for the bug.
