Thread View: de.comp.lang.perl
4 messages
4 total messages
Started by Ulli Horlacher
Tue, 27 Feb 2024 14:00
Signal debugging
Author: Ulli Horlacher
Date: Tue, 27 Feb 2024 14:00
Date: Tue, 27 Feb 2024 14:00
46 lines
1543 bytes
1543 bytes
Ich hab grad 2 h mit dem debugging eines etwas komplexeren Server-Programms verbracht, das einfach so ohne Fehlermeldung und exit-code terminierte. Ich konnte zwar die Code Stelle eingrenzen, aber nicht exakt bestimmen wo genau es abbrach. Am Schluss hab ich mehr durch Raten herausgefunden, dass es bei einem syswrite() zu einem SIGPIPE kam mit dem das Programm dann ohne Fehlermeldung abbrach. Ja, der Bug ist jetzt gefixt (ich ignoriere SIGPIPE), aber ich frage mich, ob ich das einfacher und frueher haette herausfinden koennen. Sollte man immer fuer alle Signale einen Signalhandler aufsetzen um wenigstens eine Fehlermeldung zu bekommen? Ein "broken pipe error" o.ae. haette mir 2 h Fehlersuche erspart... Hier der Codeschnipsel: while ($B < $size or $size < 0) { unless (defined(syswrite $OUT,$buf)) { die "\n$prg: client has closed the connection\n"; } $B += $bs; $bt += $bs; $t2 = time; if ($t2-$t1>1) { $tt = ($t2-$t0)||1; alarm($timeout); status('sending',$B,$size,$tt,$bt/($t2-$t1)); $t1 = $t2; $bt = 0; } } $tt = ($t2-$t0)||1; $size = $B if $size < 0; status("sent",$B,$size,$tt,$B/$tt); alarm(0); ($OUT ist ein network handle) -- Ullrich Horlacher Server und Virtualisierung Rechenzentrum TIK Universitaet Stuttgart E-Mail: horlacher@tik.uni-stuttgart.de Allmandring 30a Tel: ++49-711-68565868 70569 Stuttgart (Germany) WWW: https://www.tik.uni-stuttgart.de/
Re: Signal debugging
Author: "Peter J. Holzer
Date: Tue, 27 Feb 2024 17:03
Date: Tue, 27 Feb 2024 17:03
26 lines
1109 bytes
1109 bytes
On 2024-02-27 14:00, Ulli Horlacher <framstag@rus.uni-stuttgart.de> wrote: > Ich hab grad 2 h mit dem debugging eines etwas komplexeren Server-Programms > verbracht, das einfach so ohne Fehlermeldung und exit-code terminierte. "Ohne Exit-Code" geht nicht. Ein Prozess terminiert immer mit einem Exit-Code. > Ich konnte zwar die Code Stelle eingrenzen, aber nicht exakt bestimmen wo > genau es abbrach. > > Am Schluss hab ich mehr durch Raten herausgefunden, dass es bei einem > syswrite() zu einem SIGPIPE kam mit dem das Programm dann ohne > Fehlermeldung abbrach. In diesem Fall sollte der Exit-Code die Signalnummer enthalten. > Ja, der Bug ist jetzt gefixt (ich ignoriere SIGPIPE), aber ich frage mich, > ob ich das einfacher und frueher haette herausfinden koennen. Sollte man > immer fuer alle Signale einen Signalhandler aufsetzen um wenigstens eine > Fehlermeldung zu bekommen? Ein "broken pipe error" o.ae. haette mir 2 h > Fehlersuche erspart... Schreibt der systemd (oder worüber Du auch immer Deinen Server startest) nichts in Log, wenn der Server mit Exit-Code != 0 terminiert? hp
Re: Signal debugging
Author: Ulli Horlacher
Date: Tue, 27 Feb 2024 19:22
Date: Tue, 27 Feb 2024 19:22
31 lines
1124 bytes
1124 bytes
Peter J. Holzer <hjp-usenet4@hjp.at> wrote: > On 2024-02-27 14:00, Ulli Horlacher <framstag@rus.uni-stuttgart.de> wrote: >> Ich hab grad 2 h mit dem debugging eines etwas komplexeren Server-Programms >> verbracht, das einfach so ohne Fehlermeldung und exit-code terminierte. > > "Ohne Exit-Code" geht nicht. Ein Prozess terminiert immer mit einem > Exit-Code. echo $? brachte 0 >> Am Schluss hab ich mehr durch Raten herausgefunden, dass es bei einem >> syswrite() zu einem SIGPIPE kam mit dem das Programm dann ohne >> Fehlermeldung abbrach. > > In diesem Fall sollte der Exit-Code die Signalnummer enthalten. Leider nein. > Schreibt der systemd (oder worüber Du auch immer Deinen Server startest) > nichts in Log, wenn der Server mit Exit-Code != 0 terminiert? Ich hatte es direkt von der bash gestartet um zu sehen, was passiert. -- Ullrich Horlacher Server und Virtualisierung Rechenzentrum TIK Universitaet Stuttgart E-Mail: horlacher@tik.uni-stuttgart.de Allmandring 30a Tel: ++49-711-68565868 70569 Stuttgart (Germany) WWW: https://www.tik.uni-stuttgart.de/
Re: Signal debugging
Author: "Peter J. Holzer
Date: Tue, 27 Feb 2024 21:14
Date: Tue, 27 Feb 2024 21:14
19 lines
828 bytes
828 bytes
On 2024-02-27 19:22, Ulli Horlacher <framstag@rus.uni-stuttgart.de> wrote: > Peter J. Holzer <hjp-usenet4@hjp.at> wrote: >> On 2024-02-27 14:00, Ulli Horlacher <framstag@rus.uni-stuttgart.de> wrote: >>> Ich hab grad 2 h mit dem debugging eines etwas komplexeren Server-Programms >>> verbracht, das einfach so ohne Fehlermeldung und exit-code terminierte. >> >> "Ohne Exit-Code" geht nicht. Ein Prozess terminiert immer mit einem >> Exit-Code. > > echo $? brachte 0 Das ist auch ein Exit-Code ;-). Aber wenn der 0 ist, dann ist der Prozess *nicht* an einem SIGPIPE verstorben. Wenn also ein SIGPIPE die Root-Ursache war, dann gab es schon einen Signalhandler, der SIGPIPE abfängt und behandelt (Perl macht das jedenfalls nicht von sich aus - gerade mit v5.34 getestet, war aber meiner Erinnerung nach nie anders). hp
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads