[Bug 25749] TortoiseSVN (TortoiseProc.exe) crashes upon exit (OLE teardown)

wine-bugs at winehq.org wine-bugs at winehq.org
Tue Apr 26 11:41:22 CDT 2011


http://bugs.winehq.org/show_bug.cgi?id=25749

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
                 CC|                            |focht at gmx.net
            Summary|TortoiseSVN fails after     |TortoiseSVN
                   |successful commit           |(TortoiseProc.exe) crashes
                   |                            |upon exit (OLE teardown)
     Ever Confirmed|0                           |1

--- Comment #12 from Anastasius Focht <focht at gmx.net> 2011-04-26 11:41:22 CDT ---
Hello,

confirming, crashes on exit.
This issue does not only apply to commits, you can also reproduce with other
commands.

Fun fact: it seems using builtin msvcr90 prevents the crash at the end.
This is most likely due to some stuff not really implemented/stubbed...

WINEDLLOVERRIDES="msvcr90=b" wine "C:\Program
Files\TortoiseSVN\bin\TortoiseProc.exe" /command:commit .

Crash:

WINEDLLOVERRIDES="msvcr90=n" wine "C:\Program
Files\TortoiseSVN\bin\TortoiseProc.exe" /command:commit .

The code where the crash occurs is most likely the following
(CrashRpt.UninstallEx -> in CCrashHandler destructor):

https://tortoisesvn.googlecode.com/svn/trunk/src/crashrpt/CrashHandler.cpp

The crash is triggered in ole32.CoUninitialize() teardown.

There are at least 6 open bugs when searching for that offending "cross process
drap & drop" commit:

http://bugs.winehq.org/buglist.cgi?query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=RESOLVED&longdesc=6d1ef3a6a64f0fabf05ce1bba5f0ec4373684786&longdesc_type=allwordssubstr

--- snip ---
0009:Call ole32.RegisterDragDrop(00010086,00ee28b0) ret=00e8c817 
...
0009:Ret  ole32.RegisterDragDrop() retval=00000000 ret=00e8c817
...
0009:Call ole32.RegisterDragDrop(00010088,00bf53a8) ret=00460ac9 
...
0009:Ret  ole32.RegisterDragDrop() retval=00000000 ret=00460ac9
...
0009:Call ole32.RevokeDragDrop(00010086) ret=00e8c06a
...
0009:Ret  ole32.RevokeDragDrop() retval=00000000 ret=00e8c06a
0009:Call ole32.OleUninitialize() ret=00e8f051
0009:Ret  ole32.OleUninitialize() retval=00000000 ret=00e8f051 
...
0009:CALL CrashRpt.UninstallEx(<unknown, check return>) ret=0070e389 
...
0009:Call ole32.CoUninitialize() ret=02001459 
...
*boom*
--- snip ---

Revoke is only called for one window before OLE is teared down finally.

Reverting back to old behavior in RegisterDragDrop() and RevokeDragDrop()
prevents the crash.
Other bugs might be dupes of each other.

Regards

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list