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.

Reply via email to