Date: prev next · Thread: first prev next last
2015 Archives by date, by thread · List index


Hi there,

I am working on a bug around saving big file in Writer:
https://bugs.documentfoundation.org/show_bug.cgi?id=88314

The problem seems to be we deflate streams in parallel and run out of memory.
I thought there are temporary files used for deflating since
f92183833fa569006602ac7e93c906d2094e0d4d but I see this:

#2  0xb73c9e13 in __GI_abort () at abort.c:90
#3  0xb73c12c7 in __assert_fail_base (fmt=0xb7509564 "%s%s%s:%u:
%s%sAssertion `%s' failed.\n%n",
    assertion=assertion@entry=0xb462e257 <.L.str31> "pBuf &&
\"Possibly Reallocate failed\"",
    file=file@entry=0xb462df3b <.L.str13>
"/home/matus/git/dbgutil/tools/source/stream/stream.cxx",
line=line@entry=1828,
    function=function@entry=0xb462e27c
<.L__PRETTY_FUNCTION__._ZN14SvMemoryStream7PutDataEPKvm> "virtual
sal_Size SvMemoryStream::PutData(const void *, sal_Size)") at
assert.c:92
#4  0xb73c1377 in __GI___assert_fail (assertion=0xb462e257 <.L.str31>
"pBuf && \"Possibly Reallocate failed\"",
    file=0xb462df3b <.L.str13>
"/home/matus/git/dbgutil/tools/source/stream/stream.cxx", line=1828,
    function=0xb462e27c
<.L__PRETTY_FUNCTION__._ZN14SvMemoryStream7PutDataEPKvm> "virtual
sal_Size SvMemoryStream::PutData(const void *, sal_Size)")
    at assert.c:101
#5  0xb4614d46 in SvMemoryStream::PutData (this=0x6168b908,
pData=0x61b7f5e8, nCount=0)
    at /home/matus/git/dbgutil/tools/source/stream/stream.cxx:1828
#6  0xb460da7a in SvStream::Write (this=0x6168b908, pData=0x61b7f5e8,
nCount=644) at /home/matus/git/dbgutil/tools/source/stream/stream.cxx:1359
#7  0xb437b197 in OTempFileService::writeBytes (this=0x6168b8a8,
aData=uno::Sequence of length 644 = {...})
    at /home/matus/git/dbgutil/unotools/source/ucbhelper/xtempfile.cxx:268
#8  0xb437b369 in non-virtual thunk to
OTempFileService::writeBytes(com::sun::star::uno::Sequence<signed
char> const&) ()
    at /home/matus/git/dbgutil/unotools/source/ucbhelper/xtempfile.cxx:272
#9  0xab02a77e in ZipOutputEntry::doDeflate (this=0x61a7e148) at
/home/matus/git/dbgutil/package/source/zipapi/ZipOutputEntry.cxx:180
#10 0xab02a0d6 in ZipOutputEntry::closeEntry (this=0x61a7e148) at
/home/matus/git/dbgutil/package/source/zipapi/ZipOutputEntry.cxx:90
#11 0xab0833eb in deflateZipEntry (pZipEntry=0x61a7e148,
xInStream=uno::Reference to (OInputCompStream *) 0xd56a3b4)
    at /home/matus/git/dbgutil/package/source/zippackage/ZipPackageStream.cxx:456
#12 0xab08b07c in DeflateThread::doWork (this=0x61983c00) at
/home/matus/git/dbgutil/package/source/zippackage/ZipPackageStream.cxx:474

Does that mean css::io::TempFile UNO service I use in
package/source/zipapi/ZipOutputEntry.cxx provides in fact memory
stream?
OTempFileService::OTempFileService has
  mpTempFile = new ::utl::TempFile;

and TempFile::GetStream has
     if (!aName.isEmpty())
          pStream = new SvFileStream(aName, eMode);
    else
          pStream = new SvMemoryStream(NULL, 0, eMode);

Should we fix that?
And/Or is there another way to get file stream?
package/ does not have many dependencies, so I would not like to
introduce some new.

Thanks,
All the best,

Matus

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.