Hallo Jochen,

[Habe das auf die Liste umgeleitet]

----- Original Message -----
From: Jochen Erwied <[EMAIL PROTECTED]>
To: Leopold Toetsch <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Sonntag, 28. November 1999 18:36
Subject: Re: Patch f�r ISDNLog (signal 11 in 3.67)


> On Sun, Nov 28, 1999 at 02:23:31PM +0100, Leopold Toetsch wrote:
>
> > Was tut bei den strdup's nicht?
>
> Ganz einfach: Ich krieg einen segfault in __libc_malloc, beim Aufruf
von
> strdup! Ein Ersatz von strdup durch was eigenes (was allerdings
intern auch
> wieder malloc verwendet) f�hrt zu dem gleichen Ergebnis :-(

Ich hatte mit gcc -V2.7.3.2 was aehnliches in zone.c/dest.c, wo immer
der Stack im Arsch war, nach einem Aufruf von gdbm_fetch (das auch die
Ergebnisse im Heap liefert).
Irgendwie ist das eigen, wo doch der Kernel genau mit diesem Compiler
uebersetzt wird (SuSE 6.00), der Standardcompiler egcs-2.91.60 hat
keine solche Mucken.

> Auf der anderen Seite: Ob ich jetzt 4 Byte f�r einen Pointer
verbrate, oder
> 12+1+F�llbytes f�r den String selber, der ja auch nur einmal
ben�tigt wird,
> ist zu diesem Zeitpunkt herzlich egal.

Das sowieso, ich bin auch voellig einverstanden mit dem Patch -
Hauptsache es laeuft ;-)

> _Wie_ und _wieso_ das zustande kommt, kann ich auch nicht sagen.

Ja, ist ziemlich eigenartig.

> M�glicherweise ein Bug in der libc5? ...

Bei mir libc6, und ich habe mal mit gcc -V2.7.3.2 das Ganze kompiliert
und es gab keine Segfaults, allerdings war der Test nicht sehr
umfangreich.
Was ich aber sicher weiss ist, das sich gcc -V2.7.3.2 mit gdbm und
-fomit_frame_pointer nicht vertraegt - aber diese Optimierung ist seit
einiger Zeit nicht mehr aktiv.

> ... Dagegen spricht, da� mit obigen
> �nderungen ein Start des isdnlog in der inittab m�glich wird, ohne
die
> �nderungen jedoch nicht!
>
> Ach �brigens: Wir sollten vielleicht mal in Betracht ziehen, im
Makefile.in
> f�r den isdnlog die Optimierungen wieder zu aktivieren (-O2
oder -O3). Das
> bringt auf einem langsamen Rechner einen subjektiv deutlich
sp�rbaren
> Performancegewinn!

Habe mal alles mit -O3 kompiliert (egcs) scheint problemlos zu laufen
(isdnrate, -rep, -log im Replaymodus)
Ich denke wir sollten mal sammeln, wer welchen Compiler / libc
einsetzt, damit wir solche Fehler moeglichst schnell entdecken
koennen.

leo (SuSE 6.0):
egcs-2.91.60 / libc.so.6 bzw. gcc V2.7.3.2

# ./isdnlog -A0 -rm0xff isdnctrl0
(Mit Jochen's 1. Patch fuer Vbn als String statt strdup'd)

gcc -O3: Ok
gcc -V2.7.2.3 -g: Ok
gcc -V2.7.2.3 -O3: Segfault !!!

Wieder im Zusammenhang mit gdbm/strdup/strsep ... am Stack, und keine
Chance mit div. Workarounds die sigsegv's wegzubekommen

leo


_______________________________________________
Rates4linux-devel mailing list
[EMAIL PROTECTED]
http://lists.SourceForge.net/mailman/listinfo/rates4linux-devel

Antwort per Email an