SVN hangs sometims on commit dialog

1,127 views
Skip to first unread message

Thijs de Ridder

unread,
Nov 8, 2012, 3:50:39 AM11/8/12
to us...@tortoisesvn.tigris.org
I have a certain working copy where tortoiseSVN hangs sometimes when I try to commit or execute a check for modification (didn't try all svn commands, so other might fail as well). This repository is a little different than the other repositories I'm working with. This repository contains mainly binary fails, varying in size from a couple of KB to a couple of MB.

To reproduce the problem I click right on a certain file in the working copy and click on commit. The commit dialog appears and will not show the file to commit. After a couple of seconds it says "not responding". I had the dialog in this state for more then half an hour, but nothing changes. During this time, the corresponding TortoiseProc.exe takes about 13% of the CPU (on Core i7 860).

I tried to run a clean up on the root of the working copy. This didn't help to solve the problem. After I restarted my computer, I was able to commit a couple of files (3 commits this time, with a different number of files). After those commits, it failed again and the commit dialog hangs.

To see what is the problem, I recorded a successful commit dialog (on a different repository) and the failing commit dialog with DebugView. Attached are both log files.

We had this problem once before. Back then SVN 1.7 was just released. A colleague worked with SVN 1.7 and wasn't able to commit. I was still using SVN version 1.6 at the time and copied his files in my working copy. I was then able to commit them. We didn't investigate the problem any further back then. We do have another repository with mainly binary files. We use that repository far more often then the repository that gives us trouble now. We never encountered problems of this kind in that repository.

Has anybody any idea what can cause this, or how I can further investigate what the problem is?

My system:
Windows 7 professional 64bit (Dutch)
TortoiseSVN 1.7.10, Build 23359 - 64 Bit , 2012/10/08 11:46:26

If any additional information can help, please ask.

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3026805

To unsubscribe from this discussion, e-mail: [users-un...@tortoisesvn.tigris.org].
svn_commit_dialog_ok.log
svn_commit_dialog_fail.log

Stefan Küng

unread,
Nov 10, 2012, 3:19:06 AM11/10/12
to us...@tortoisesvn.tigris.org
On 08.11.2012 09:50, Thijs de Ridder wrote:
> I have a certain working copy where tortoiseSVN hangs sometimes when I try to commit or execute a check for modification (didn't try all svn commands, so other might fail as well). This repository is a little different than the other repositories I'm working with. This repository contains mainly binary fails, varying in size from a couple of KB to a couple of MB.
>
> To reproduce the problem I click right on a certain file in the working copy and click on commit. The commit dialog appears and will not show the file to commit. After a couple of seconds it says "not responding". I had the dialog in this state for more then half an hour, but nothing changes. During this time, the corresponding TortoiseProc.exe takes about 13% of the CPU (on Core i7 860).
>
> I tried to run a clean up on the root of the working copy. This didn't help to solve the problem. After I restarted my computer, I was able to commit a couple of files (3 commits this time, with a different number of files). After those commits, it failed again and the commit dialog hangs.
>
> To see what is the problem, I recorded a successful commit dialog (on a different repository) and the failing commit dialog with DebugView. Attached are both log files.
>
> We had this problem once before. Back then SVN 1.7 was just released. A colleague worked with SVN 1.7 and wasn't able to commit. I was still using SVN version 1.6 at the time and copied his files in my working copy. I was then able to commit them. We didn't investigate the problem any further back then. We do have another repository with mainly binary files. We use that repository far more often then the repository that gives us trouble now. We never encountered problems of this kind in that repository.
>
> Has anybody any idea what can cause this, or how I can further investigate what the problem is?
>
> My system:
> Windows 7 professional 64bit (Dutch)
> TortoiseSVN 1.7.10, Build 23359 - 64 Bit , 2012/10/08 11:46:26
>
> If any additional information can help, please ask.

The log files don't really show why it hangs.
But try this:
Settings dialog->dialogs 2->Commit->use auto-completion...
uncheck that setting and try again.

if it still hangs, get ProcDump:
http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx

run
procdump -e -h -ma -w tortoiseproc
then start the commit dialog.
As soon as it hangs ("not responding") a dump file is written. Send me
that dump please.

Stefan

--
___
oo // \\ "De Chelonian Mobile"
(_,\/ \_/ \ TortoiseSVN
\ \_/_\_/> The coolest Interface to (Sub)Version Control
/_/ \_\ http://tortoisesvn.net

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3027272

Thijs de Ridder

unread,
Nov 12, 2012, 5:59:26 AM11/12/12
to us...@tortoisesvn.tigris.org
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.

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3027760

Stefan Küng

unread,
Nov 12, 2012, 3:57:51 PM11/12/12
to us...@tortoisesvn.tigris.org
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:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762179%28v=vs.85%29.aspx

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:
https://forum.solidworks.com/thread/9428

regsvr32 sldwinshellextu.dll /u

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

Stefan

--
___
oo // \\ "De Chelonian Mobile"
(_,\/ \_/ \ TortoiseSVN
\ \_/_\_/> The coolest Interface to (Sub)Version Control
/_/ \_\ http://tortoisesvn.net

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3027879

Thijs de Ridder

unread,
Nov 13, 2012, 3:01:24 AM11/13/12
to us...@tortoisesvn.tigris.org
It works!

The repository contains SolidWork files indeed. After running:
> regsvr32 sldwinshellextu.dll /u
in the solidworks directory, the problem didn't occur anymore. So this seems to solve the problem I experienced.

Thanks a lot Stefan.

Thijs


-----Oorspronkelijk bericht-----
Van: Stefan Küng [mailto:torto...@gmail.com]
Verzonden: maandag 12 november 2012 22:00
Aan: us...@tortoisesvn.tigris.org
Onderwerp: Re: SVN hangs sometims on commit dialog
To unsubscribe from this discussion, e-mail: [users-un...@tortoisesvn.tigris.org].

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3027993
Reply all
Reply to author
Forward
0 new messages