[Open-source] η nokia μας έδωσε το open-source νέο της χρονιάς
Giorgos Keramidas
keramida at ceid.upatras.gr
Sat Jun 28 01:10:54 EEST 2008
On Fri, 27 Jun 2008 21:42:27 +0300, Haris Alatas <haris at crack.gr> wrote:
> Γενικά το ερώτημα που γενάται στο κεφάλι μου είναι: Ποιος θα κάτσει να
> ασχοληθεί με τον κώδικα του Symbian, ενός άθλιου λειτουργικού που
> μοιάζει με τα windows για οποιονδήποτε άλλο λόγο πέρα απο το
> exploiting;
Πολλοί...
Ξέρω τουλάχιστον δύο άτομα που έχουν γράψει commercial προϊόντα με κάποια
από τα API του Symbian. Εγώ ο ίδιος δούλευα επίσης μέχρι αρκετά πρόσφατα
σε μια εταιρεία που θα βρει πολύ χρήσιμο το "extra documentation" που
υπάρχει μέσα στο ίδιο το source του Symbian.
Η διαθεσιμότητα του source *ΕΙΝΑΙ* χρήσιμο εργαλείο. Ένα παράδειγμα από το
πόσο χρήσιμος μπορεί να είναι ο πηγαίος κώδικας ακολουθεί παρακάτω. Μπορεί
να είναι σχετικά μειωμένη η αξία ενός `anecdotal story', αλλά έχω διορθώσει
αρκετά bugs σε Solaris-based εφαρμογές διαβάζοντας κομμάτια του κώδικα του
OpenSolaris.
Ένα από τα πιο obscure bugs που έχω διορθώσει κάνα χρόνο πριν ήταν σε
πρόγραμμα που έπαιρνε όπως η vmstat(1) ένα snapshot από VM πληροφορίες.
Παρατηρήσαμε ότι αν διάβαζε snapshots με ρυθμό πάνω από 1 φορά το
δευτερόλεπτο "μηδενίζονταν" η διαφορά των δύο snapshots για συγκεκριμένες
τιμές. Ψάχνοντας στο source του OpenSolaris βρήκα από τα σχόλια του clock
interrupt timer[1] ότι τα στατιστικά που με ενδιέφεραν ενημερώνονται μόνο
ΜΙΑ φορά κάθε δευτερόλεπτο[2].
[1] http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/os/clock.c
[2] http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/os/clock.c#573
Στη γραμμή 573 ξεκινάει ένα if (one_sec) block statement. Βλ. τον
κώδικα που ενημερώνει το vminfo.freemem counter, κοντά στη γραμμή 771.
Οπότε η διόρθωση του bug ήταν: "Ε μήν το παρακάνεις κι εσύ και διαβάζεις
κάθε μισό δευτερόλεπτο το ίδιο kernel variable. Αφού *δεν* θα το έχει
ενημερώσει ακόμα ο πυρήνας, η διαφορά με πριν θα είναι μηδέν προφανώς."
Όλο αυτό θα μου είχε πάρει ΠΟΛΥ περισσότερο χωρίς να έχω πρόσβαση στον
κώδικα, κι αυτό μόνο αν είχε τύχει να έχω διαβάσει το αντίστοιχο κεφάλαιο
του Solaris Internals, και ψυλιαζόμουνα ότι ίσως να έχει σχέση με το κάθε
πότε ενημερώνει ο πυρήνας αυτή την τιμή.
Μετά από τέτοιες εμπειρίες, εγώ είμαι 100% υπέρ της διαθεσιμότητας του
πηγαίου κώδικα όταν αυτό είναι δυνατόν. Είναι πραγματικά ΚΡΙΜΑ να τρως
βδομάδες να βρεις τη λύση ένα τέτοιο bug, επειδή δεν έχεις πρόσβαση σε
μερικά KB πηγαίο κώδικα σε ένα C file :-(
More information about the Linux-greek-users
mailing list