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