• Stephan Bergmann's avatar
    Make ToolBox::SetItemBits work for disposed instances · ed7ad72a
    Stephan Bergmann yazdı
    I happened to come across a SEGV caused by a null ToolBox::mpData once, as
    below.  Interestingly, some ToolBox member functions like GetItemPos and
    GetItemCount do take a potential null mpData (after a call to dispose) into
    account.
    
    > #0  0x00007fffebc1b93c in std::__cxx1998::vector<ImplToolItem, std::allocator<ImplToolItem> >::size() const (this=0x20) at /usr/include/c++/7/bits/stl_vector.h:671
    > #1  0x00007fffebc172ce in ToolBox::SetItemBits(unsigned short, ToolBoxItemBits) (this=0x7ffec6449230, nItemId=16, nBits=ToolBoxItemBits::DROPDOWN) at /data/sbergman/lo-ro/source/vcl/source/window/toolbox2.cxx:889
    > #2  0x00007ffff07ccc42 in SvxClipBoardControl::StateChanged(unsigned short, SfxItemState, SfxPoolItem const*) (this=0x7ffec6420390, nSID=5312, eState=SfxItemState::DEFAULT, pState=0xad4cf60) at /data/sbergman/lo-ro/source/svx/source/mnuctrls/clipboardctl.cxx:116
    > #3  0x00007ffff1d69c4f in SfxToolBoxControl::statusChanged(com::sun::star::frame::FeatureStateEvent const&) (this=0x7ffec6420390, rEvent=...) at /data/sbergman/lo-ro/source/sfx2/source/toolbox/tbxitem.cxx:521
    > #4  0x00007ffff193e163 in SfxDispatchController_Impl::addStatusListener(com::sun::star::uno::Reference<com::sun::star::frame::XStatusListener> const&, com::sun::star::util::URL const&) (this=0xaa3da80, aListener=uno::Reference to (SvxClipBoardControl *) 0x7ffec64203b8, aURL=...) at /data/sbergman/lo-ro/source/sfx2/source/control/unoctitm.cxx:865
    > #5  0x00007ffff193ddfc in SfxOfficeDispatch::addStatusListener(com::sun::star::uno::Reference<com::sun::star::frame::XStatusListener> const&, com::sun::star::util::URL const&) (this=0xaffa990, aListener=uno::Reference to (SvxClipBoardControl *) 0x7ffec64203b8, aURL=...) at /data/sbergman/lo-ro/source/sfx2/source/control/unoctitm.cxx:250
    > #6  0x00007fffee75c7e4 in svt::ToolboxController::bindListener() (this=0x7ffec6420390) at /data/sbergman/lo-ro/source/svtools/source/uno/toolboxcontroller.cxx:529
    > #7  0x00007fffee75c056 in svt::ToolboxController::update() (this=0x7ffec6420390) at /data/sbergman/lo-ro/source/svtools/source/uno/toolboxcontroller.cxx:227
    > #8  0x00007fffc11ddef6 in framework::ToolBarManager::UpdateControllers() (this=0x7ffec6142930) at /data/sbergman/lo-ro/source/framework/source/uielement/toolbarmanager.cxx:364
    > #9  0x00007fffc11e995e in framework::ToolBarManager::AsyncUpdateControllersHdl(Timer*) (this=0x7ffec6142930) at /data/sbergman/lo-ro/source/framework/source/uielement/toolbarmanager.cxx:1852
    > #10 0x00007fffc11dc748 in framework::ToolBarManager::LinkStubAsyncUpdateControllersHdl(void*, Timer*) (instance=0x7ffec6142930, data=0x7ffec6142b00) at /data/sbergman/lo-ro/source/framework/source/uielement/toolbarmanager.cxx:1839
    > #11 0x00007fffec264928 in Link<Timer*, void>::Call(Timer*) const (this=0x7ffec6142b20, data=0x7ffec6142b00) at /data/sbergman/lo-ro/source/include/tools/link.hxx:84
    > #12 0x00007fffec264787 in Timer::Invoke() (this=0x7ffec6142b00) at /data/sbergman/lo-ro/source/vcl/source/app/timer.cxx:76
    > #13 0x00007fffec21cdd2 in Scheduler::ProcessTaskScheduling() () at /data/sbergman/lo-ro/source/vcl/source/app/scheduler.cxx:448
    > #14 0x00007fffec21bfed in Scheduler::CallbackTaskScheduling() () at /data/sbergman/lo-ro/source/vcl/source/app/scheduler.cxx:270
    > #15 0x00007fffcdfaa036 in SalTimer::CallCallback() (this=0x199ae40) at /data/sbergman/lo-ro/source/vcl/inc/saltimer.hxx:55
    > #16 0x00007fffcdfa920d in sal_gtk_timeout_dispatch(_GSource*, int (*)(void*), void*) (pSource=0x7e1abe0) at /data/sbergman/lo-ro/source/vcl/unx/gtk3/gtk3gtkdata.cxx:692
    > #17 0x00007ffff5aa7b77 in g_main_dispatch (context=0x63d8d0) at /usr/src/debug/glib2-2.54.3-2.fc27.x86_64/glib/gmain.c:3142
    > #18 0x00007ffff5aa7b77 in g_main_context_dispatch (context=context@entry=0x63d8d0) at /usr/src/debug/glib2-2.54.3-2.fc27.x86_64/glib/gmain.c:3795
    > #19 0x00007ffff5aa7f20 in g_main_context_iterate (context=context@entry=0x63d8d0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /usr/src/debug/glib2-2.54.3-2.fc27.x86_64/glib/gmain.c:3868
    > #20 0x00007ffff5aa7fac in g_main_context_iteration (context=0x63d8d0, may_block=1) at /usr/src/debug/glib2-2.54.3-2.fc27.x86_64/glib/gmain.c:3929
    > #21 0x00007fffcdfa78f4 in GtkSalData::Yield(bool, bool) (this=0x63ae70, bWait=true, bHandleAllCurrentEvents=false) at /data/sbergman/lo-ro/source/vcl/unx/gtk3/gtk3gtkdata.cxx:459
    > #22 0x00007fffcdfabf07 in GtkInstance::DoYield(bool, bool) (this=0x6e6a90, bWait=true, bHandleAllCurrentEvents=false) at /data/sbergman/lo-ro/source/vcl/unx/gtk/gtkinst.cxx:412
    > #23 0x00007fffec2515ca in ImplYield(bool, bool) (i_bWait=true, i_bAllEvents=false) at /data/sbergman/lo-ro/source/vcl/source/app/svapp.cxx:472
    > #24 0x00007fffec24c2c4 in Application::Yield() () at /data/sbergman/lo-ro/source/vcl/source/app/svapp.cxx:537
    > #25 0x00007fffec24c24e in Application::Execute() () at /data/sbergman/lo-ro/source/vcl/source/app/svapp.cxx:452
    > #26 0x00007ffff774d617 in desktop::Desktop::Main() (this=0x7fffffff2950) at /data/sbergman/lo-ro/source/desktop/source/app/app.cxx:1623
    > #27 0x00007fffec260825 in ImplSVMain() () at /data/sbergman/lo-ro/source/vcl/source/app/svmain.cxx:198
    > #28 0x00007fffec262498 in SVMain() () at /data/sbergman/lo-ro/source/vcl/source/app/svmain.cxx:236
    > #29 0x00007ffff77bba98 in soffice_main() () at /data/sbergman/lo-ro/source/desktop/source/app/sofficemain.cxx:166
    > #30 0x000000000040086d in sal_main () at /data/sbergman/lo-ro/source/desktop/source/app/main.c:48
    > #31 0x0000000000400847 in main (argc=4, argv=0x7fffffff2c98) at /data/sbergman/lo-ro/source/desktop/source/app/main.c:47
    
    Change-Id: I622b4128de0a6be294b59caf2bb2d6f7b529c349
    Reviewed-on: https://gerrit.libreoffice.org/52086Tested-by: 's avatarJenkins <ci@libreoffice.org>
    Reviewed-by: 's avatarStephan Bergmann <sbergman@redhat.com>
    ed7ad72a
Adı
Son kayıt (commit)
Son güncelleme
..
android Loading commit data...
backendtest Loading commit data...
headless Loading commit data...
inc Loading commit data...
ios Loading commit data...
null Loading commit data...
opengl Loading commit data...
osx Loading commit data...
qa Loading commit data...
qt5 Loading commit data...
quartz Loading commit data...
source Loading commit data...
uiconfig/ui Loading commit data...
unx Loading commit data...
win Loading commit data...
workben Loading commit data...
AllLangMoTarget_vcl.mk Loading commit data...
CppunitTest_vcl_app_test.mk Loading commit data...
CppunitTest_vcl_bitmap_test.mk Loading commit data...
CppunitTest_vcl_bitmapprocessor_test.mk Loading commit data...
CppunitTest_vcl_blocklistparser_test.mk Loading commit data...
CppunitTest_vcl_complextext.mk Loading commit data...
CppunitTest_vcl_dialogs_test.mk Loading commit data...
CppunitTest_vcl_errorhandler.mk Loading commit data...
CppunitTest_vcl_filters_test.mk Loading commit data...
CppunitTest_vcl_font.mk Loading commit data...
CppunitTest_vcl_fontcharmap.mk Loading commit data...
CppunitTest_vcl_fontmetric.mk Loading commit data...
CppunitTest_vcl_jpeg_read_write_test.mk Loading commit data...
CppunitTest_vcl_lifecycle.mk Loading commit data...
CppunitTest_vcl_mnemonic.mk Loading commit data...
CppunitTest_vcl_outdev.mk Loading commit data...
CppunitTest_vcl_pdfexport.mk Loading commit data...
CppunitTest_vcl_svm_test.mk Loading commit data...
CppunitTest_vcl_timer.mk Loading commit data...
CustomTarget_gtk3_kde5_moc.mk Loading commit data...
CustomTarget_kde4_moc.mk Loading commit data...
CustomTarget_kde5_moc.mk Loading commit data...
CustomTarget_nativecalc.mk Loading commit data...
CustomTarget_nativecore.mk Loading commit data...
CustomTarget_nativedraw.mk Loading commit data...
CustomTarget_nativemath.mk Loading commit data...
CustomTarget_nativewriter.mk Loading commit data...
CustomTarget_qt5_moc.mk Loading commit data...
Executable_602fuzzer.mk Loading commit data...
Executable_bmpfuzzer.mk Loading commit data...
Executable_cgmfuzzer.mk Loading commit data...
Executable_diffuzzer.mk Loading commit data...
Executable_docxfuzzer.mk Loading commit data...
Executable_dxffuzzer.mk Loading commit data...
Executable_epsfuzzer.mk Loading commit data...
Executable_fftester.mk Loading commit data...
Executable_fodpfuzzer.mk Loading commit data...
Executable_fodsfuzzer.mk Loading commit data...
Executable_fodtfuzzer.mk Loading commit data...
Executable_giffuzzer.mk Loading commit data...
Executable_htmlfuzzer.mk Loading commit data...
Executable_hwpfuzzer.mk Loading commit data...
Executable_icontest.mk Loading commit data...
Executable_jpgfuzzer.mk Loading commit data...
Executable_lo_kde5filepicker.mk Loading commit data...
Executable_lwpfuzzer.mk Loading commit data...
Executable_metfuzzer.mk Loading commit data...
Executable_mmlfuzzer.mk Loading commit data...
Executable_mtfdemo.mk Loading commit data...
Executable_mtpfuzzer.mk Loading commit data...
Executable_olefuzzer.mk Loading commit data...
Executable_outdevgrind.mk Loading commit data...
Executable_pcdfuzzer.mk Loading commit data...
Executable_pctfuzzer.mk Loading commit data...
Executable_pcxfuzzer.mk Loading commit data...
Executable_pngfuzzer.mk Loading commit data...
Executable_ppmfuzzer.mk Loading commit data...
Executable_pptfuzzer.mk Loading commit data...
Executable_pptxfuzzer.mk Loading commit data...
Executable_psdfuzzer.mk Loading commit data...
Executable_qpwfuzzer.mk Loading commit data...
Executable_rasfuzzer.mk Loading commit data...
Executable_rtffuzzer.mk Loading commit data...
Executable_scrtffuzzer.mk Loading commit data...
Executable_sftfuzzer.mk Loading commit data...
Executable_slkfuzzer.mk Loading commit data...
Executable_svdemo.mk Loading commit data...
Executable_svmfuzzer.mk Loading commit data...
Executable_svpclient.mk Loading commit data...
Executable_svptest.mk Loading commit data...
Executable_tgafuzzer.mk Loading commit data...
Executable_tiffuzzer.mk Loading commit data...
Executable_ui-previewer.mk Loading commit data...
Executable_vcldemo.mk Loading commit data...
Executable_visualbackendtest.mk Loading commit data...
Executable_wksfuzzer.mk Loading commit data...
Executable_wmffuzzer.mk Loading commit data...
Executable_ww2fuzzer.mk Loading commit data...
Executable_ww6fuzzer.mk Loading commit data...
Executable_ww8fuzzer.mk Loading commit data...
Executable_xbmfuzzer.mk Loading commit data...
Executable_xid_fullscreen_on_all_monitors.mk Loading commit data...
Executable_xlsfuzzer.mk Loading commit data...
Executable_xlsxfuzzer.mk Loading commit data...
Executable_xpmfuzzer.mk Loading commit data...
Library_desktop_detector.mk Loading commit data...
Library_vcl.mk Loading commit data...
Library_vclplug_gen.mk Loading commit data...
Library_vclplug_gtk.mk Loading commit data...
Library_vclplug_gtk3.mk Loading commit data...
Library_vclplug_gtk3_kde5.mk Loading commit data...
Library_vclplug_kde4.mk Loading commit data...
Library_vclplug_kde5.mk Loading commit data...
Library_vclplug_qt5.mk Loading commit data...
Makefile Loading commit data...
Module_vcl.mk Loading commit data...
Package_fontunxppds.mk Loading commit data...
Package_fontunxpsprint.mk Loading commit data...
Package_opengl.mk Loading commit data...
Package_opengl_blacklist.mk Loading commit data...
Package_osxres.mk Loading commit data...
README Loading commit data...
README.GDIMetaFile Loading commit data...
README.lifecycle Loading commit data...
README.scheduler Loading commit data...
README.vars Loading commit data...
StaticLibrary_fuzzer_calc.mk Loading commit data...
StaticLibrary_fuzzer_core.mk Loading commit data...
StaticLibrary_fuzzer_draw.mk Loading commit data...
StaticLibrary_fuzzer_math.mk Loading commit data...
StaticLibrary_fuzzer_writer.mk Loading commit data...
StaticLibrary_fuzzerstubs.mk Loading commit data...
StaticLibrary_glxtest.mk Loading commit data...
StaticLibrary_vclmain.mk Loading commit data...
UIConfig_vcl.mk Loading commit data...
WinResTarget_vcl.mk Loading commit data...
commonfuzzer.mk Loading commit data...
vcl.android.component Loading commit data...
vcl.common.component Loading commit data...
vcl.headless.component Loading commit data...
vcl.ios.component Loading commit data...
vcl.macosx.component Loading commit data...
vcl.unx.component Loading commit data...
vcl.windows.component Loading commit data...