PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : child process lost ...



ack
31.01.04, 18:55
Hi,

habe ein tcl-script, welches zum verwalten von psybncs dient. Das ganze arbeitet mit sudo zusammen (sollte es zumindest).
Jedoch gibt es mir, nachdem ich es in kurzen Abstaenden aufgerufen habe, folgenden Error.

error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)

Ich vermute dass das weniger ein Problem des Script, als ein Problem des Systems ist. Ich nutze SuSe 8.2 mit Kernel 2.4.24
Jemand, der schonmal einen aehnlichen Error hatte, und / oder weiss, wie es zu loesen ist?

gruss

kth
31.01.04, 19:31
Ich kenne Tcl nicht und kann daher zum Problem selbst nicht mehr sagen, als dass da etwas auf Signalhandler-Ebene schief läuft, aber: Hilft dir einer der folgenden Links weiter?

http://dbforums.com/arch/136/2003/11/967294

http://groups.google.com/groups?hl=de&lr=&ie=UTF-8&oe=utf-8&threadm=vrlnc3fjjh.fsf_-_%40amy.STL.Research.Panasonic.COM&rnum=5&prev=/groups%3Fhl%3Dde%26ie%3DUTF-8%26oe%3Dutf-8

http://groups.google.com/groups?hl=de&lr=&ie=UTF-8&oe=utf-8&threadm=366DC321.8458195E%40idVcnet.cEom&rnum=26&prev=/groups%3F%26hl%3Dde%26lr%3D%26ie%3DUTF-8%26oe%3Dutf-8%26start%3D20%26sa%3DN

ack
31.01.04, 19:58
Hi,

das hat mir leider nicht weitergeholfen. Trotzdem danke.
Ein Kollege meint, es laege an SuSE. Auf seinem Debian laeuft es tatsaechlich einwandfrei. Da ich leider keine Moeglichkeit habe, die Distribution zu wechseln, werde ich bei SuSE bleiben muessen. Stimmt es wirklich, dass das an der Distribution liegt? Kann ich mir ehrlich gesagt nicht vorstellen.
Sonst noch irgendwelche anderen Ideen, woran es liegen koennte?

gruss

kth
01.02.04, 00:17
Auf die SuSE-Distribution an sich darf man die Schuld sicherlich nicht schieben, höchstens auf gewisse beteiligte Programmversionen, insbesondere von Tcl. Hast du die mal zwischen deiner SuSE-Installation und der Debian-Installation deines Kollegen verglichen? Und die Kernelversionen?

Probier doch mal, eine Shell (/bin/bash -c "progname arg1 arg2 ...") bzw. ein Shellskript in der Prozesshierarchie zwischen deinem Tcl-Skript und dem aufzurufenden Programm einzufügen? Angeblich ist das ein Workaround für das Signalmasken-Problem.

ack
01.02.04, 13:11
hm, nun habe ich auch schon zu hoeren bekommen, dass das ein Problem von apache ist.
tcl ist die selbe Version, wie die auf dem funktionierenden Server.
Was genau soll dieses Shellscript machen, welches ich einfuegen soll?

kth
01.02.04, 16:15
Evtl. reicht im Tcl-Skript schon ein exec-Aufruf mit der Kommandozeile aus meinem vorherigen Posting. Auch mit dem Shellskript hatte ich einen reinen "Wrapper" gemeint, der nichts weiter tut, als ein exec mit dem eigentlich aufzurufenden Programm und seinen Argumenten auszuführen:
#!/bin/bash
exec "$@"

ack
01.02.04, 19:15
hm okay.. ich versteh's so halb. wo genau soll ichs einfuegen. Hier mal die ErrorMessage:


29306
error waiting for process to exit: child process lost (is SIGCHLD ignored or trapped?)
while executing
"exec sudo -u [string tolower $env(REMOTE_USER)] cat /home/[string tolower $env(REMOTE_USER)]/psybnc/psybnc.pid"
(in namespace eval "::request" script line 94)
invoked from within

und hier die Zeilen aus dem Script:


set PID "[exec sudo -u [string tolower $env(REMOTE_USER)] cat /home/[string tolower $env(REMOTE_USER)]/psybnc/psybnc.pid]"
puts "Bouncer Status: <font color=\"#9ACD32\"><b>RUNNING</b></font> :) => $PID<br>"
set pport "[exec sudo -u [string tolower $env(REMOTE_USER)] cat /home/[string tolower $env(REMOTE_USER)]/psybnc/psybnc.conf]"
regexp -all -nocase {^.*PSYBNC\.SYSTEM\.PORT1=(.*?)[\s].*$} $pport temp port

Wo genau soll ich's dann einfuegen?

kth
02.02.04, 18:56
Probier's mal so aus:
set PID "[exec /bin/bash -c "/usr/bin/sudo -u [string tolower $env(REMOTE_USER)] cat /home/[string tolower $env(REMOTE_USER)]/psybnc/psybnc.pid"]"
puts "Bouncer Status: <font color=\"#9ACD32\"><b>RUNNING</b></font> :) => $PID<br>"
set pport "[exec /bin/bash -c "/usr/bin/sudo -u [string tolower $env(REMOTE_USER)] cat /home/[string tolower $env(REMOTE_USER)]/psybnc/psybnc.conf"]"
regexp -all -nocase {^.*PSYBNC\.SYSTEM\.PORT1=(.*?)[\s].*$} $pport temp portIn der ersten und dritten Zeile ist jeweils am Ende vor der letzten eckigen Klammer noch ein Anführungszeichen eingefügt worden.

ack
03.02.04, 18:14
Kommt leider die selbe Errormeldung. :(