office-gobmx/ucb
Stephan Bergmann f0110f798c file UCP: Dir entries can disappear during non-atomic traversal
...so allow for that by reporting failure to call
osl::DirectoryItem::getFileStatus from TaskManager::getv, and make
XResultSet_impl::OneMore ignore such lost entries.  While there may be
legitimate cases where getFileStatus in getv would fail (and thus SAL_INFO would
be more appropriate), the broken, non-atomic design means that such failure is
likely unexpected (and worth a SAL_WARN).

Occasionally ran into this when building UBSan builds, which sometimes failed in
one of the extras/Gallery_*.mk like

> ucb/source/ucp/file/filrset.cxx:235:60: runtime error: load of value 96, which is not a valid value for type 'bool'
>     #0 0x7f079bff575e in fileaccess::XResultSet_impl::OneMore() ucb/source/ucp/file/filrset.cxx:234:60
>     #1 0x7f079bff823e in fileaccess::XResultSet_impl::next() ucb/source/ucp/file/filrset.cxx:288:16
>     #2 0x7f0800a109a8 in Gallery::ImplLoadSubDirs(INetURLObject const&, bool&) svx/source/gallery2/gallery1.cxx:291:36
>     #3 0x7f0800a0c88c in Gallery::ImplLoad(rtl::OUString const&) svx/source/gallery2/gallery1.cxx:202:5
>     #4 0x7f0800a0bfa5 in Gallery::Gallery(rtl::OUString const&) svx/source/gallery2/gallery1.cxx:167:5
>     #5 0x522e13 in createGallery(rtl::OUString const&) svx/source/gengal/gengal.cxx:62:16
>     #6 0x52979a in createTheme(rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, std::__debug::vector<INetURLObject, std::allocator<INetURLObject> >&, bool) svx/source/gengal/gengal.cxx:76:16
>     #7 0x52853d in GalApp::Main() svx/source/gengal/gengal.cxx:318:9
>     #8 0x7f080f6f8c36 in ImplSVMain() vcl/source/app/svmain.cxx:191:35
>     #9 0x7f080f706571 in SVMain() vcl/source/app/svmain.cxx:229:16
>     #10 0x56aa0a in sal_main() vcl/source/salmain/salmain.cxx:41:12
>     #11 0x56a99f in main vcl/source/salmain/salmain.cxx:35:1
>     #12 0x7f07fbaf5400 in __libc_start_main /usr/src/debug/glibc-2.24-33-ge9e69e4/csu/../csu/libc-start.c:289
>     #13 0x42e219 in _start (instdir/program/gengal.bin+0x42e219)
>
> SUMMARY: AddressSanitizer: undefined-behavior ucb/source/ucp/file/filrset.cxx:235:60 in
> solenv/gbuild/Gallery.mk:58: recipe for target 'workdir/Gallery/education.done' failed

presumably because some other part of the build changed instdir/share/config/
in parallel.  (And doing

> while (touch instdir/share/config/TEST && rm instdir/share/config/TEST); do :; done

in parallel to 'make extras' indeed causes this issue to occur easily.)

Change-Id: I115ac727f99eed209b223d828c33060b275daaaa
2017-04-19 14:06:33 +02:00
..
qa
source file UCP: Dir entries can disappear during non-atomic traversal 2017-04-19 14:06:33 +02:00
test/com/sun/star/comp/ucb
CppunitTest_ucb_webdav_local_neon.mk
CppunitTest_ucb_webdav_neon_opts.mk
CppunitTest_ucb_webdav_propfindcache.mk
CppunitTest_ucb_webdav_res_access.mk
JunitTest_ucb_complex.mk
JunitTest_ucb_unoapi.mk
Library_cached1.mk
Library_srtrs1.mk
Library_ucb1.mk
Library_ucpcmis1.mk
Library_ucpdav1.mk
Library_ucpexpand1.mk
Library_ucpext.mk
Library_ucpfile1.mk
Library_ucpftp1.mk
Library_ucpgio1.mk
Library_ucphier1.mk
Library_ucpimage.mk
Library_ucppkg1.mk
Library_ucptdoc1.mk
Makefile
Module_ucb.mk
README

Universal Content Broker (has ucp) which do things like convert files to strings in content broker world.

mmeeks: so - I renamed the old LGPLv3 webdav code to webdav-neon, and imported
the (not built) surf webdav ucp into the old space. so that in future, we can
merge changes more easily - and still choose which to use. cbosdonnat kindly
volunteered to do some comparative analysis of the two codebases to decide which
is best for what etc.