laboratorio caffeina

in few words, just developing

 

Tag: firefox

 
 

Stracciando Firefox

E’ forse un argomento marginale per il Laboratorio Caffeina, ma cosa fare quando i nostri occhi sulla rete cominciano ad appannarsi o smettono completamente di vedere?

Ovvero, quando quei complessi programmoni chiamati “browser” si piantano impietosamente. Si da la colpa al browser? Al sito web “mal progettato”? Forse, ma prima è bene stracciare tutto il possibile…

Ormai un mesetto fa Repubblica.it ha cominciato a provocare improvvisi crash di Iceweasel/Firefox. Ecco l’ordine in cui NON bisognerebbe procedere in questi casi:

  1. Ho atteso 3 settimane il classico aggiornamento Deus Ex Apt-get che risolve tutto, da buon utente Debian GNU/Linux. L’aggiornamento non è arrivato.
  2. Ho tentato un downgrade, senza effetto.
  3. Ho installato la versione di debug, apt-get install iceweasel-dbg, e lanciato con l’opzione di debug attiva: iceweasel -g. La parte interessante dell’output è questa:
    Program received signal SIGSEGV, Segmentation fault.
    [Switching to Thread -1222601024 (LWP 17712)]
    0×08384ced in nsTextFrame::Reflow (this=0×98a22d0, aPresContext=0×92e3688, aMetrics=@0xbfbb52d4, aReflowState=@0xbfbb521c,
    aStatus=@0xbfbb5388) at nsTextFrame.cpp:594
    594 nsTextFrame.cpp: No such file or directory.
    in nsTextFrame.cpp

    Da cui deduco che qualcosa deve essere andato storto con un file non trovato…
  4. Qualcosa dunque manca, o è cercato nel posto sbagliato… In questi casi esiste l’utilissimo programma strace, un System Call Tracer. Lanciando da console:
    strace iceweasel

verrà avviato iceweasel mentre lo standard out viene inondato di informazioni. Ogni riga dell’output specifica quale chiamata di sistema sta venendo inoltrata dal programma lanciato, in quel preciso istante. Nel mio caso il debug è stato molto semplice: quando iceweasel è uscito inaspettatamente, sono andato a leggere quali chiamate erano in corso.

[...]
open(”/var/lib/defoma/fontconfig.d/L/LucidaSans.ttf”, O_RDONLY) = -1 ENOENT (No
— SIGSEGV (Segmentation fault) @ 0 (0) —
unlink(”/home/daniele/.mozilla/firefox/kl5cndvj.default/lock”) = 0
rt_sigaction(SIGSEGV, {SIG_DFL}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [SEGV], NULL, 8) = 0
tgkill(3367, 3367, SIGSEGV) = 0
— SIGSEGV (Segmentation fault) @ 0 (0) —
+++ killed by SIGSEGV +++
Process 3367 detached

Come lasicava pensare il messaggio di debug “No such file or directory.”, Iceweasel stava tentando di aprire un file senza riuscirvi: l’ultima chiamata di sistema prima del segnale SIGSEGV è un open(), cioè più o meno “accedi ad un file o ad una periferica”. Dagli argomenti della chiamata possiamo capire quale file Iceweasel stava aprendo, in che modalità (lettura, scrittura, etc), ed il codice d’uscita accompagnato da altre informazioni.

open( Nome della chiamata di sistema (apri file o periferica)
“/var/lib/defoma/fontconfig.d/L/LucidaSans.ttf”, Arg.1: Percorso del file da aprire
O_RDONLY ) Arg.2: Modalità d’accesso: sola lettura
= -1 ENOENT (No Codice d’uscita: No such file or directory (troncato da strace)

Ora non resta che da capire cosa non va con questo benedetto file: var/lib/defoma/fontconfig.d/L/LucidaSans.ttf !

Listando la cartella in cui si trova, vedo che, assieme a tanti altri, si tratta di un link simbolico interrotto:

$ ls -l /var/lib/defoma/fontconfig.d/L
[...]
lrwxrwxrwx 1 root root 58 2007-05-02 10:59 LucidaSans.ttf -> /usr/share/fonts/truetype/ttf-lucida/LucidaSansRegular.ttf
[...]

E listando la cartella /usr/share/fonts/truetype/ttf-lucida mi accorgo che anche LucidaSansRegular.ttf è un link interrotto:

$ ls -l /usr/share/fonts/truetype/ttf-lucida
[...]
lrwxrwxrwx 1 root root 81 2007-02-16 01:13 LucidaBrightRegular.ttf -> ../../../../lib/jvm/java-1.5.0-sun-1.5.0.11/jre/lib/fonts/LucidaBrightRegular.ttf
[...]

E la catena di link interrotti è giunta a conclusione: il problema è che la cartella /lib/jvm non esiste! Quindi tutti i link risultano interrotti e quando Iceweasel tenta di aprire l’inizio della catena, si trova con un errore fatale.

E’ fuori discussione che il link si riferisca a Java (java-1.5.0-sun-1.5.0.11 nel percorso), quindi qualcosa deve esser andato storto con la mia installazione di Java… Sono su Debian, quindi la soluzione più rapida al problema è senza dubbio reinstallare il pacchetto di sun-java6-fonts.

Due minuti dopo stavo navigando su Repubblica…

E la sequenza giusta? Quella inversa, naturalmente.

Col senno di poi…

 
 
 

10 Firefox plugins for design developers

Colorzilla
https://addons.mozilla.org/en-US/firefox/addon/271
[With ColorZilla you can get a color reading from any point in your browser, quickly adjust this color and paste it into another program. You can Zoom the page you are viewing and measure distances between any two points on the page.]

Firebug
https://addons.mozilla.org/en-US/firefox/addon/1843
[Firebug integrates with Firefox to put a wealth of development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page.]

Html Validator
https://addons.mozilla.org/en-US/firefox/addon/249
[HTML Validator is a Mozilla extension that adds HTML validation inside Firefox and Mozilla. The number of errors of a HTML page is seen on the form of an icon in the status bar when browsing.]

IE Tab
https://addons.mozilla.org/en-US/firefox/addon/1419
[This is a great tool for web developers, since you can easily see how your webpage displayed in IE with just one click and then switch back to Firefox.]

MeasureIt
https://addons.mozilla.org/en-US/firefox/addon/539
[Draw out a ruler to get the pixel width and height of any elements on a webpage.]

Mozilla Accessibility Extension
https://addons.mozilla.org/en-US/firefox/addon/1891
[The Mozilla/Firefox Accessibility Extension makes it easier for people with a disability to view and navigate web content. Developers can use the toolbar to check their structural markup to make sure it matches the page content.]

Open Image In New Tab
https://addons.mozilla.org/en-US/firefox/addon/2248
[Adds right-click context menu item for opening images in new tabs.]

OperaView
https://addons.mozilla.org/en-US/firefox/addon/1190
[Open pages in Opera from Firefox and Mozilla context menus. Very usefull for web developers but not only!]

Screengrab!
https://addons.mozilla.org/en-US/firefox/addon/1146

[It will save what you can see in the window, the entire page, just a selection, a particular frame... basically it saves webpages as images.]

Web Developer
https://addons.mozilla.org/en-US/firefox/addon/60
[Adds a menu and a toolbar with various web developer tools.]

 
 
 
Chiudi
E-mail It