[Gfoss] curioso debugging

a.furieri a lqt.it a.furieri a lqt.it
Lun 31 Ott 2011 10:50:38 CET


Riuscite ad immaginare qualche tipo di relazione
tra Open Data CC-BY e debugging del codice ?
Sembrerebbe apparentemente che non ci sia nessuna
relazione, no ?

la storia
---------
come sicuramente avrete già visto, nelle scorse
settimane Regione Emilia Romagna ha rilasciato un bel 
po' di dati (anche geografici) sotto licenza CC-BY:
e tra questi, un impressionante shapefile contente
circa 850.000 edifici
http://dati.emilia-romagna.it/dato/item/6-6-edifici.html

Mentre facevo un po' di test su questo dataset, mi sono
accorto che spatialite a volte andava in crash [avete 
presente, il classico bug "errante", che qualche volta 
colpisce a morte e qualche volta invece funziona bene ....]

Morale: c'era uno stupido bug sull'implementazione di
ST_Transform(), direttamente legato alla gestione dei
"buchi" interni ai poligoni; in pratica, una allocazione 
sbagliata che causava (a volte) una grave corruzione 
della memoria con conseguente crash.

Nota bene: il bug era presente fin dalla prima implementazione
del codice, e nessuno (me incluso) se ne era mai accorto in 
oltre due anni :-D

Spiegazione: normalmente i poligoni hanno pochi "buchi",
e spesso i "buchi" sono abbastanza semplici (cioè hanno
un numero di vertici molto minore del numero di vertici
del bordo esterno).
Molti poligoni-edificio del dataset RER CC-BY invece hanno
la caratteristica opposta: un bordo esterno semplice (più
o meno, un rettanglo), e tanti "buchi" (cortili) che spesso
hanno un numero molto elevato di vertici (assai frastagliati).
e così finalmente il bug su ST_Transform() si è manifestato
in modo inequivoco in tutti i suoi effetti nefasti, ed è 
stato quindi possibile identificarlo e correggerlo.

Conclusione: si, gli Open Data possono essere veramente
di enorme utilità per aiutare ad ottenere un codice migliore,
meglio collaudato, e quindi più stabile ed affidabile :-D

ciao Sandro



Maggiori informazioni sulla lista Gfoss