Apache OpenOffice (AOO) Bugzilla – Issue 63722
new chart: Changing chart type Line 3D to XY 3D sometimes loop or crashes
Last modified: 2013-02-24 21:21:56 UTC
(Windows seems to reproduce it best) new chart from attached document Insert::Chart OK Format::ChartType check 3D select LINE select XY -> sometimes OOo crashes at this point It's a little bit unclear why it crashes. I guess it got something to do with the values in the data range. The attached doc contains randomly generated values. If it doesn't crash at first try do the following: (Average two or three times to try for me) DO while noCrash = TRUE cancel ChartType dialog put focus in data range press SHIFT+CTRL+F9 for recalculation enter inplace mode Format::ChartType check 3D select LINE select XY LOOP
Created attachment 35311 [details] Document with randomly generated values
akw
->bm: Please take over.
When there is a loop, there are two threads. One handles the dialog in VCL (while the solar mutex is locked). The second thread iterates over Acceptors (desktop, offacc.dll). Probably this is a threading deadlock. I couldn't reproduce the loop when I start the Office without the -accept parameter. If I do, the loop occurs, even if no other process uses the remote connection.
Ok, next result of debugging: The "-accept" string probably only changes the timing. Because this time I got a crash in SdrPaintView::RefreshAllIAOManagers() when calling B2dIAOManager::UpdateDisplay(). The issue occurs when you change chart types "fast".
Here is the stack with some libraries with debug: vcl680mi.dll!1000dd2b() vcl680mi.dll!100417b8() uxtheme.dll!5ad72299() go680mi.dll!B2dIAOManager::UpdateDisplay() + 0x4b C++ tl680mi.dll!0027a60a() > svx680mi.dll!SdrPaintView::RefreshAllIAOManagers() Line 1197 C++ svx680mi.dll!SdrPaintView::ImpAfterPaintHdl(Timer * pTimer=0x0a72fe88) Line 544 C++ svx680mi.dll!SdrPaintView::LinkStubImpAfterPaintHdl(void * pThis=0x0a72fc78, void * pCaller=0x0a72fe88) Line 538 + 0xf C++ tl680mi.dll!00276aa8() vcl680mi.dll!1003bb61() vcl680mi.dll!1003ba7b() vcl680mi.dll!1003c15b() vcl680mi.dll!1006c5c8() chartmodel680mi.dll!comphelper::WeakImplHelper16<com::sun::star::util::XCloseable,com::sun::star::frame::XStorable2,com::sun::star::util::XModifiable,com::sun::star::lang::XServiceInfo,com::sun::star::chart2::XChartDocument,com::sun::star::chart2::data::XDataReceiver,com::sun::star::chart2::XTitled,com::sun::star::frame::XLoadable,com::sun::star::util::XCloneable,com::sun::star::embed::XVisualObject,com::sun::star::lang::XMultiServiceFactory,com::sun::star::document::XStorageBasedDocument,com::sun::star::lang::XUnoTunnel,com::sun::star::util::XNumberFormatsSupplier,com::sun::star::container::XChild,com::sun::star::util::XModifyListener>::release() Line 228 + 0xc C++ chartcontroller680mi.dll!chart::ChartController::executeDispatch_ChartType() Line 1145 + 0xc C++ chartcontroller680mi.dll!chart::ChartController::dispatch(const com::sun::star::util::URL & rURL={...}, const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & rArgs={...}) Line 1044 + 0xc C++ chartcontroller680mi.dll!chart::ControllerCommandDispatch::dispatch(const com::sun::star::util::URL & URL={...}, const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & Arguments={...}) Line 356 + 0x23 C++ fwk680mi.dll!framework::GenericToolbarController::ExecuteHdl_Impl() + 0x32 C++ tl680mi.dll!00276aa8() vcl680mi.dll!100d5ee6() [...]
Typo in summary corrected for better finding (or was that intended? ;-) )
Created attachment 36396 [details] Document to reproduce the loop. Just enter chart and change to XY
->AW: There is a stack-overflow in B3dComplexPolygon::ExtractTriangle() (Line 980). The function is called recursively, and obviously without a matching abortion-criterion. To reproduce, load the attached loop.ods, activate the chart and go to "Chart Type". Then set a breakpoint in B2dIAOManager::UpdateDisplay() (Line 1801), change the chart type to xy. With the breakpoint set I get a call to "DbgIsErrorOut" which breaks into the debugger with the loop on the stack more reliably than otherwise. Please check, why there is a loop, and how it can be avoided. This happens with the new chart in CWS chart2mst3.
Changed target to 2.x
This one is duplicate to Issue 67868. I set this older to duplicate as the newer issue has a more reliable reproduction description. *** This issue has been marked as a duplicate of 67868 ***
close as duplicate