0

I have a Delphi 5-based application using madExcept 3.0m. It appearantly freezes due to madExcept, a product whose quality I admire and thus don't usually blame for anything.

Here's the code:

  AddLogEntry('ME_Settings');
  try
    AddLogEntry('ME_Settings2');
    with MESettings do begin                     // madExcept-Einstellungen
      AddLogEntry('FrozenMsg');
      sOldFrozenMsg := FrozenMsg;
      AddLogEntry('Meldung vorbereiten');
      FrozenMsg := AnsiString(_('Das Öffnen der Datenbank dauert ungewöhnlich lang.'));
      AddLogEntry('Remote?');
      [...]
    end;
  finally
    [...]
  end;

It doesn't throw any exception, it just seems to freeze upon reading FrozenMsg:
(source: quodata.de)

It doesn't happen on any of my computers, but does at the customer computer. How can madExcept's MESettings cause such a behaviour. How should I debug this?

Community
  • 1
  • 1
Gogowitsch
  • 1,181
  • 1
  • 11
  • 32
  • 2
    Did you ask on the ME forum? Matthias is usually very responsive. – David Heffernan Mar 04 '13 at 14:00
  • When your program freezes, what is it doing? Pause it in the debugger and find out. – Rob Kennedy Mar 04 '13 at 14:13
  • @David: Thanks for sending me there: http://forum.madshi.net/viewtopic.php?f=4&t=27497 – Gogowitsch Mar 04 '13 at 14:35
  • @Rob: Unfortunately, I cannot remote-debug on the customer computer and cannot reproduce the problem locally yet. – Gogowitsch Mar 04 '13 at 14:37
  • 1
    What is that `_('thing')`? – Warren P Mar 05 '13 at 02:58
  • @WarrenP: Indeed, someone came up with this function name. Is is a shorthand for gettext(), a widespread translation system based on .po and .mo files. Implementations exist for many languages. – Gogowitsch Mar 05 '13 at 07:46
  • I quite like the use of the shortest most meaningless pascal identifier, `_` – David Heffernan Mar 05 '13 at 11:39
  • So you HAVE removed MadExcept and sent a build to the customer, and the customer does NOT freeze? :-) – Warren P Mar 05 '13 at 13:17
  • @WarrenP: Thanks for your feedback. It would be quite cumbersome to remove madExcept from the project entirely, because we make heavy use of many of its features. On the other hand, I tried an exe file without the freeze check (disabled via Project settings - .mes file) - same behaviour. I currently think that not madExcept, but something on the customer computer is causing the freeze. – Gogowitsch Mar 06 '13 at 09:09
  • By heavy use you mean you repeatedly call MadExcept in hundreds of places in your code? So mock it out. Create unit aliases and mock units. I am sure I could do that in minutes, if not ever faster via #ifdefs. – Warren P Mar 06 '13 at 11:21

1 Answers1

0

We have now deployed a regular update using a regular (and very same) madExcept 3.0m to the customer. It worked. They replaced the computer due to other problems, so I am quite confident that the problem was with the specific computer and nothing needs to be fixed in madExcept or our products.

Gogowitsch
  • 1,181
  • 1
  • 11
  • 32