Perl/Tk "Hänger" auf manchen Windows PCs: Gibt es einen verborgenen Cache?
Perl/Tk "Hänger" auf manchen Windows PCs: Gibt es einen verborgenen Cache?
am 15.06.2007 18:24:34 von pchr
Hallo,
mein Programm, "kompiliert" mit perl2exe läuft auf meinem und etlichen
PCs, vorwiegen Windows XP Maschinen, munter wie es soll. Es ist eine
Trainingsoftware bei der jeweils 7 Übungen nacheinander
abgespielt werden, jeweils unterbrochen von einem Anweisungsfenster in
dem ein Countdown läuft.
Plötzliche Hänger tauchen über die ganze Palette der Übungen auf
verschiedenen PCs auf, wobei jeder dieser PCs seine Lieblingshänger
hat. Bei zwei PCs bleibt das Countdownfenster offen und verdeckt genau
eine bestimmte Übung, egal ob sie nun an dritter oder sechster Stelle
abgespielt wird. Einer der PC läuft unter Vista, der andere unter XP.
Ein Reboot und Start des Programms als erstes ändert nichts.
Bei anderen beliebt das Programm mitten in einer Übung stecken zu
bleiben. Oft scheint es so, dass sich das Problem mit der Zeit
verschärft. Zuerst tritt es sporadisch auf, dann permanent.
Fehlermeldungen erscheinen keine.
Kann es sein, dass Perl oder Tk auf den PCs einen Cache einrichtet,
auf den immer wieder zugegriffen wird beim nächsten Start des
Programms? Ich kann mir auf dieses Verhalten keinen Reim machen.
Hat jemand eine Idee, wie man solche Fehler einkreist?
Vielen Dank!
Patrck
Re: Perl/Tk "Hänger" auf manchen Windows PCs: Gibt es einen verborgenen Cache?
am 15.06.2007 19:24:18 von Frank Seitz
pchr wrote:
> Hat jemand eine Idee, wie man solche Fehler einkreist?
Erster Schritt: Ausprobieren, wie es sich ohne perl2exe verhält.
Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Re: Perl/Tk "Hänger" auf manchen Windows PCs: Gibt es einen verborgenen Cache?
am 18.06.2007 06:58:56 von pchr
> Erster Schritt: Ausprobieren, wie es sich ohne perl2exe verhält.
>
Danke Frank!
Leider habe ich keinen Zugriff auf die PCs. Aber auf meinem
vorherigen PC, auch unter XP, habe ich manchmal ähnliches
auch direkt mit Perl erlebt.
Grüße
Patrick
Re: Perl/Tk "Hänger" auf manchen Windows PCs: Gibt es einen verborgenen Cache?
am 18.06.2007 12:56:39 von Robert Berghaus
pchr schrieb:
>> Erster Schritt: Ausprobieren, wie es sich ohne perl2exe verhält.
>>
> Danke Frank!
> Leider habe ich keinen Zugriff auf die PCs. Aber auf meinem
> vorherigen PC, auch unter XP, habe ich manchmal ähnliches
> auch direkt mit Perl erlebt.
>=20
Startest du das Programm mit Doppelklick oder aus einem Fenster=20
(mit perl programmname ...)?
Wenn Doppelklick, dann bitte von der Kommandozeile.
Wenn Kommandozeile, gibt es irgendwelche Ausgaben?
Warnungen werden bevorzugt auf der Kommandozeile ausgegeben.
Kannst Du das Fehlverhalten in einem Minimalprogramm nachvollziehen?
Welche Perl und welche Perl/Tk Version benutzt Du?
Schönen Gruß aus dem Bergischen Land
Robert
Re: Perl/Tk "Hänger" auf manchen Windows PCs: Gibt es einen verborgenen Cache?
am 18.06.2007 15:57:30 von pchr
Danke für die Tips, Robert!
ich habe stderr in eine Datei umgeleitet.
Wenn Fehlermeldungen erzeugt würden,
müssten sie dort auftauchen, denke ich.
Tun sie aber nicht.
Minimalprogramm? Kaum machbar.
Bei mir selbst treten die Fehler nicht auf,
bei Benutzern an unterschiedlichen Stellen.
Das Seltsame ist eben, dass sich manches
Fehlverhalten mit der Zeit verschlimmert,
als würde sich irgendwo etwas ansammeln.
Perlversion:
This is perl, v5.8.8 built for MSWin32-x86-multi-thread
Binary build 820 [274739] provided by ActiveState http://www.ActiveState.com
Built Jan 23 2007 15:57:46
Welche Tk-Version da drin steckt, weiss ich nicht.
Schönen Gruß von Peenemünde
Patrick
Re: Perl/Tk "Hänger" auf manchen Windows PCs: Gibt es einen verborgenen Cache?
am 19.06.2007 11:56:35 von Robert Berghaus
Hallo Patrick
pchr schrieb:
> Danke für die Tips, Robert!
>=20
> ich habe stderr in eine Datei umgeleitet.
> Wenn Fehlermeldungen erzeugt würden,
> müssten sie dort auftauchen, denke ich.
> Tun sie aber nicht.
>=20
Probier' doch mal aus, ob sie auch wirklich dort landen (warn=20
"irgendeine Meldung").
> Minimalprogramm? Kaum machbar.
> Bei mir selbst treten die Fehler nicht auf,
> bei Benutzern an unterschiedlichen Stellen.
> Das Seltsame ist eben, dass sich manches
> Fehlverhalten mit der Zeit verschlimmert,
> als würde sich irgendwo etwas ansammeln.
>=20
Du könntest in jede Funktion einen Debugaufruf setzen (möglichst=20
ganz oben). Meiner sieht so aus:
MkDebug("Aufgerufen mit (@_)");
Die sub MkDebug sieht bei mir dann so aus:
sub MkDebug {
my($sText) =3D @_;
my $sFunktion =3D (caller(1))[3];
if ( !defined($sFunktion) ) {
$sFunktion =3D "main";
} else {
$sFunktion =3D ($sFunktion =3D~ /^main\:\:(.*)$/) ? $1 :=20
$sFunktion; # gehört noch zur vorherigen Zeile
}
Hier kannst Du auch die Datei öffnen, den Text schreiben und die=20
Datei wieder schließen. Dürfte in Deinem Fall sinnvoll sein.
if ($gv{fDebug}) {
if ($gv{fDebugOpen}) {
print DEBUG "$sFunktion:\t$sText\n";
print "$sFunktion:\t$sText\n" if ($gv{fAusgabe});
} else { print "Debuglogdatei ist noch nicht offen!=20
$sFunktion:\t$sText\n" if ($gv{fAusgabe}); } # wie oben
}
return 0;
}
Jetzt kannst Du Dir mit "tail -f Debugdatei" diese ansehen und=20
auch feststellen, in welcher Funktion es klemmt.
> Perlversion:
> This is perl, v5.8.8 built for MSWin32-x86-multi-thread
> Binary build 820 [274739] provided by ActiveState http://www.ActiveStat=
e.com
> Built Jan 23 2007 15:57:46
> Welche Tk-Version da drin steckt, weiss ich nicht.
>=20
$Tk::VERSION
Schönen Gruß aus dem Bergischen Land
Robert
Re: Perl/Tk "Hänger" auf manchen Windows PCs: Gibt es einen verborgenen Cache?
am 20.06.2007 08:55:12 von pchr
Vielen Dank Robert!
Ich werde Deine Vorschläge mal
einbauen und schauen, ob sich
was ergibt.
Schönen Gruß aus Vorpommern
Patrick
Re: Perl/Tk "Hänger" auf manchen Windows PCs: Gibt e
am 21.06.2007 10:06:45 von KWittrock
"pchr" schrieb im Newsbeitrag
news:1182322512.917414.17260@m36g2000hse.googlegroups.com...
> Vielen Dank Robert!
>
> Ich werde Deine Vorschläge mal
> einbauen und schauen, ob sich
> was ergibt.
>
> Schönen Gruß aus Vorpommern
> Patrick
Hallo Patrick,
ich habe gerade einen Hänger in Perl/Tk besiegt und kann dir daher
vielleicht einen etwas gezielteren Hinweis geben. In eine Subroutine, die
häufig aufgerufen wird, hatte ich die Anweisungen
$w->toplevel->deiconify();
$w->toplevel->raise();
eingebaut, um sicherzustellen, dass das Fenster nicht von anderen Fenstern
verdeckt wird. Unter seltenen (zum Glück reproduzierbaren) Umständen trat
der Hänger auf. Er verschwand nach dem Entfernen des deiconify, genauer
gesagt nach der Änderung zu
$w->toplevel->deiconify() unless $Tk::platform eq 'MSWin32';
Halte also mal Ausschau nach entbehrlichen Aufrufen von deiconify,
vielleicht hast du ja Glück.
Gruß
Klaus
Re: Perl/Tk "Hänger" auf manchen Windows PCs: Gibt es einen verborgenen Cache?
am 27.06.2007 11:40:04 von pchr
Vielen Dank Klaus!
(habe ich vor einigen Tagen schon geantwortet,
aber anscheinend ist das schief gegangen)
Ich habe Deinen Vorschlag mal implementiert
und warte auf Feedback.
Gruß
Patrick