[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: SVN hangs sometims on commit dialog

From: Stefan Küng <tortoisesvn_at_gmail.com>
Date: Mon, 12 Nov 2012 21:57:51 +0100

On 12.11.2012 11:59, Thijs de Ridder wrote:
> I tried to turn off:
>> Settings dialog->dialogs 2->Commit->use auto-completion...
> I was still able to let the commit log fail.
> I noticed some other aspects when it failed and when not. I don't
> know if it is useful information, so I report it here anyway.
> Today, the first time I was able to get the commit dialog normally. I
> didn't make a commit, just clicked the dialog away. I did a "check
> for modification", it was successful. I did an update, which was
> successful (no changes to the working copy, I was already up to date
> with head). Then I did a commit again, which hang again. I did all
> these steps to the root of my working copy, which is a check out of
> the root of the repository.
> I then changed one of the tortoisesvn settings. (I can't recall
> exactly which, but it was the 'Debug' or the 'DebugOutputString', I
> turned them both on and off today). After changing those settings,
> and without doing anything else (so I didn't do a PC restart or a
> 'clean up') on a commit, the commit dialog appeared again.
> I did some 'check for modifications' and updates, and then the commit
> dialog hang.
> At that point I started the commit with procdump. I have the log
> file, I won't send it to the list, because of the size, I will send
> it to you personally Stefan.

I've analyzed the process dump you sent me. Here's what I found:

The commit dialog (and various other dialogs in TSVN) show file icons
for list entries. In the commit dialog, you see a txt icon for text
files, html icon for html files and so forth. The same happens in the
repository browser.

To get those icons, TSVN uses the shell API SHGetFileInfo(). If you look
at the API docs:

you can see that if the flag SHGFI_USEFILEATTRIBUTES is specified, " the
function should not attempt to access the file specified by pszPath".
That's because e.g. in the repo browser, the files are not physically
available. They mostly are in the commit dialog, but the commit dialog
also shows missing and deleted files as well, and those files are not
available either.
And TSVN does not pass full paths to this API anyway since it's not
necessary if the flag SHGFI_USEFILEATTRIBUTES is specified. So it would
be very, very rare that an icon handler could even find the file at all.

Now what's happening on your machine is that you've got an icon handler
installed that should return the icon of such a file. But it's faulty in
that it doesn't handle situations where the file isn't available and
then simply hangs/blocks. Not sure if it always blocks under these
circumstances, but it blocks in the process dump you've sent me.

The icon handler is inside the sldwinshellextu.dll which is according to
web search from SolidWorks.

You can try and deregister the icon handler for testing:

regsvr32 sldwinshellextu.dll /u

would deregister the handler. I think that will solve the problems
you're experiencing.


   oo  // \\      "De Chelonian Mobile"
  (_,\/ \_/ \     TortoiseSVN
    \ \_/_\_/>    The coolest Interface to (Sub)Version Control
    /_/   \_\     http://tortoisesvn.net
To unsubscribe from this discussion, e-mail: [users-unsubscribe_at_tortoisesvn.tigris.org].
Received on 2012-11-12 21:58:28 CET

This is an archived mail posted to the TortoiseSVN Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.