Why typing in Writer instantiates the JVM on Mac OS X

Stephan Bergmann sbergman at redhat.com
Thu Oct 24 19:02:07 CEST 2013


With problems popping up for users after upgrading to Mac OS X Mavericks 
(which replaces a previously installed Java with a "download and 
install" stub), I discovered the odd fact that indeed at least since LO 
4.1.2 (but probably even earlier already, just had no time to verify), 
and on Mac OS X only, thanks to the bundled WikiPublisher extension we 
instantiate a JVM as soon as you start "soffice --writer" and type "x". 
  Debugging it on a recent master build:

> #0  stoc_javavm::JavaVirtualMachine::getJavaVM (this=0x1ed5e484, rProcessId=@0xbffb9568) at core/stoc/source/javavm/javavm.cxx:685
> #1  0x1eee815b in non-virtual thunk to stoc_javavm::JavaVirtualMachine::getJavaVM(com::sun::star::uno::Sequence<signed char> const&) (this=0x1ed5e4b4, rProcessId=@0xbffb9568) at core/stoc/source/javavm/javavm.cxx:929
> #2  0x1eeaf9d8 in stoc_javaloader::JavaComponentLoader::getJavaLoader (this=0x1edd173c) at core/stoc/source/javaloader/javaloader.cxx:162
> #3  0x1eeb1c52 in stoc_javaloader::JavaComponentLoader::activate (this=0x1edd173c, rImplName=@0x7a924090, blabla=@0xbffb97a0, rLibName=@0xbffb9910, xKey=@0xbffb9798) at core/stoc/source/javaloader/javaloader.cxx:357
> #4  0x1eeb1e4d in non-virtual thunk to stoc_javaloader::JavaComponentLoader::activate(rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::registry::XRegistryKey> const&) (this=0x1edd1750, rImplName=@0x7a924090, blabla=@0xbffb97a0, rLibName=@0xbffb9910, xKey=@0xbffb9798) at core/stoc/source/javaloader/javaloader.cxx:363
> #5  0x00a7a8f6 in cppuhelper::ServiceManager::loadImplementation (this=0x857b0c8, context=@0x857b114, info=@0x7a924070, factory1=0xbffb9a00, factory2=0xbffb99f8) at core/cppuhelper/source/servicemanager.cxx:678
> #6  0x00a7c628 in cppuhelper::ServiceManager::findServiceImplementation (this=0x857b0c8, context=@0x857b114, specifier=@0xbffb9de0) at core/cppuhelper/source/servicemanager.cxx:1667
> #7  0x00a7bbeb in cppuhelper::ServiceManager::createInstanceWithContext (this=0x857b0c8, aServiceSpecifier=@0xbffb9de0, Context=@0x857b114) at core/cppuhelper/source/servicemanager.cxx:791
> #8  0x00a7b582 in cppuhelper::ServiceManager::createInstance (this=0x857b0c8, aServiceSpecifier=@0xbffb9de0) at core/cppuhelper/source/servicemanager.cxx:745
> #9  0x00a7b5cb in non-virtual thunk to cppuhelper::ServiceManager::createInstance(rtl::OUString const&) (this=0x857b0f4, aServiceSpecifier=@0xbffb9de0) at core/cppuhelper/source/servicemanager.cxx:746
> #10 0x0df1a927 in framework::DispatchProvider::implts_searchProtocolHandler (this=0x12784ce0, aURL=@0xbffba788) at core/framework/source/dispatch/dispatchprovider.cxx:502
> #11 0x0df19338 in framework::DispatchProvider::implts_queryFrameDispatch (this=0x12784ce0, xFrame=@0xbffba220, aURL=@0xbffba788, sTargetFrameName=@0xbffba700, nSearchFlags=0) at core/framework/source/dispatch/dispatchprovider.cxx:407
> #12 0x0df16ee8 in framework::DispatchProvider::queryDispatch (this=0x12784ce0, aURL=@0xbffba788, sTargetFrameName=@0xbffba700, nSearchFlags=0) at core/framework/source/dispatch/dispatchprovider.cxx:120
> #13 0x0df19a25 in non-virtual thunk to framework::DispatchProvider::queryDispatch(com::sun::star::util::URL const&, rtl::OUString const&, long) (this=0x12784cf4, aURL=@0xbffba788, sTargetFrameName=@0xbffba700, nSearchFlags=0) at core/framework/source/dispatch/dispatchprovider.cxx:123
> #14 0x13687e2e in SwXDispatchProviderInterceptor::queryDispatch (this=0x18efaedc, aURL=@0xbffba788, aTargetFrameName=@0xbffba700, nSearchFlags=0) at core/sw/source/ui/uno/unodispatch.cxx:87
> #15 0x13687fb5 in non-virtual thunk to SwXDispatchProviderInterceptor::queryDispatch(com::sun::star::util::URL const&, rtl::OUString const&, long) (this=0x18efaef0, aURL=@0xbffba788, aTargetFrameName=@0xbffba700, nSearchFlags=0) at core/sw/source/ui/uno/unodispatch.cxx:90
> #16 0x0df1d016 in framework::InterceptionHelper::queryDispatch (this=0x12784c70, aURL=@0xbffba788, sTargetFrameName=@0xbffba700, nSearchFlags=0) at core/framework/source/dispatch/interceptionhelper.cxx:85
> #17 0x0df1d155 in non-virtual thunk to framework::InterceptionHelper::queryDispatch(com::sun::star::util::URL const&, rtl::OUString const&, long) (this=0x12784c84, aURL=@0xbffba788, sTargetFrameName=@0xbffba700, nSearchFlags=0) at core/framework/source/dispatch/interceptionhelper.cxx:87
> #18 0x0e018cf7 in framework::Frame::queryDispatch (this=0x1278eae8, aURL=@0xbffba788, sTargetFrameName=@0xbffba700, nSearchFlags=0) at core/framework/source/services/frame.cxx:2078
> #19 0x0e018da5 in non-virtual thunk to framework::Frame::queryDispatch(com::sun::star::util::URL const&, rtl::OUString const&, long) (this=0x1278eaf0, aURL=@0xbffba788, sTargetFrameName=@0xbffba700, nSearchFlags=0) at core/framework/source/services/frame.cxx:2080
> #20 0x0e0ec9b9 in framework::MenuBarManager::Activate (this=0x19d27e54, pMenu=0x7d253cf0) at core/framework/source/uielement/menubarmanager.cxx:922
> #21 0x0e0eb944 in framework::MenuBarManager::LinkStubActivate (pThis=0x19d27e54, pCaller=0x7d253cf0) at core/framework/source/uielement/menubarmanager.cxx:792
> #22 0x03f64c5a in Link::Call (this=0x7d253d0c, pCaller=0x7d253cf0) at link.hxx:123
> #23 0x044d6fb6 in Menu::Activate (this=0x7d253cf0) at core/vcl/source/window/menu.cxx:1063
> #24 0x044e28ec in MenuBar::HandleMenuActivateEvent (this=0x7d250670, pMenu=0x7d253cf0) at core/vcl/source/window/menu.cxx:3387
> #25 0x045b3110 in ImplHandleMenuEvent (pWindow=0x7d1ecbe0, pEvent=0xbffbaca8, nEvent=35) at core/vcl/source/window/winproc.cxx:2097
> #26 0x045b12f2 in ImplWindowFrameProc (pWindow=0x7d1ecbe0, nEvent=35, pEvent=0xbffbaca8) at core/vcl/source/window/winproc.cxx:2498
> #27 0x045d4946 in SalFrame::CallCallback (this=0x7d1eb890, nEvent=35, pEvent=0xbffbaca8) at salframe.hxx:243
> #28 0x04651e1e in -[SalNSMenu menuNeedsUpdate:] (self=0x7d253cd0, _cmd=0x91b1460b, pMenu=0x7d253cd0) at core/vcl/aqua/source/window/salnsmenu.mm:51
> #29 0x91272503 in -[NSMenu _populateFromDelegateWithEventRef:] ()
> #30 0x9126ef5e in -[NSMenu _populateWithEventRef:] ()
> #31 0x9127143b in -[NSCarbonMenuImpl _carbonPopulateEvent:handlerCallRef:] ()
> #32 0x91271136 in NSSLMMenuEventHandler ()
> #33 0x98d93eb9 in _InvokeEventHandlerUPP ()
> #34 0x98be764f in DispatchEventToHandlers ()
> #35 0x98be6968 in SendEventToEventTargetInternal ()
> #36 0x98be67e0 in SendEventToEventTargetWithOptions ()
> #37 0x98dddfdd in SendMenuPopulate ()
> #38 0x98df8bd1 in PopulateMenu ()
> #39 0x98c2a2d0 in Check1MenuForKeyEvent ()
> #40 0x98c2ab38 in Check1MenuForKeyEvent ()
> #41 0x98c29c2f in CheckMenusForKeyEvent ()
> #42 0x98df8afe in _IsMenuKeyEvent ()
> #43 0x98c297ca in IsMenuKeyEvent ()
> #44 0x91270d00 in +[NSCarbonMenuImpl _menuItemWithKeyEquivalentMatchingEventRef:inMenu:] ()
> #45 0x91270a2b in _NSFindMenuItemMatchingCommandKeyEvent ()
> #46 0x911de524 in _NSHandleCarbonMenuEvent ()
> #47 0x91033902 in _DPSNextEvent ()
> #48 0x91032ad0 in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] ()
> #49 0x045d2029 in AquaSalInstance::Yield (this=0x79659820, bWait=true, bHandleAllCurrentEvents=false) at core/vcl/aqua/source/app/salinst.cxx:699
> #50 0x03f7d8a2 in ImplYield (i_bWait=true, i_bAllEvents=false) at core/vcl/source/app/svapp.cxx:364
> #51 0x03f7911a in Application::Yield () at core/vcl/source/app/svapp.cxx:396
> #52 0x03f790db in Application::Execute () at core/vcl/source/app/svapp.cxx:345
> #53 0x0015341d in desktop::Desktop::Main (this=0xbffbcb88) at core/desktop/source/app/app.cxx:1717
> #54 0x03f8951b in ImplSVMain () at core/vcl/source/app/svmain.cxx:162
> #55 0x045d15f3 in AquaSalInstance::handleAppDefinedEvent (pEvent=0x7c8126b0) at core/vcl/aqua/source/app/salinst.cxx:528
> #56 0x0463563f in -[VCL_NSApplication sendEvent:] (self=0x7a918880, _cmd=0x91ac9d80, pEvent=0x7c8126b0) at core/vcl/aqua/source/app/vclnsapp.mm:64
> #57 0x910253bc in -[NSApplication run] ()
> #58 0x9100e1f8 in NSApplicationMain ()
> #59 0x045d0363 in ImplSVMainHook (pnInit=0xbffbcb20) at core/vcl/aqua/source/app/salinst.cxx:221
> #60 0x03f8ac5e in SVMain () at core/vcl/source/app/svmain.cxx:195
> #61 0x001b15a8 in soffice_main () at core/desktop/source/app/sofficemain.cxx:85
> #62 0x00044f5b in sal_main () at core/desktop/source/app/main.c:48
> #63 0x00044f40 in main (argc=2, argv=0xbffbcc34) at core/desktop/source/app/main.c:47

where the URL in frame 19 is "vnd.sun.star.wiki:send" as specified in 
the "File - Send - To MediaWiki..." menu entry added by the 
WikiPublisher's Addons.xcu.

Looks like we are "populating" the menu tree too eagerly on Mac OS X. 
(On Linux at least, stoc_javavm::JavaVirtualMachine::getJavaVM only gets 
triggered once you open the "File - Send" sub-menu.)

Stephan


More information about the LibreOffice mailing list