It seems to be more difficult to trigger than before, but as I said it is still fairly reliably triggered for me (what works most of the time is scrolling while it is loading, so the images are not on the screen and immediately scrolling back. The scrollbar than "hangs" and then it crashes).
While testing with gdb, I once had a crash in a different GET function of DAVResourceAccess.cxx, so it seems to crash in either one of these (in the respective line with m_xSession->GET):
It seems to be more difficult to trigger than before, but as I said it is still fairly reliably triggered for me (what works most of the time is scrolling while it is loading, so the images are not on the screen and immediately scrolling back. The scrollbar than "hangs" and then it crashes).
While testing with gdb, I once had a crash in a different GET function of DAVResourceAcce ss.cxx, so it seems to crash in either one of these (in the respective line with m_xSession->GET):
uno::Reference< io::XStream > DAVResourceAcce ss::GET( vironment > & xEnv,
const std::vector< rtl::OUString > & rHeaderNames,
DAVResource & rResource,
const uno::Reference< ucb::XCommandEn
sal_Bool bAllowEmpty )
throw( DAVException )
{
initialize();
uno::Reference< io::XStream > xStream;
DAVRequest Headers aHeaders;
getUserReq uestHeaders( xEnv,
getRequestURI( ),
rtl::OUString: :createFromAsci i( "GET" ),
aHeaders );
int errorCount = 0;
bool bRetry;
do
{
bRetry = false;
try
{
xStream = m_xSession->GET( getRequestURI(),
rHeaderName s,
rResource,
DAVRequestE nvironment(
getRequestURI( ),
new DAVAuthListener _Impl( xEnv, m_aURL ),
aHeaders, xEnv ),
bAllowEmpty );
errorCount ++;
throw;
}
catch ( DAVException & e )
{
bRetry = handleException( e, errorCount );
if ( !bRetry )
}
}
while ( bRetry );
return xStream;
}
//===== ======= ======= ======= ======= ======= ======= ======= ======= ======= ===== ss::GET( vironment > & xEnv )
void DAVResourceAcce
uno::Reference< io::XOutputStream > & rStream,
const std::vector< rtl::OUString > & rHeaderNames,
DAVResource & rResource,
const uno::Reference< ucb::XCommandEn
throw( DAVException )
{
initialize();
bool bRetry;
DAVRequest Headers aHeaders;
getUserReq uestHeaders( xEnv,
getRequestURI( ),
rtl::OUString: :createFromAsci i( "GET" ),
aHeaders );
int errorCount = 0;
do
{
bRetry = false;
try
{
}
catch ( DAVException & e )
{
bRetry = handleException( e, errorCount );
if ( !bRetry )
}
}
while ( bRetry );
}
This is what I tried in gdb after a crash in the first function (like in my stacktrace from comment #13): rtl::OUString, _STL::allocator <rtl::OUString> > &) @0xbfffc650: {<_STL: :_Vector_ base<rtl: :OUString, _STL::allocator <rtl::OUString> >> = {_M_start = 0x0, :allocator< rtl::OUString> > = {<No data fields>}, _M_data = 0x0}}, <No data fields>} ucp::DAVResourc e &) @0xbfffc628: {uri = {pData = 0xb52f14}, :_Vector_ base<webdav_ ucp::DAVPropert yValue, _STL::allocator <webdav_ ucp::DAVPropert yValue> >> = {_M_start = 0x0, _M_finish = 0x0, M_end_of_ storage = {<_STL: :allocator< webdav_ ucp::DAVPropert yValue> > = {<No data fields>}, _M_data = 0x0}}, <No data fields>}} :star:: uno::Reference< com::sun: :star:: ucb::XCommandEn vironment> &) @0x8a7cd38: {<com:: sun::star: :uno::BaseRefer ence> = { :_Vector_ base<_STL: :pair<rtl: :OUString, rtl::OUString>, _STL::allocator <_STL:: pair<rtl: :OUString, rtl::OUString> > >> = {_M_start = 0x0, _M_finish = 0x0, end_of_ storage = {<_STL: :allocator< _STL::pair< rtl::OUString, rtl::OUString> >> = {<No data fields>}, _M_data = 0x0}}, <No data fields>} :star:: uno::Reference< com::sun: :star:: ucb::XCommandEn vironment> &) @0x8a7cd38: {<com:: sun::star: :uno::BaseRefer ence> = {
(gdb) print rHeaderNames
$1 = (const _STL::vector<
_M_finish = 0x0, _M_end_of_storage = {<_STL:
(gdb) print rResource
$2 = (webdav_
properties = {<_STL:
_
(gdb) print xEnv
$3 = (const com::sun:
_pInterface = 0x8818364}, <No data fields>}
(gdb) print m_aURL
$4 = {pData = 0xa}
(gdb) print aHeaders
$5 = {<_STL:
_M_
(gdb) print xEnv
$6 = (const com::sun:
_pInterface = 0x8818364}, <No data fields>}
(gdb) print bAllowEmpty
$7 = 0 '\000'
(gdb) print m_xSession
$8 = {m_pBody = 0x6f0044}
pData ($4) looks a bit strange for a pointer, doesn't it? I therefore tried this:
(gdb) print m_aURL.pData
$9 = (rtl_uString *) 0xa
(gdb) printf "%s", m_aURL.pData
Cannot access memory at address 0xa
Hope this is of any help :-/