To comment on the following update, log in, then open the issue:
http://www.openoffice.org/issues/show_bug.cgi?id=105283


User mt changed the following:

                What    |Old value                 |New value
================================================================================
          Ever confirmed|                          |1
--------------------------------------------------------------------------------
                  Status|UNCONFIRMED               |NEW
--------------------------------------------------------------------------------




------- Additional comments from m...@openoffice.org Fri Oct 15 15:35:29 +0000 
2010 -------
I was able to reproduce it this way:

On a W2008R2 server, set all the (in my case existing as "allow" per default)
"file and printer sharing" firewall rules to "block".

To ease debugging, run "soffice \\myserver\myshare\myfile.odt" from command
line, which should fail to open the file, then attach the debugger, then use
command line again. This way, a break point in "osl_getDirectoryItem" will only
be hit for exactly that file, and not for other configuration and UNO stuff.

For PATHTYPE_FILE, there is a Win32 call FindFirstFile(...). This single call
takes more than 30s for me!

Waiting 30s is already bad, but we hit that break point 3 times:

>       sal3.dll!osl_getDirectoryItem(_rtl_uString * strFilePath=0x0914b1ec, 
> void * *
pItem=0x014ae9b4)  Line 3284    C++
        sofficeapp.dll!desktop::GetURL_Impl(const String & rName={...}, const
boost::optional<rtl::OUString> & cwdUrl={...})  Line 2631 + 0x4c bytes  C++
        sofficeapp.dll!desktop::DispatchWatcher::executeDispatchRequests(const
_STL::vector<desktop::DispatchWatcher::DispatchRequest,_STL::allocator<desktop::DispatchWatcher::DispatchRequest>
> & aDispatchRequestsList={...}, bool bNoTerminate=false)  Line 198 + 0x2e 
> bytes        C++
 
sofficeapp.dll!desktop::OfficeIPCThread::ExecuteCmdLineRequests(desktop::ProcessDocumentsRequest
& aRequest={...})  Line 989 + 0x1a bytes        C++
 
sofficeapp.dll!desktop::ProcessEventsClass_Impl::ProcessDocumentsEvent(desktop::ProcessEventsClass_Impl
* __formal=0x00000000, void * pEvent=0x08435a98)  Line 281 + 0x9 bytes  C++


>       sal3.dll!osl_getDirectoryItem(_rtl_uString * strFilePath=0x08ec15f0, 
> void * *
pItem=0x014ad7d8)  Line 3284    C++
        ucpfile1.dll!fileaccess::shell::getv(long CommandId=929, const 
rtl::OUString &
aUnqPath={...}, const
com::sun::star::uno::Sequence<com::sun::star::beans::Property> &
properties={...})  Line 1068 + 0x28 bytes       C++
        ucpfile1.dll!fileaccess::BaseContent::getPropertyValues(long
nMyCommandIdentifier=929, const
com::sun::star::uno::Sequence<com::sun::star::beans::Property> &
PropertySet={...})  Line 878 + 0x1f bytes       C++
        ucpfile1.dll!fileaccess::BaseContent::execute(const
com::sun::star::ucb::Command & aCommand={...}, long CommandId=929, const
com::sun::star::uno::Reference<com::sun::star::ucb::XCommandEnvironment> &
Environment={...})  Line 386 + 0x1e bytes       C++
        ucbhelper4MSC.dll!ucbhelper::Content_Impl::executeCommand(const
com::sun::star::ucb::Command & rCommand={...})  Line 1809 + 0x2c bytes  C++
        ucbhelper4MSC.dll!ucbhelper::Content::getPropertyValuesInterface(const
com::sun::star::uno::Sequence<rtl::OUString> & rPropertyNames={...})  Line 686 +
0x53 bytes      C++
        ucbhelper4MSC.dll!ucbhelper::Content::getPropertyValues(const
com::sun::star::uno::Sequence<rtl::OUString> & rPropertyNames={...})  Line 623 +
0x13 bytes      C++
        ucbhelper4MSC.dll!ucbhelper::Content::getPropertyValue(const 
rtl::OUString &
rPropertyName={...})  Line 573 + 0x13 bytes     C++
        ucbhelper4MSC.dll!ucbhelper::Content::isDocument()  Line 1557 + 0x31 
bytes      C++
        ucbhelper4MSC.dll!ucbhelper::Content::openWriteableStream()  Line 1240 
+ 0xb
bytes   C++
        
comphelp4MSC.dll!comphelper::MediaDescriptor::impl_openStreamWithURL(const
rtl::OUString & sURL={...}, unsigned char bLockFile='')  Line 820 + 0x10 bytes 
C++
        
comphelp4MSC.dll!comphelper::MediaDescriptor::impl_addInputStream(unsigned
char bLockFile='')  Line 569 + 0x14 bytes      C++
        comphelp4MSC.dll!comphelper::MediaDescriptor::addInputStreamOwnLock()  
Line
536     C++
 
filterconfig1.dll!filter::config::TypeDetection::impl_openStream(comphelper::MediaDescriptor
& rDescriptor={...})  Line 1149 + 0x9 bytes     C++
        
filterconfig1.dll!filter::config::TypeDetection::impl_askDetectService(const
rtl::OUString & sDetectService={...}, comphelper::MediaDescriptor &
rDescriptor={...})  Line 1003   C++
 
filterconfig1.dll!filter::config::TypeDetection::impl_detectTypeFlatAndDeep(comphelper::MediaDescriptor
& rDescriptor={...}, const
_STL::list<filter::config::FlatDetectionInfo,_STL::allocator<filter::config::FlatDetectionInfo>
> & lFlatTypes={...}, unsigned char bAllowDeep='',
comphelper::SequenceAsVector<rtl::OUString> & rUsedDetectors={...},
rtl::OUString & rLastChance={...})  Line 819 + 0x17 bytes       C++
 
filterconfig1.dll!filter::config::TypeDetection::queryTypeByDescriptor(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>
& lDescriptor={...}, unsigned char bAllowDeep='')  Line 185 + 0x27 bytes       
C++
        fwkmi.dll!framework::LoadEnv::impl_detectTypeAndFilter()  + 0x147 bytes 
C++
        fwkmi.dll!framework::LoadEnv::startLoading()  + 0x69 bytes      C++
        fwkmi.dll!framework::LoadDispatcher::impl_dispatch()  + 0x16d bytes     
C++
        fwkmi.dll!framework::LoadDispatcher::dispatchWithReturnValue()  + 0x32 
bytes    C++
        comphelp4MSC.dll!comphelper::SynchronousDispatch::dispatch(const
com::sun::star::uno::Reference<com::sun::star::uno::XInterface> &
xStartPoint={...}, const rtl::OUString & sURL={...}, const rtl::OUString &
sTarget={...}, const long nFlags=0, const
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> &
lArguments={...})  Line 88 + 0x29 bytes C++
        sofficeapp.dll!desktop::DispatchWatcher::executeDispatchRequests(const
_STL::vector<desktop::DispatchWatcher::DispatchRequest,_STL::allocator<desktop::DispatchWatcher::DispatchRequest>
> & aDispatchRequestsList={...}, bool bNoTerminate=false)  Line 340 + 0x36 
> bytes        C++
 
sofficeapp.dll!desktop::OfficeIPCThread::ExecuteCmdLineRequests(desktop::ProcessDocumentsRequest
& aRequest={...})  Line 989 + 0x1a bytes        C++


>       sal3.dll!osl_getDirectoryItem(_rtl_uString * strFilePath=0x08ec15f0, 
> void * *
pItem=0x014ad224)  Line 3284    C++
        ucpfile1.dll!`anonymous namespace'::generateErrorArguments(const 
rtl::OUString
& rPhysicalUrl={...})  Line 98 + 0x28 bytes     C++
        ucpfile1.dll!fileaccess::throw_handler(long errorCode=11, long 
minorCode=2,
const com::sun::star::uno::Reference<com::sun::star::ucb::XCommandEnvironment> &
xEnv={...}, const rtl::OUString & aUncPath={...}, fileaccess::BaseContent *
pContent=0x08ecb648, bool isHandled=true)  Line 395 + 0x6c bytes        C++
        ucpfile1.dll!fileaccess::TaskManager::endTask(long CommandId=929, const
rtl::OUString & aUncPath={...}, fileaccess::BaseContent * pContent=0x08ecb648) 
Line 105 + 0x1e bytes   C++
        ucpfile1.dll!fileaccess::BaseContent::endTask(long CommandId=929)  Line 
1312 +
0x29 bytes      C++
        ucpfile1.dll!fileaccess::BaseContent::execute(const
com::sun::star::ucb::Command & aCommand={...}, long CommandId=929, const
com::sun::star::uno::Reference<com::sun::star::ucb::XCommandEnvironment> &
Environment={...})  Line 446 + 0x10 bytes       C++
        ucbhelper4MSC.dll!ucbhelper::Content_Impl::executeCommand(const
com::sun::star::ucb::Command & rCommand={...})  Line 1809 + 0x2c bytes  C++
        ucbhelper4MSC.dll!ucbhelper::Content::getPropertyValuesInterface(const
com::sun::star::uno::Sequence<rtl::OUString> & rPropertyNames={...})  Line 686 +
0x53 bytes      C++
        ucbhelper4MSC.dll!ucbhelper::Content::getPropertyValues(const
com::sun::star::uno::Sequence<rtl::OUString> & rPropertyNames={...})  Line 623 +
0x13 bytes      C++
        ucbhelper4MSC.dll!ucbhelper::Content::getPropertyValue(const 
rtl::OUString &
rPropertyName={...})  Line 573 + 0x13 bytes     C++
        ucbhelper4MSC.dll!ucbhelper::Content::isDocument()  Line 1557 + 0x31 
bytes      C++
        ucbhelper4MSC.dll!ucbhelper::Content::openWriteableStream()  Line 1240 
+ 0xb
bytes   C++
        
comphelp4MSC.dll!comphelper::MediaDescriptor::impl_openStreamWithURL(const
rtl::OUString & sURL={...}, unsigned char bLockFile='')  Line 820 + 0x10 bytes 
C++
        
comphelp4MSC.dll!comphelper::MediaDescriptor::impl_addInputStream(unsigned
char bLockFile='')  Line 569 + 0x14 bytes      C++
        comphelp4MSC.dll!comphelper::MediaDescriptor::addInputStreamOwnLock()  
Line
536     C++
 
filterconfig1.dll!filter::config::TypeDetection::impl_openStream(comphelper::MediaDescriptor
& rDescriptor={...})  Line 1149 + 0x9 bytes     C++
        
filterconfig1.dll!filter::config::TypeDetection::impl_askDetectService(const
rtl::OUString & sDetectService={...}, comphelper::MediaDescriptor &
rDescriptor={...})  Line 1003   C++
 
filterconfig1.dll!filter::config::TypeDetection::impl_detectTypeFlatAndDeep(comphelper::MediaDescriptor
& rDescriptor={...}, const
_STL::list<filter::config::FlatDetectionInfo,_STL::allocator<filter::config::FlatDetectionInfo>
> & lFlatTypes={...}, unsigned char bAllowDeep='',
comphelper::SequenceAsVector<rtl::OUString> & rUsedDetectors={...},
rtl::OUString & rLastChance={...})  Line 819 + 0x17 bytes       C++
 
filterconfig1.dll!filter::config::TypeDetection::queryTypeByDescriptor(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>
& lDescriptor={...}, unsigned char bAllowDeep='')  Line 185 + 0x27 bytes       
C++
        fwkmi.dll!framework::LoadEnv::impl_detectTypeAndFilter()  + 0x147 bytes 
C++
        fwkmi.dll!framework::LoadEnv::startLoading()  + 0x69 bytes      C++
        fwkmi.dll!framework::LoadDispatcher::impl_dispatch()  + 0x16d bytes     
C++
        fwkmi.dll!framework::LoadDispatcher::dispatchWithReturnValue()  + 0x32 
bytes    C++
        comphelp4MSC.dll!comphelper::SynchronousDispatch::dispatch(const
com::sun::star::uno::Reference<com::sun::star::uno::XInterface> &
xStartPoint={...}, const rtl::OUString & sURL={...}, const rtl::OUString &
sTarget={...}, const long nFlags=0, const
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> &
lArguments={...})  Line 88 + 0x29 bytes C++
        sofficeapp.dll!desktop::DispatchWatcher::executeDispatchRequests(const
_STL::vector<desktop::DispatchWatcher::DispatchRequest,_STL::allocator<desktop::DispatchWatcher::DispatchRequest>
> & aDispatchRequestsList={...}, bool bNoTerminate=false)  Line 340 + 0x36 
> bytes        C++
 
sofficeapp.dll!desktop::OfficeIPCThread::ExecuteCmdLineRequests(desktop::ProcessDocumentsRequest
& aRequest={...})  Line 989 + 0x1a bytes        C++

So someone should try to figure out if we can reduce it to one call, which would
save a lot of time.

That one call will still take a while, but changing that would be more
complicated - loading the document would need to be done from an other thread,
to not block the main thread. Something we would like to have anyway, but I
guess we still don't have it because it's not that easy. Some time, we really
should start making use of the threading framework that we have introduced some
time ago...

---------------------------------------------------------------------
Please do not reply to this automatically generated notification from
Issue Tracker. Please log onto the website and enter your comments.
http://qa.openoffice.org/issue_handling/project_issues.html#notification

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@framework.openoffice.org
For additional commands, e-mail: issues-h...@framework.openoffice.org


---------------------------------------------------------------------
To unsubscribe, e-mail: allbugs-unsubscr...@openoffice.org
For additional commands, e-mail: allbugs-h...@openoffice.org

Reply via email to