[voikko] Suomi-malaga 1.8rc1, outo bugi

Harri Pitkänen hatapitk at iki.fi
Sat Nov 13 20:24:00 EET 2010


On Saturday 13 November 2010, Marko Wallin wrote:
> 13.11.2010 7.48, Teemu Likonen kirjoitti:
> > Harri Pitkänen kirjoitti 12.11.2010 klo 22.09:
> >> harri at turska:~/tmp/test$ echo demokraattiosavaltio | voikkospell -m
> >> C: demokraattiosavaltio
> >> A(demokraattiosavaltio):1:CLASS=nimisana
> >> A(demokraattiosavaltio):1:NUMBER=singular
> >> A(demokraattiosavaltio):1:SIJAMUOTO=nimento
> >> A(demokraattiosavaltio):1:STRUCTURE==pppp=ppppppp=ppp=pppppp
> >> A(demokraattiosavaltio):2:CLASS=nimisana
> >> A(demokraattiosavaltio):2:NUMBER=singular
> >> A(demokraattiosavaltio):2:SIJAMUOTO=nimento
> >> A(demokraattiosavaltio):2:STRUCTURE==ppp=ppppppp=ppp=pppppp
> >> 
> >> Minua kiinnostaisi tietää, pystyykö kukaan muu toistamaan bugia.
> >> Esiintyykö se esimerkiksi vain 64-bittisissä Linuxeissa?
> > 
> > Pikaisen testauksen perusteella minä saan täsmälleen samanlaisen
> > tuloksen 32-bittisellä prosessorilla ja Linuxilla.
> 
> Samaa tulosta antaa myös Mac OS X:ssä 32- ja 64-bittisellä libvoikolla

Sama myös Windowsissa Microsoftin kääntäjällä. Eli tämä käytännössä vahvistaa 
sen, että bugi on Malaga-toteutuksessa.

Selvittelin bugia hiukan. Syy ei vielä ole selvinnyt, mutta uskon olevani jo 
sen jäljillä. Malaga sisältää oman virtuaalikoneensa, ja merkkijonoja 
käsitellään tämän virtuaalikoneen heap-muistissa. Sinne on tallennettu 
merkkijono "pppp=", johon jossain vaiheessa kirjoitetaan virheellisesti null-
merkki viimeisen p-kirjaimen paikalle. En ole vielä löytänyt paikkaa, mistä 
tämä null-merkki kirjoitetaan. Kuitenkin jos virtuaalikoneen roskien keruun 
ottaa pois käytöstä muuttamalla tiedostossa values.cpp

  -    collect_garbage(malagaState);
  +    if (false) collect_garbage(malagaState);

niin bugia ei enää esiinny. Tämä ei vielä hirveästi asiaa selvennä. Joko 
roskien keruu toimii väärin, tai sen poistaminen käytöstä vain aiheuttaa 
virheellisen null-merkin kirjoittamisen jonnekin muualle. Tuossa roskien 
keruun yhteydessä nimittäin heap-muistin sisältö järjestetään uudelleen.

Täytyy jatkaa tästä huomenna. Sinänsähän tämä bugi ei varmaankaan ole kovin 
vakava, koska se on ollut olemassa viimeiset neljä vuotta. Mutta jotenkin se 
vaan häiritsee minua sen verran, että haluaisin saada sen korjatuksi. Bugi 
kyllä aiheuttaa näkyviäkin ongelmia esimerkiksi tavutuksessa, mutta ne 
tuntuvat olevan käytännössä äärimmäisen harvinaisia.

Suomi-malagaa voi silti testata, siihen tuskin tämän takia tulee muutoksia. 
Korjaus menee libvoikon puolelle.

Harri



More information about the voikko mailing list