pdksh nadal "się psuje"...
Jakub Bogusz
qboosh w prioris.mini.pw.edu.pl
Sob, 12 Maj 2001, 20:02:47 CEST
On Fri, May 11, 2001 at 06:34:26PM +0200, Arkadiusz Miskiewicz wrote:
> On/Dnia Fri, May 11, 2001 at 05:54:21PM +0200, Jakub Bogusz wrote/napisał(a)
> > Wprawdzie nie "core dumped", ale nadal sobie nadpisuje strukturę source.
Przy budowaniu php nadal jest core dumped.
> > Przy budowaniu inna:
> >
> > ../libtool: nu[4]: test: yes: unexpected operator/operand
> > ^^
> > ../libtool: L^]^G^H°^N^Y^H^I[0]: test: yes: unexpected operator/operand
> Musimy coś z tym w końcu zrobić... Jak do tej pory nikomu się nie udało namierzyć
> źródła błędu, autor nie odpowiada, a pdksh się sypie...
Na razie udało mi się zauważyć tyle:
- zwiększanie cells w alloc/aresize (to co robią kolejne mutacje patcha
alloc) powoduje co najwyżej zrzucanie core w innym miejscu...
- php udało się zbudować dopiero po wywaleniu całego własnego
zarządzania pamięcią i zastąpieniu go przez:
Area *ainit(register Area *ap) { return ap; }
void afreeall(register Area *ap) { return; }
void *alloc(size_t size,register Area *ap) { return malloc(size); }
void *aresize(register void *ptr, size_t size, Area *ap) { return realloc(ptr,size); }
void afree(void *ptr, register Area *ap) { free(ptr); }
Po tym ksh nie chce zrzucać core[1], także zlinkowany z efence.
Co nie znaczy, że błędów nie ma.
(afreeall prawdopodobnie powoduje memory leak - może próbować
zapisywać do ap wskaźniki i w afreeall zwalniać jeszcze nie zwolnione
- może to by ujawniło jakieś błędy)
- sam komunikat "test: {yes|no}: enexpected operator/operand" nie podoba
mi się - nie tyle jego występowanie[2], co treść - albo w ogóle bez
numeru linii, albo z numerem linii wziętym z sufitu (np. wskazującym
na linię o treści 'fi # test -z "$show_help"', podczas gdy pod gdb
w strukturach można znaleźć prawdziwą informację.
[2] występuje przy np. "test = no" - w skryptach libtoola niektóre zmienne
nie są ejęte w "" i ich brak powoduje ten komunikat - np. taka linia:
if test $pic_mode = no && test "$deplibs_check_method" != pass_all; then
- [1] nie licząc próby uruchomienia go jako shella interaktywnego - ale
tu winny jest błąd w patchu history, który już wyśledziłem i zaraz poprawię.
Ciekawe, że ten błąd nie wyszedł przed grzebaniem w zarządzaniu pamięcią...
(a swoją drogą cóż za "wspaniały" pomysł oznaczać pustą historię
wskaźnikiem równym (wskaźnik_do_początku_historii - 1) - oczywiście
wskazującym na bzdury...)
--
Jakub Bogusz
http://prioris.mini.pw.edu.pl/~qboosh/
Więcej informacji o liście dyskusyjnej pld-devel-pl