Strict Standards: date_default_timezone_get(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/New_York' for 'EDT/-4.0/DST' instead in /homepages/14/d176026529/htdocs/htdocs/wiki/wiki/includes/Setup.php on line 368
Bug 1976241 - WinMerge Development Wiki

Bug 1976241

From WinMerge Development Wiki
Jump to: navigation, search

This is a status page for Bug #1976241 the winmerge.exe process doesn't stop itself.

Also bugs:

Contents

Status

This is caused by 3rd party program having weird interactions with Winmerge. Not a WinMerge bug.

Caused by Supercopier. Confirmed by bug submitters that disabling Supercopier makes the bug to disappear.

For reference, Supercopier bug: #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.

  1. Start WinMerge
  2. 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: [ 871789 ] Add "Copy to..." items to dirview context menu
  • 955: PATCH: [ 876556 ] (Minor) code cleanup for SaveToFile - submitted by Perry
  • 956: PATCH: 876875 Go To -Dialog
  • 957: PATCH: [ 872413 ] UnpackDFM TestStreamFormat - Submitted by Michael Richter
  • 958: PATCH: [ 878625 ] Simplify and unify file operations calling diff_2_files.
  • 959: PATCH: [ 847121 ] Code cleanup (remove unneeded AssertValid & Dump implementations)
  • 960: PATCH: [ 847121 ] Code cleanup (remove unneeded AssertValid & Dump implementations)
  • 961: PATCH: 876875 Go To -Dialog - Fix crash in GotoDlg. This was in latest patch, but I merged part of older patch :(
  • 962: PATCH: [ 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 880320
  • 966: Add comment explaining Jochen's change
  • 967: Fix bug 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:

  1. CMainFrame::OnClose() gets called and exits, but CMergeApp::ExitInstance() is not called
  2. 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:

  • #2002738 SplashScreen PostNcDestroy does not call base class
  • #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)
  • Call DestroyMenu() for menus before deleting them in CMainMframe destructor. MSDN says it must be called for menus before app exit, but currently we aren't doing that.
Personal tools