INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Installiertes Programm macht Fehler beim Beenden



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

10.07.2008, 08:35 (Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2008 08:44 von rolfk.)
Beitrag #41

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Installiertes Programm macht Fehler beim Beenden
' schrieb:die Quit LabVIEW Primitive ist (bei mir) die letzte Funktion überhaupt, die im Haupt-VI aufgerufen wird. vorher wurde schon alles "sauber" deinitialisiert, etc - da läuft definitiv nix mehr in der ganzen VI Hierarchie, wenn diese Funktion dran kommt - und dient eigentlich nur dazu der LV Runtime Engine den Befehl zu geben "so, jung, wir sind feddich hier, kannst abbaun!";)

ansonsten stimme ich dir zu: ein laufendes Programm mit "aktiven Schleifen", etc einfach so mit "quit LabVIEW" oder der "Stop"-Primitive zu beenden ist schon sehr sehr unsauber und brachial ...

Wenn Du Dein Programm so strukturiert hast brauchst Du das Quit gar nicht mehr. Sobald Du das letzte verbliebene Frontpanel innerhalb einer Exe schliesst beendet sich das Exe automatisch. Das ist schon so gewesen seit es LabVIEW Exes gibt und war für gewisse Leute ein Grund zum meckern da sie dadurch keine unsichtbaren LabVIEW Deamons programmieren zu können glaubten. (Glaubten deshalb weil es doch geht. Man muss nur erst eine VI Referenz zu dem VI selber öffnen und solange die innerhalb einer Running VI-Hierarchy aktiv bleibt bleibt das entsprechende VI auch im Speicher).

Der einzige Grund warum ein LabVIEW Exe sich nicht ordentlich verabschiedet obwohl alle aktiven VI Referenzen geschlossen wurden und das letzte Frontpanel ebenfalls, ist wenn das LabVIEW Programm noch irgendwo in einem Treiber stecken bleibt. Das braucht nicht mal in einem Aufruf zur Treiber-DLL selber zu sein sondern kann auch in der Cleanuproutine dieses Treibers sein. Aber:

1) ist das dann irgendwie ein Bug im entsprechenden Treiber und
2) hilft LabVIEW Quit hier auch nicht

Mit dem Quit deckst Du im Prinzip nur eventuel nicht ordentlich abgeschlossene Tasks (Deamons, Loops, etc) und im Falle von buggy DLL Treibern die sich beim Unloaden verheddern wenn noch Resourcen durch die Applikation geöffnet sind, kannst Du sogar einen Zombieprozess erzeugen:

Das LabVIEW Programm wurde gewaltsam beendet bevor der Task der die Resource verwaltet die Möglichkeit hatte um diese ordentlich abzuschliessen und ist nun selber weg aber der Prozess wird durch den fehlerhaften Treiber daran gehindert wirklich aus dem Speicher entfernt zu werden.

Die Folge ist dass Du den Zombie nur noch durch den Task Manager beenden kannst und wenn sich der Treiber in den Tiefen des Windows Kernels selber verirrt hat eventuel gar nicht mehr. Und wer hier nun sagt dass das in Windows 32bit nicht geht dem kann ich nur sagen dass ich das selber so gesehen habe. Die einzige Lösung um dann wieder zu einem funktionierenden System zu kommen ist der Powerknopf.

Ich programmiere nun schon über 16 Jahre in LabVIEW, beinahe 12 davon professionel als Alliance Member und ich habe die Quit-Funktion noch in keiner Applikation eingebaut. Ist einfach nicht nötig da ich ganz einfach dafür sorge dass sich alle Loops ordentlich beenden und als Letztes macht das HauptVI das Licht aus indem es ganz einfach ein FP.Close macht. Wenn dann noch etwas läuft habe ich was falsch gemacht, das durch die Quit-Funktion höchstens kaschiert würde.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.07.2008, 09:06 (Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2008 09:10 von rolfk.)
Beitrag #42

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Installiertes Programm macht Fehler beim Beenden
' schrieb:Ich hab das jetzt mal ausprobiert mit der Methode FP.Close und der Eigenschaft FP.Open=false. Ich muss schon sagen - lange nicht mehr so viel Mist gesehen.

Was mach ich denn, wenn das VI in der IDE läuft? Nicht nur, dass auch das BD geschlossen wird - schließlich heißt es FP, und nicht FP+BD oder auch VI -, nein, es werden auch alle Änderungen im BD ignoriert, also verworfen - und das ohne nachzufragen. Wenn ich in der IDE bin, also keine EXE, möchte ich gerne haben, dass das BD offen bleibt, wenn ich es auf gemacht habe.

Du regst Dich hier ganz unnötig auf! Wer hindert Dich denn daran da FP.Close nur auszuführen wenn Du in einem Exe bist??

Und dass da FP.Close steht aber das Diagramm auch dicht geht hat einen ganz einfachen Grund der aus den Urzeiten von LabVIEW stammt. Das VI und alle darunterliegenden Dinge hingen damals ganz einfach am Frontpanel. Heute ist das wohl grundsätzlich etwas anders da FP != VI ist aber damals war es grundsätzlich unmöglich um ein BD offen zu haben ohne dass das FP auch offen ist. Und dieses Verhalten wurde bis heute ganz einfach beibehalten und das finde ich auch ganz logisch, aber vielleicht ist das ja nach >16 Jahren LabVIEW ganz einfach "deformation professional". Big Grin

' schrieb:Da bei Exe nur diejenige beendet wird, für die das "Quit LV" ausgeführt wird, wird wohl Punkt 2 zutreffen. Mglw. habe ich mich auch etwas ungeglücklich ausgedrückt.

Zu diesem Punkt ist ganz einfach zu sagen dass die LabVIEW Runtime eigentlich nichts anders als eine Library an Funktionen ist. Das LabVIEW Exe selber ist der eigentliche Prozess der in den Speicher geladen wird und dort instantiert wird. Nachdem der sich im Speicher initialisiert hat lädt er die lvrt.dll und übergibt ihm die weitere Kontrolle. Aber diese lvrt.dll läuft immer im Kontext des ursprünglichen Przesses der durch die Exe instantiert wurde. Ein anderes LabVIEW Exe lädt die lvrt.dll ganz einfach auch und dann läuft diese halt ein weiteres mal innerhalb dieses zweiten Prozesskontextes. Soweit es die lvrt.dll betrifft hat die im Prinzip keinerlei Kenntnis davon dass sie innerhalb eines anderen Prozesses auch schon geladen wurde. Im Prinzip deshalb da ein Exe normalerweise beim Starten testet ob es schon läuft (derselbe exe Name schon im Speicher) und in dem Falle das Laden der Applikation abbricht. Dieser Check kann aber durch ein INI Token innerhalb des INI Files der Applikation ausgeschaltet werden, was aber meist nicht sinnvoll ist.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2008, 09:10
Beitrag #43

kpa Offline
LVF-Stammgast
***


Beiträge: 385
Registriert seit: Mar 2007

2019
2002
DE

88***
Deutschland
Installiertes Programm macht Fehler beim Beenden
Hallo,

auf dem Rechner auf dem das Programm läuft ist nur das Programm, LabVIEW Runtime und DAQmx Runtime.

Wie kann ich LabVIEW Runtime und DAQmx Runtime beenden wenn ich die *.exe beende?

Ich habe inzwischen mit NI telefoniert und Tips bekommen aber der Rechner ist beim Kunden und das Programm ist noch nicht repariert.

Für DAQmx 8.6 gibt es eine Runtime 5 damit hat es auf dem Programmierrechner und auf dem Zielrechner gefunzt.

Nach Installation von LV 8.5.1 mit DAQmx 8.7(Ohne Runtime 5 -- nur noch Runtime 4) ging es nur noch auf dem Programmierrechner.

Nach der Installation einer neueren Version (Tip von NI) DAQmx 8.7.1 (sollte wieder Runtime 5 enthalten-- dem war nicht so) ging es noch nicht.

Es gibt eine extra DAQmx 8.7.1 Runtime 5 aber da muss man alles von Hand einbinden.

In einem anderen Forum wurde geraten auf DAQmx 8.6 zurückzugehen (auch wegen der geringeren Größe von Runtime 5 gegenüber Runtime 4).

DAQmx 8.7 war nicht deinstallierbar weil LabVIEW sagte es ist eine höhere Version installiert (8.7.1) die aber nicht in LabVIEW angezeigt wurde.

NI gab mir den Link zu MSIBlast (Programm zum Deinstallieren von NI-Komponenten) dann konnte ich DAQ deinstallieren.

Danach ging nichts mehr.

Ich habe LV komplett deinstalliert und LV8.1 neuinstalliert. Alles läuft wieder -- Ich habe ein neues Installationsprogramm + LabVIEW Runtime + DAQmx 8.6 Runtime 5 gemacht und muss es aber auf dem Zielrechner noch testen.

Gibt es andere Möglichkeiten LabVIEW Runtime zu beenden ohne "Quit LV" ?

Danke für die Hilfe

kpa
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2008, 09:23
Beitrag #44

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Installiertes Programm macht Fehler beim Beenden
' schrieb:Hallo,

auf dem Rechner auf dem das Programm läuft ist nur das Programm, LabVIEW Runtime und DAQmx Runtime.

Wie kann ich LabVIEW Runtime und DAQmx Runtime beenden wenn ich die *.exe beende?

Ich habe inzwischen mit NI telefoniert und Tips bekommen aber der Rechner ist beim Kunden und das Programm ist noch nicht repariert.

Für DAQmx 8.6 gibt es eine Runtime 5 damit hat es auf dem Programmierrechner und auf dem Zielrechner gefunzt.

Nach Installation von LV 8.5.1 mit DAQmx 8.7(Ohne Runtime 5 -- nur noch Runtime 4) ging es nur noch auf dem Programmierrechner.

Nach der Installation einer neueren Version (Tip von NI) DAQmx 8.7.1 (sollte wieder Runtime 5 enthalten-- dem war nicht so) ging es noch nicht.

Es gibt eine extra DAQmx 8.7.1 Runtime 5 aber da muss man alles von Hand einbinden.

In einem anderen Forum wurde geraten auf DAQmx 8.6 zurückzugehen (auch wegen der geringeren Größe von Runtime 5 gegenüber Runtime 4).

DAQmx 8.7 war nicht deinstallierbar weil LabVIEW sagte es ist eine höhere Version installiert (8.7.1) die aber nicht in LabVIEW angezeigt wurde.

NI gab mir den Link zu MSIBlast (Programm zum Deinstallieren von NI-Komponenten) dann konnte ich DAQ deinstallieren.

Danach ging nichts mehr.

Ich habe LV komplett deinstalliert und LV8.1 neuinstalliert. Alles läuft wieder -- Ich habe ein neues Installationsprogramm + LabVIEW Runtime + DAQmx 8.6 Runtime 5 gemacht und muss es aber auf dem Zielrechner noch testen.

Bugs innerhalb der DAQmx mal weggelassen denke ich dass gerade Quit LV das eigentlich Problem sein könnte. Wenn Du in Deiner Applikation DAQmx ansprichst öffnest Du unweigerlich DAQmx Resourcen. Wenn Du Dich nun irgendwann mal in Deiner Applikation entschliesst dass es genug gewesen ist und einfach Quit LV aufrufst hast Du eventuel noch DAQmx Resourcen offen, die erst abgeschlossen werden sollten. Zwar ist DAQmx so programmiert dass es grundsätzlich versucht nicht ordnungsgemäss abgeschlossene Resourcen selber abzuschliessen wenn die Applikation beendet wird aber DAQmx besteht aus einer Vielzahl an Untertreibern und ein einziger Bug in einem davon kann verursachen dass sich DAQmx beim dermassen forcierten Abschliessen aufhängt.

Deshalb ist es grundsätzlich wichtig um beim Beenden der Applikation dafür zu sorgen dass alle parallelen Loops innerhalb der Applikation sich ordentlich beenden und dass alle irgendwann geöffneten Resourcen auch garantiert geschlossen sind bevor Du überhaupt daran denkst Quit LV aufzurufen. Wie eher erwähnt ist Quit LV nicht mal nötig. Das Letzte VI das sein Frontpanel schliesst macht grundsätzlich beinahe dasselbe.

Vielleicht denkst Du jetzt: Aber das ganze Resourcetracking um sicherzustellen dass alles ordentlich geschlossen ist bevor ich meine Applikation beende ist eine Heidenarbeit. Nun wenn Du intelligent programmierst, sprich zumindest in Ansätzen objektorientiert mittels Intelligenter Actions Engines auf der Basis von LV2 Style Global Variables, ist das alles nicht so schlimm. Und obwohl die NI Treiber selber in den meisten Fällen sehr tolerant darin sind wenn die Applikation sich beendet ohne alle Resourcen ordentlich abgeschlossen zu haben ist das nicht immer 100% perfekt und kann man das von den meisten Treibern anderer Hersteller mit absoluter Garantie schon mal nicht sagen.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2008, 10:52
Beitrag #45

kpa Offline
LVF-Stammgast
***


Beiträge: 385
Registriert seit: Mar 2007

2019
2002
DE

88***
Deutschland
Installiertes Programm macht Fehler beim Beenden
Hallo,

wie schon in meiner Frage ganz am Anfang erwähnt sind alle Schleifen beendet, Dateien sind geschlossen und auch DAQmx ist ordentlich abgeschlossen.
In meiner Haupt-Whileschleife laufen ein paar Berechnungen alle anderen Programme wie Datenerfassung (DAQmx) und Datei-IO werden in Sub-VI's ausgeführt und danach komplett beendet.
Nach Beenden der Haupt-Whileschleife (alles ist jezt beendet) folgt "Quit LabVIEW".

Das funzt installiert auf einem Rechner und auf dem anderen nicht. Da es aber schon mal ging denke ich es war der neue DAQmx-Treiber.

Wenn ich mehr weiss werde ich es hier schreiben.

kpa
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2008, 17:00 (Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2008 17:01 von rolfk.)
Beitrag #46

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Installiertes Programm macht Fehler beim Beenden
' schrieb:Hallo,

wie schon in meiner Frage ganz am Anfang erwähnt sind alle Schleifen beendet, Dateien sind geschlossen und auch DAQmx ist ordentlich abgeschlossen.
In meiner Haupt-Whileschleife laufen ein paar Berechnungen alle anderen Programme wie Datenerfassung (DAQmx) und Datei-IO werden in Sub-VI's ausgeführt und danach komplett beendet.
Nach Beenden der Haupt-Whileschleife (alles ist jezt beendet) folgt "Quit LabVIEW".

Das funzt installiert auf einem Rechner und auf dem anderen nicht. Da es aber schon mal ging denke ich es war der neue DAQmx-Treiber.

Wenn ich mehr weiss werde ich es hier schreiben.

kpa

Verwendest Du irgendwo Timed Loops? Die sind bekannt dass sie ganz komische Crashes verursachen wenn man die Applikation zu beenden versucht. Sehen ziemlich harmlos aus aber die eigetnliche Implementation ist so ein wenig alles was die LabVIEW Götter uns Normalsterblichen mit ziemlichen Erfolg nicht benützen lassen wollen.
Und der Grund ist auch einfach: Es ist bestenfalls haarig zu implementieren und schlimmstenfalls der pure Wahnsinn, was Debugging und Unterhalt betrifft. (XNodes und anderes dergleichen).

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
11.07.2008, 12:24
Beitrag #47

cb Offline
LVF-SeniorMod


Beiträge: 1.731
Registriert seit: Feb 2006

2018SP1
2001
EN

40xxx
Deutschland
Installiertes Programm macht Fehler beim Beenden
' schrieb:Ich programmiere nun schon über 16 Jahre in LabVIEW, beinahe 12 davon professionel als Alliance Member und ich habe die Quit-Funktion noch in keiner Applikation eingebaut. Ist einfach nicht nötig da ich ganz einfach dafür sorge dass sich alle Loops ordentlich beenden und als Letztes macht das HauptVI das Licht aus indem es ganz einfach ein FP.Close macht. Wenn dann noch etwas läuft habe ich was falsch gemacht, das durch die Quit-Funktion höchstens kaschiert würde.

reg dich wieder abSmile- ganz ahnungslos bin ich auch nicht;)und son bischen Fachwissen kannst du mir ruhig auch zugestehenWink

http://www.rotabench.com - rotierende Prüfstände nach dem Baukasten-Prinzip
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.07.2008, 12:26
Beitrag #48

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Installiertes Programm macht Fehler beim Beenden
:offtopic2:Langsam nähern wir uns von der Anzahl der Antworten her unserem Rätselthread. Big Grin

Gruß Markus

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
Sad Fehlermeldung beim Beenden der exe Wedgewood 3 4.780 18.03.2021 15:44
Letzter Beitrag: jg
  Fehler beim verwenden des Installers 11003 gottfried 0 7.442 08.09.2016 11:27
Letzter Beitrag: gottfried
  Installer löscht anderes installiertes Labview Programm Winterkind 2 7.200 15.06.2016 14:09
Letzter Beitrag: Winterkind
  Fehler beim Erstellen einer .exe Serial 4 8.367 04.04.2015 15:39
Letzter Beitrag: Philipp.Holze
  Fehler 1 beim Applicationstart pericles 1 4.521 15.07.2013 18:18
Letzter Beitrag: jg
  Fehler -600 beim Compilieren einer DLL BerndDasBrot 2 5.845 14.05.2012 14:43
Letzter Beitrag: BerndDasBrot

Gehe zu: