Frage / [patch]: warum beendet eFatal() ohne Fehlercode?

Alles rund um das grafische Benutzerinterface Enigma
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Frage / [patch]: warum beendet eFatal() ohne Fehlercode?

Beitrag von seife »

Ich habe ein "seltsames" Verhalten von eFatal bemerkt (als das xml-File für die dm500-FB kaputt war): eFatal zeigt einen "fatalen Fehler", beendet dann aber enigma mit _exit(0), was normalerweise der Hinweis darauf ist, dass alles in Ordnung ist und die box heruntergefahren werden soll.

Was spricht also gegen:

Code: Alles auswählen

Index: lib/base/eerror.cpp
===================================================================
RCS file: /cvs/tuxbox/apps/tuxbox/enigma/lib/base/eerror.cpp,v
retrieving revision 1.13
diff -u -p -r1.13 eerror.cpp
--- lib/base/eerror.cpp 4 Apr 2006 17:27:10 -0000       1.13
+++ lib/base/eerror.cpp 20 Apr 2008 09:23:00 -0000
@@ -96,7 +96,7 @@ void eFatal(const char* fmt, ...)
                msg.show();
                msg.exec();
        }
-       _exit(0);
+       _exit(1);
 }

 #ifdef DEBUG
Gibt es irgendwas was sich darauf verlässt, dass im Falle eines fatalen Fehlers die Box runtergefahren wird?
In meinem Fall (FB-Belegung konnte nicht geladen werden) hätte sich halt enigma dauernd neu gestartet, aber ich hätte immerhin per ssh/telnet auf die box gekonnt und das Problem untersuchen / fixen.
dbluelle
Contributor
Beiträge: 319
Registriert: Samstag 29. Mai 2004, 18:49

Re: Frage / [patch]: warum beendet eFatal() ohne Fehlercode?

Beitrag von dbluelle »

Ich denke, da wäre es "sauberer", wenn man gleich eine entsprechende Behandlung in der rcS mit einbaut, sodass Enigma nicht neustartet, aber auch die Box nicht runtergefahren wird, z.B. so (ungetestet):

Code: Alles auswählen

echo "enigma returned with "$ret
case $ret in
0)
	echo "Shutdown"
	rm /tmp/.enigma
	/sbin/halt
	;;
1) 
	echo "fatal error in enigma"
	rm /tmp/.enigma
	;;
...
Allerdings bin ich mir nicht sicher, ob der Exitcode von eFatal irgendwo Auswirkungen hat.
Mir ist zumindest noch nix aufgefallen :gruebel:

dbluelle
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Frage / [patch]: warum beendet eFatal() ohne Fehlercode?

Beitrag von seife »

Ausser im Initskript kann es keine Auswirkungen haben, denn _exit(x) beendet das Program mit exit-Code x ;-)