poedit icon indicating copy to clipboard operation
poedit copied to clipboard

GUI becomes unresponsive when validating a specific .po-file

Open sebras opened this issue 7 years ago • 3 comments

When validating the strings of this .po-file in Poedit 2.0.5 I end up in a situation where the GUI becomes entirely unresponsive. I tested the same file in Poedit 2.0.4 and the issue does not appear there.

By running git bisect and compiling Poedit (with debug enabled) I learned that it is commit da949dcf64b810176df4ff15c850357fb7f69cc2 that introduces the issue for me (the commit prior, 7cd6eac8943b4452a0304c976d82a4a4091d1cec does not exhibit the problem).

To reproduce:

  1. Run: poedit gimp-master-po-sv-23093.merged.po Then I see: poedit1
  2. Click on the Validate toolbar button. For a split second I see: poedit2
  3. Next I wait for the dialog box to pop up (note that the list of strings has changed back to those from step 1): poedit3
  4. if I drag another window over Poedit's window it fails to redraw the contents: poedit4
  5. If I drag another window over both Poedit's window and its dialog box, it fails to redraw the contents, but successfully redraws the dialogbox: poedit5
  6. Next I click on OK in the dialog box and the window contents fails to redraw and the GUI is entirely unresponsive: poedit6

I attempted to debug this further, this is what I found (hopefully it helps you nail it down quicker):

When trying to minimize the .po-file, it sometimes worked, and sometimes did not. I noticed that when it didn't work step 2 occurred, but when it worked step 2 never ocurred. I think it might be a timing issue on a sufficiently big .po-file that has both untranslated messages and warnings.

Just as a test I removed the the call to Sort() in PoeditFrame::OnValidate. When I did that of course the lines were not sorted, but crucially the issue did not appear. I noticed that Sort() ends up as a call to PoeditListCtrl::Sort() which creates a SelectionPreserver. As my next test I reinstated the call to Sort() in PoeditFrame::OnValidate() but removed the call to list->SetCurrentItem(item) from ~SelectionPreserve. When I did this the issue also stopped to appear. Despite discovering this I don't understand where the issue comes from.

I'm happy to help with further testing if you have trouble reproducing this issue.

Ďakujem vám, že ste rozvíjali Poedit! :)

sebras avatar Dec 19 '17 00:12 sebras

Thanks for the detailed investigation! Can you please provide missing basics such as your platform and its version (GTK+ 2.x.y or 3.x.y, wxGTK version; distro)?

Ďakujem vám, že ste rozvíjali Poedit! :)

You're mistaken in your assumption...

vslavik avatar Dec 19 '17 14:12 vslavik

Thanks for the detailed investigation!

As a developer myself I appreciate detailed and clear bug reports. I try to provide other developers with the same.

Can you please provide missing basics such as your platform and its version (GTK+ 2.x.y or 3.x.y, wxGTK version; distro)?

Ah, yes, I should have realized this myself (though it would have been good if Poedit's issue guidelines here on github reminded me about this, I assume you have to ask about this pretty frequently).

I'm using Debian/testing which means that I used Poedit 2.0.5-1 from Debian and my locally compiled Poedit is on commit 4dc421578f2bb24c24d2db5a896070f9c534dd8b. Both are using GTK+ 2.24.31-2 and wxGTK 3.0.3.1+dfsg2-0v5.

You're mistaken in your assumption...

Agh, I mixed up the languages for a bit. What I should have written was of course: Děkuji za rozvíjení společnosti Poedit! :)

sebras avatar Dec 19 '17 15:12 sebras

I can't reproduce with wx 3.0.3 and GTK+ 2.24.31 on Fedora :(

vslavik avatar Jan 11 '18 15:01 vslavik

I can't reproduce with wx 3.0.3 and GTK+ 2.24.31 on Fedora :(

...and because I can't reproduce it with more modern versions of wx and GTK+ either, I think it's safe to close this now.

vslavik avatar Dec 08 '23 18:12 vslavik