> Вопрос — как, какими инструментами определить, что он делает все это время? Есть ли возможность профилировать загрузку?
Либо strace, либо профайлер. Вот статейка, тут есть большой набор ссылок:
www.pixelbeat.org/programming/profiling/
Более того, для полноценного анализа вам бы лучше скомпилировать дебаг-версию фаерфокса. В таком случае вы можете в любой моент подцепиться к нему с помощью gdb, просмотреть стек вызовов, значение любой переменной. Также, вы можете скомпилировать программу с поддержкой профайлинга (gcc это позволяет) и получить детальный отчет с временем выполнения каждой функции. Но для начала хватит и strace.
> Пробовал запускать с strace — один раз оно явно повисло на какой-то операции, секунд 7 висело… Но я не силен в strace (случайно только что узнал про эту команду, если точнее) — поэтому дальнейший вывод засрал консоль
У strace есть опция, чтобы писать время между системными вызовами. После чего его лог легко пропарсить каким-нибудь awk или grep и найти все сомнительные места. Правда, вызовов там скорее всего будут десятки тысяч, и тут нужен какой-то способ сложить и сгруппировать данные, например, скрипт на python/ruby/php/js. Это будет сложное, но, уверен, итнтересное исследование, пот мотивам которого можно не одну статью на Хабр написать.
Насчет «не силен» — идеология open source предполагает, что вы всегда можете прочесть мануал, заглянуть в исходники или задать вопрос. Радуйтесь, что это не закрытый код.