sabato 27 febbraio 2010

27 febbraio 2010

L'aria stasera faceva ancora rabbrividire, ma la temperatura è cambiata e la pioggia ha un odore diverso da qualche giorno (no, non è l'inquinamento, o almeno non solo).
E poi forse avere voglia di un gelato anche se piove vuol dire che la primavera forse inizia, tra una perturbazione carica di umidità e l'altra.

NERD POST: correggere i crash di Iceweasel con i video flash su Debian 64

Sono molto soddisfatto di aver migrato i miei computer con CPU AMD64 da Debian 32 bit a Debian 64 bit.
Checchè si pensi, per un uso desktop come io faccio, il codice compilato per AMD64 funziona in maniera più efficiente e facilita il lavoro.
L'unico problema che non ero ancora riuscito a risolvere era dovuto al fatto che sul mio portatile (ormai un po' vetusto) i filmati Flash mandavano in crash i browser (cosa che non succede sul desktop la cui CPU è di 1-2 anni successiva).
Oggi finalmente ho avuto un po' di tempo da dedicare al problema e ho trovato la soluzione a questo indirizzo:
http://www.hotplate.co.nz/?p=136

In sintesi pare che il Flash plugin per AMD 64 usi le istruzioni LAHF (non chiedetemi cosa siano :-D) che non sono supportate dai modelli più vecchi delle CPU AMD 64.
Pertanto è necessario compilare un plugin wrapper sviluppato da Maks Verver del gruppo che porta avanti la distro Gentoo (sì, avete ragione, l'ho fatto apposta a non scrivere la parola "comunità").

Qui sotto il codice nella sua interezza:


/* Simple work-around for running the 64-bit Adobe Flash plug-in version 10 on Athlon64 processors without support for the lahf instruction.


Compile with:
cc -fPIC -shared -nostdlib -lc -oflashplugin-lahf-fix.so flashplugin-lahf-fix.c
Then place the .so file in the plug-in directory (e.g. $HOME/.mozilla/plugins)
or use LD_PRELOAD to force Firefox to load the library.






- Maks Verver July 2009 */


#define _GNU_SOURCE
#include
#include
#include


static void sig_handler(int signal, siginfo_t *info, void *context) {
if (signal != SIGILL) return;
if (*(char*)info->si_addr != (char)0x9f) abort();
greg_t *regs = ((ucontext_t*)context)->uc_mcontext.gregs;
((char*)&regs[REG_RAX])[1] = ((char*)&regs[REG_EFL])[0];
regs[REG_RIP]++;
}


static struct sigaction old_sa, new_sa = {
.sa_flags = SA_SIGINFO,
.sa_sigaction = &sig_handler };


int _init() { sigaction(SIGILL, &new_sa, &old_sa); return 0; }
int _fini() { sigaction(SIGILL, &old_sa, &new_sa); return 0; }


Alla fine, come scritto peraltro nell'introduzione al codice, il tutto va compilato (previa installazione del pacchetto build-essential) con il comando:


cc -fPIC -shared -nostdlib -lc -oflashplugin-lahf-fix.so flashplugin-lahf-fix.c


Per concludere, basta copiare il file "flashplugin-lahf-fix.so" generato dalla compilazione all'interno della directory /usr/lib/mozilla/plugins/.

Da qui in poi non ci saranno più problemi.

giovedì 11 febbraio 2010

11 febbraio 2010

Settimana faticosetta (per usare un eufemismo...).
Ma ogni tanto c'è una bella sorpresa, c'è una persona che spunta fuori dal passato e ti porta un po' di gioia, anche se sono passati 8 anni, anche se sui volti di entrambi, pur giovanili ci sono i segni del tempo.
E soprattutto ti ricorda, magari involontariamente, che se anche ora sei molto differente da quando vi frequentavate e fai cose ben diverse rispetto a quel che ti immaginavi allora, è bello essere la persona che sei e ti piacciono le cose che fai.
Annina, è stato bello vedersi, non facciamo passare altri 8 anni però.... ;)


lunedì 1 febbraio 2010

Data palindroma

Oggi è il primo febbraio 2010, ovvero 01022010.
Godiamocelo che prima dell'11 febbraio dell'anno prossimo non ricapita.