Bug 51326 - CRASH when FILESAVE particular document with CHART
Summary: CRASH when FILESAVE particular document with CHART
Status: RESOLVED FIXED
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Calc (show other bugs)
Version:
(earliest affected)
3.6.0.0.beta2
Hardware: Other All
: high major
Assignee: Markus Mohrhard
URL:
Whiteboard: target:3.7.0 target:3.6.0.0.beta3
Keywords:
Depends on:
Blocks: mab3.6
  Show dependency treegraph
 
Reported: 2012-06-22 01:49 UTC by Rainer Bielefeld Retired
Modified: 2012-06-24 16:39 UTC (History)
1 user (show)

See Also:
Crash report or crash signature:


Attachments
bt + console msgs on master (19.88 KB, text/plain)
2012-06-22 15:12 UTC, Julien Nabet
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Rainer Bielefeld Retired 2012-06-22 01:49:11 UTC
Steps how to reproduce with parallel installation of Master "LOdev " 3.7.0.0.alpha0+   - WIN7 Home Premium (64bit) ENGLISH UI [Build ID: 8d39b7]" (tinderbox: W2008R2@16-minimal_build, pull time 2012-06-20 04:38:46):

0. download / Unzip Test kit attachment 59136 [details] from Bug 47977
1. Open "Defect_Statistic.ods"
2. Type an "x" into F3, <Enter>
3. Save as "Defect_Statistic_crash.ods"
   > CRASH
Comment 1 Rainer Bielefeld Retired 2012-06-22 01:55:19 UTC
Server Installation of  "LibreOffice 3.6.0.0.beta2  German UI/Locale [Build-ID: f010139] on German WIN7 Home Premium (64bit) also crashes.
Comment 2 Rainer Bielefeld Retired 2012-06-22 02:27:43 UTC
Not reproducible for me with new document, simple table and chart, all on 1 sheet, saving from Page Preview view.

Sample document also will CRASH when I save from Normal View
Comment 3 Michael Meeks 2012-06-22 14:16:23 UTC
Crashes for me under linux too; re-building with symbols to get a better trace.
Comment 4 Michael Meeks 2012-06-22 14:52:15 UTC
Program received signal SIGSEGV, Segmentation fault.
Chart2PositionMap (pDoc=0x8a1d860, rCols=..., bFillColumnHeader=true, bFillRowHeader=false, nAllRowCount=79, nAllColCount=3, this=0xa250f68)
    at /data/opt/libreoffice/master/sc/source/ui/unoobj/chart2uno.cxx:3587
3587	}
(gdb) bt
#0  Chart2PositionMap (pDoc=0x8a1d860, rCols=..., bFillColumnHeader=true, bFillRowHeader=false, nAllRowCount=79, nAllColCount=3, this=0xa250f68)
    at /data/opt/libreoffice/master/sc/source/ui/unoobj/chart2uno.cxx:3587
#1  createPositionMap (this=0xbfffbb34) at /data/opt/libreoffice/master/sc/source/ui/unoobj/chart2uno.cxx:829
#2  getPositionMap (this=0xbfffbb34) at /data/opt/libreoffice/master/sc/source/ui/unoobj/chart2uno.cxx:483
#3  ScChart2DataProvider::createDataSource (this=0x96ccdf0, aArguments=uno::Sequence of length 5 = {...})
    at /data/opt/libreoffice/master/sc/source/ui/unoobj/chart2uno.cxx:1509
#4  0xaf316b4b in ScChart2DataProvider::detectArguments (this=0x96ccdf0, xDataSource=warning: RTTI symbol not found for class 'chart::DataSource'
warning: RTTI symbol not found for class 'chart::DataSource'
warning: RTTI symbol not found for class 'chart::DataSource'
warning: RTTI symbol not found for class 'chart::DataSource'

    uno::Reference to {<com::sun::star::uno::XInterface> = {_vptr.XInterface = 0xaba36888}, <No data fields>})
    at /data/opt/libreoffice/master/sc/source/ui/unoobj/chart2uno.cxx:1980
#5  0xab98f8e5 in chart::DataSourceHelper::detectRangeSegmentation (xChartModel=
    uno::Reference to {<com::sun::star::lang::XComponent> = {<com::sun::star::uno::XInterface> = {_vptr.XInterface = 0xabb30b98}, <No data fields>}, <No data fields>}, rOutRangeString="", rSequenceMapping=empty uno::Sequence, rOutUseColumns=@0xbfffbfed, rOutFirstCellAsLabel=@0xbfffbfee, 
    rOutHasCategories=@0xbfffbfef) at /data/opt/libreoffice/master/chart2/source/tools/DataSourceHelper.cxx:353
#6  0xab7857de in chart::wrapper::WrappedDataRowSourceProperty::getPropertyValue (this=0x9cbc500)
    at /data/opt/libreoffice/master/chart2/source/controller/chartapiwrapper/DiagramWrapper.cxx:1261
#7  0xab9db7b2 in chart::WrappedProperty::getPropertyState(com::sun::star::uno::Reference<com::sun::star::beans::XPropertyState> const&) const
    () from /data/opt/OOInstall/program/libcharttoolslo.so
#8  0xab9dc8c1 in chart::WrappedPropertySet::getPropertyState (this=0x9cb4388, rPropertyName="DataRowSource")
    at /data/opt/libreoffice/master/chart2/source/tools/WrappedPropertySet.cxx:333
#9  0xab9dbd63 in chart::WrappedPropertySet::getPropertyStates (this=0x9cb4388, rNameSeq=uno::Sequence of length 63 = {...})
    at /data/opt/libreoffice/master/chart2/source/tools/WrappedPropertySet.cxx:364
#10 0xb01d4f96 in FilterPropertiesInfo_Impl::FillPropertyStateArray(std::vector<XMLPropertyState, std::allocator<XMLPropertyState> >&, com::sun::star::uno::Reference<com::sun::star::beans::XPropertySet> const&, UniReference<XMLPropertySetMapper> const&, unsigned char) ()
   from /data/opt/OOInstall/program/../program/libxolo.so
Comment 5 Julien Nabet 2012-06-22 15:12:01 UTC
Created attachment 63366 [details]
bt + console msgs on master

On Pc Debian x86-64, with sources updated today, I reproduced the problem
I attached bt + console logs.

Weird thing is bt is not exactly the same as Michael,
His :
Program received signal SIGSEGV, Segmentation fault.
Chart2PositionMap (pDoc=0x8a1d860, rCols=..., bFillColumnHeader=true,
bFillRowHeader=false, nAllRowCount=79, nAllColCount=3, this=0xa250f68)
    at /data/opt/libreoffice/master/sc/source/ui/unoobj/chart2uno.cxx:3587
3587    }
(gdb) bt
#0  Chart2PositionMap (pDoc=0x8a1d860, rCols=..., bFillColumnHeader=true,
bFillRowHeader=false, nAllRowCount=79, nAllColCount=3, this=0xa250f68)
    at /data/opt/libreoffice/master/sc/source/ui/unoobj/chart2uno.cxx:3587


Mine :
Program received signal SIGSEGV, Segmentation fault.
Program received signal SIGSEGV, Segmentation fault.
0x00007ff42c0cfcf4 in formula::FormulaToken::GetType (this=0x0) at /home/julien/compile-libreoffice/libo/solver/unxlngx6/inc/formula/token.hxx:115
115	    inline  StackVar            GetType() const         { return eType; }
(gdb) bt
#0  0x00007ff42c0cfcf4 in formula::FormulaToken::GetType (this=0x0) at /home/julien/compile-libreoffice/libo/solver/unxlngx6/inc/formula/token.hxx:115
#1  0x00007ff42c930072 in (anonymous namespace)::Chart2PositionMap::Chart2PositionMap (this=0x1ff42e0, nAllColCount=3, nAllRowCount=79, bFillRowHeader=true, 
    bFillColumnHeader=true, rCols=..., pDoc=0x265f100) at /home/julien/compile-libreoffice/libo/sc/source/ui/unoobj/chart2uno.cxx:318
#2  0x00007ff42c931fa8 in (anonymous namespace)::Chart2Positioner::createPositionMap (this=0x7fff902f6820)
    at /home/julien/compile-libreoffice/libo/sc/source/ui/unoobj/chart2uno.cxx:829

So here is the line :
    318                         StackVar eType = pToken->GetType();
I tried to add this before line 318 :
if (!pToken)
   break; // tried too "continue"
The file could be saved in both cases, but impossible to reopen it."read error" message.
Comment 6 Michael Meeks 2012-06-22 15:14:47 UTC
Valgrind shows the same thing - I guess the createDataSource line-number is busted, by (I guess) some inlining action inside the createDataSource impl.

==621==  Access not within mapped region at address 0x6
==621==    at 0xFC7EDDF: ScChart2DataProvider::createDataSource(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (chart2uno.cxx:3587)
==621==    by 0xFC7BB4A: ScChart2DataProvider::detectArguments(com::sun::star::uno::Reference<com::sun::star::chart2::data::XDataSource> const&) (chart2uno.cxx:1980)
==621==    by 0x1641D8E4: chart::DataSourceHelper::detectRangeSegmentation(com::sun::star::uno::Reference<com::sun::star::frame::XModel> const&, rtl::OUString&, com::sun::star::uno::Sequence<long>&, bool&, bool&, bool&) (DataSourceHelper.cxx:353)
==621==    by 0x1656F7DD: chart::wrapper::WrappedDataRowSourceProperty::getPropertyValue(com::sun::star::uno::Reference<com::sun::star::beans::XPropertySet> const&) const (DiagramWrapper.cxx:1261)
==621==    by 0x164697B1: chart::WrappedProperty::getPropertyState(com::sun::star::uno::Reference<com::sun::star::beans::XPropertyState> const&) const (in /data/opt/libreoffice/master/solver/unxlngi6.pro/lib/libcharttoolslo.so)
Comment 7 Markus Mohrhard 2012-06-24 16:18:58 UTC
That is one for me. Another bug introduced by this incredible buggy patch to chart2 to replace Table with std::map.
Comment 8 Not Assigned 2012-06-24 16:26:37 UTC
Markus Mohrhard committed a patch related to this issue.
It has been pushed to "master":

http://cgit.freedesktop.org/libreoffice/core/commit/?id=904596e935144e97d762d09942fa0d35068882ce

we still need to check that we have a token, fdo#51326
Comment 9 Not Assigned 2012-06-24 16:32:42 UTC
Markus Mohrhard committed a patch related to this issue.
It has been pushed to "libreoffice-3-6":

http://cgit.freedesktop.org/libreoffice/core/commit/?id=34027323e0177145eaa5519d1b289f2fc4f435f7&g=libreoffice-3-6

we still need to check that we have a token, fdo#51326


It will be available in LibreOffice 3.6.
Comment 10 Markus Mohrhard 2012-06-24 16:39:37 UTC
Fixed another crash for dbgutil builds with the same commit.

These Table->std::map commits have introduced IMHO too many regressions already, we should just revert them and no longer accept such commits if the area is not tested or covered by unit tests.