-
Notifications
You must be signed in to change notification settings - Fork 1
/
Bug_1976241.txt
98 lines (74 loc) · 5.16 KB
/
Bug_1976241.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
This is a status page for Bug {{Bug|1976241|#1976241}} the winmerge.exe process doesn't stop itself.
Also bugs:
* {{Bug|1602313|#1602313}} WinMerge stays in tasklist after closing
* {{Bug|1596220|#1596220}} memory leaks
== Status ==
<div class="warning">This is caused by 3rd party program having weird interactions with Winmerge. Not a WinMerge bug.</div>
Caused by [http://supercopier.sfxteam.org/modules/mydownloads/ Supercopier]. Confirmed by bug submitters that disabling Supercopier makes the bug to disappear.
For reference, Supercopier bug:
[http://sourceforge.net/tracker/index.php?func=detail&aid=1547940&group_id=171408&atid=857860 #1547940 Incompatibilit avec WinMerge]
== Short Description ==
For some users, WinMerge executable process does not exit properly. The process is left in some kind of stuck state.
== Resolution ==
Release notes item will be added covering this.
== Affecting ==
=== Users ===
Some. It is not known what triggers this. No complaints from experimental builds, but pretty quick reports after stable releases.
=== Versions ===
Stable releases 2.2.0 and all later versions. 2.0.2 stable version is not affected. Earlier we thought it was only 2.6.0 and later, but Gordon tested that 2.2.0 and 2.4.0 did hang too.
This rules out lots of stuff, like pcre/expat libraries, lots of new features etc.
The bug appears between experimental builds 2.1.5.6 and 2.1.5.7.
Log:
*2008-06-26: 2.2.0 and 2.4.0 stable releases don't work either
*2008-06-28: We finally have a working (2.0.2) and non-working version (2.2.0)! This is lots of patches still, but now we can look at beta- and experimental releases.
*2008-06-30: We have working and non-working experimental build. 2.1.5.6 works and 2.1.5.7 does not work.
*2008-07-01: Takashi found out that Supercopier is causing this bug. Case closed.
== Reproducing ==
Simple, happens every time for affected users.
# Start WinMerge
# Close WinMerge
Expected:
* WinMerge exits
Actual:
* WinMerge is left hanging in the screen
== Additional Information ==
Things known to not affect:
* plugins (none installed for affected user)
* single-instance
* archive support
* File/Folder compare frames/views/docs - opening just main window causes the bug
== Subversion revisions ==
Since we used CVS at that time, Subversion revisions are generated by conversion script and may not be always accurate. However, looks like 2.1.5.6 was released from subversion revision '''952''' and 2.1.5.7 was released from revision '''969'''.
List of revisions:
* 952: Remove _T()'s from _RPTF() macros (forgot to do before last checkin)
* 953: Fix bug in UniFile::WriteString counting of written bytes.
* 954: PATCH: [ {{Patch|871789|871789}} ] Add "Copy to..." items to dirview context menu
* 955: PATCH: [ {{Patch|876556|876556}} ] (Minor) code cleanup for SaveToFile - submitted by Perry
* 956: PATCH: {{Patch|876875|876875}} Go To -Dialog
* 957: PATCH: [ {{Patch|872413|872413}} ] UnpackDFM TestStreamFormat - Submitted by Michael Richter
* 958: PATCH: [ {{Patch|878625|878625}} ] Simplify and unify file operations calling diff_2_files.
* 959: PATCH: [ {{Patch|847121|847121}} ] Code cleanup (remove unneeded AssertValid & Dump implementations)
* 960: PATCH: [ {{Patch|847121|847121}} ] Code cleanup (remove unneeded AssertValid & Dump implementations)
* 961: PATCH: {{Patch|876875|876875}} Go To -Dialog - Fix crash in GotoDlg. This was in latest patch, but I merged part of older patch :(
* 962: PATCH: [ {{Patch|880046|880046}} ] Save every line including last one in SaveToFile
* 963: UniStdioFile::OpenCreateUtf8 (shortcut for creating UTF-8 file)
* 964: Finish Merge7z integration
* 965: Fix bug {{Bug|880320|880320}}
* 966: Add comment explaining Jochen's change
* 967: Fix bug {{Bug|880320|880320}}
* 968: Add comment for "2004-01-16 WinMerge experimental release 2.1.5.6 (cvs)".
* 969: 2004-01-20 WinMerge experimental release 2.1.5.7 (cvs)
== Done So Far ==
Kimmov has created executables with additional logging, which has revealed/confirmed:
# CMainFrame::OnClose() gets called and exits, but CMergeApp::ExitInstance() is not called
# Splash screen code is not involved when splash screen is disabled
1. Is the base reason of this bug. CWnd::OnClose() (which our CMainFrame::OnClose() overrides) checks if the application can be closed, if there are open references etc. And people have seen hangs when there has been some external libraries etc having references open, preventing CWnd::OnClose() sending close message. After that the framework would call CMergeApp::ExitInstance().
Patches:
* {{Patch|2002738|#2002738}} SplashScreen PostNcDestroy does not call base class
* {{Patch|2004385|#2004385}} Detach menus before destroying
Both patches are real bugs, but they do not have affect to this bug.
== Ideas to Try ==
Should try to:
* disable splash screen (eats events)
* remove CMainFrm::PreTranslateMessage() special handling (for ESC key)
* <strike>Call DestroyMenu() for menus before deleting them in CMainMframe destructor. [http://msdn.microsoft.com/en-us/library/ms647631(VS.85).aspx MSDN] says it must be called for menus before app exit, but currently we aren't doing that.</strike>