Rocksolid Light

groups  faq  privacy  How to post  login

Message-ID:  

Q: What do you say to a New Yorker with a job? A: Big Mac, fries and a Coke, please!


rocksolid / de.comp.lang.perl / Re: Signal debugging

SubjectAuthor
* Signal debuggingUlli Horlacher
`* Re: Signal debuggingPeter J. Holzer
 `* Re: Signal debuggingUlli Horlacher
  `- Re: Signal debuggingPeter J. Holzer

1
Subject: Signal debugging
From: Ulli Horlacher
Newsgroups: de.comp.lang.perl
Organization: University of Stuttgart, FRG
Date: Tue, 27 Feb 2024 14:00 UTC
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!news.datentrampelpfad.de!thinkmo.de!news.uni-stuttgart.de!.POSTED!not-for-mail
From: frams...@rus.uni-stuttgart.de (Ulli Horlacher)
Newsgroups: de.comp.lang.perl
Subject: Signal debugging
Date: Tue, 27 Feb 2024 14:00:32 +0000 (UTC)
Organization: University of Stuttgart, FRG
Lines: 47
Message-ID: <urkpu0$boa$1@news2.informatik.uni-stuttgart.de>
X-Trace: news2.informatik.uni-stuttgart.de 1709042432 12042 129.69.1.129 (27 Feb 2024 14:00:32 GMT)
X-Complaints-To: rusnews@informatik.uni-stuttgart.de
NNTP-Posting-Date: Tue, 27 Feb 2024 14:00:32 +0000 (UTC)
User-Agent: tin/2.6.3-20231224 ("Banff") (Linux/5.15.0-97-generic (x86_64))
View all headers

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/

Subject: Re: Signal debugging
From: Peter J. Holzer
Newsgroups: de.comp.lang.perl
Organization: LUGA
Date: Tue, 27 Feb 2024 16:03 UTC
References: 1
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsfeed.xs3.de!tahina.priv.at!news.luga.at!.POSTED.212.17.106.130!not-for-mail
From: hjp-usen...@hjp.at (Peter J. Holzer)
Newsgroups: de.comp.lang.perl
Subject: Re: Signal debugging
Date: Tue, 27 Feb 2024 17:03:18 +0100
Organization: LUGA
Message-ID: <slrnuts1u6.2dk6r.hjp-usenet4@trintignant.hjp.at>
References: <urkpu0$boa$1@news2.informatik.uni-stuttgart.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Injection-Info: vinge.luga.at; posting-host="212.17.106.130";
logging-data="23748"; mail-complaints-to="usenet@vinge.luga.at"
User-Agent: slrn/1.0.3 (Linux)
Cancel-Lock: sha1:7yx8Ry+6bAGC6NDjxVhZFRfGpr4=
View all headers

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

Subject: Re: Signal debugging
From: Ulli Horlacher
Newsgroups: de.comp.lang.perl
Organization: University of Stuttgart, FRG
Date: Tue, 27 Feb 2024 19:22 UTC
References: 1 2
Path: i2pn2.org!i2pn.org!news.chmurka.net!usenet.goja.nl.eu.org!weretis.net!feeder8.news.weretis.net!news.datentrampelpfad.de!thinkmo.de!news.uni-stuttgart.de!.POSTED!not-for-mail
From: frams...@rus.uni-stuttgart.de (Ulli Horlacher)
Newsgroups: de.comp.lang.perl
Subject: Re: Signal debugging
Date: Tue, 27 Feb 2024 19:22:13 +0000 (UTC)
Organization: University of Stuttgart, FRG
Lines: 32
Message-ID: <urlcp5$gi1$1@news2.informatik.uni-stuttgart.de>
References: <urkpu0$boa$1@news2.informatik.uni-stuttgart.de> <slrnuts1u6.2dk6r.hjp-usenet4@trintignant.hjp.at>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: 8bit
X-Trace: news2.informatik.uni-stuttgart.de 1709061733 16961 129.69.1.129 (27 Feb 2024 19:22:13 GMT)
X-Complaints-To: rusnews@informatik.uni-stuttgart.de
NNTP-Posting-Date: Tue, 27 Feb 2024 19:22:13 +0000 (UTC)
User-Agent: tin/2.6.3-20231224 ("Banff") (Linux/5.15.0-97-generic (x86_64))
View all headers

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/

Subject: Re: Signal debugging
From: Peter J. Holzer
Newsgroups: de.comp.lang.perl
Organization: LUGA
Date: Tue, 27 Feb 2024 20:14 UTC
References: 1 2 3
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsfeed.xs3.de!tahina.priv.at!news.luga.at!.POSTED.212.17.106.130!not-for-mail
From: hjp-usen...@hjp.at (Peter J. Holzer)
Newsgroups: de.comp.lang.perl
Subject: Re: Signal debugging
Date: Tue, 27 Feb 2024 21:14:09 +0100
Organization: LUGA
Message-ID: <slrnutsgkh.2e92a.hjp-usenet4@trintignant.hjp.at>
References: <urkpu0$boa$1@news2.informatik.uni-stuttgart.de>
<slrnuts1u6.2dk6r.hjp-usenet4@trintignant.hjp.at>
<urlcp5$gi1$1@news2.informatik.uni-stuttgart.de>
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Injection-Info: vinge.luga.at; posting-host="212.17.106.130";
logging-data="5054"; mail-complaints-to="usenet@vinge.luga.at"
User-Agent: slrn/1.0.3 (Linux)
Cancel-Lock: sha1:0LUyh6YM7ibHLE6F6otfmy6r55w=
View all headers

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


rocksolid / de.comp.lang.perl / Re: Signal debugging

1
server_pubkey.txt

rocksolid light 0.9.12
clearnet tor