我认为这是从几天前的最后一次 Firefox 更新开始的,但我可能是错的。无论如何,我第一次注意到这个问题是在几天前。
我做什么:
- 单击火狐图标
- 等待。我的屏幕上没有显示任何内容,而 Firefox 通常会在大约三秒内启动。
- 查看系统监视器;没有任何负载。 Firefox 进程正在运行。
- 在 iotop 中查找;没有任何负载。
- 尝试
firefox -new-window about:blank
打开一个窗口,就像没有发生任何奇怪的事情一样。 - 再次关闭该窗口。 Firefox 进程保持打开状态。
- 暂时使用 Chromium。
- 大约 5 到 10 分钟后,Firefox 将自行打开。
从命令行运行 Firefox 并没有提供任何关于为什么需要这么长时间的信息。它给出的唯一警告是:
(process:3543): GLib-CRITICAL **: g_slice_set_config: assertion `sys_page_size == 0' failed
但 Firefox 正常启动时也会出现这种情况。这似乎与该问题无关。
今天我尝试使用 gdb 运行 Firefox。我绝不是 gdb 专家,只使用过一次它来向其他人提供有关其无法正常工作的应用程序的信息。所以我运行了firefox --debug
,start
在(gdb)提示符下键入,并得到以下输出(#
表示我添加的注释):
luc@luc-laptop2 ~ $ firefox --debug
GNU gdb (GDB) 7.5.91.20130417-cvs-ubuntu
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/lib/firefox/firefox...(no debugging symbols found)...done.
(gdb) start
Function "main" not defined.
Make breakpoint pending on future shared library load? (y or [n]) n
Starting program: /usr/lib/firefox/firefox
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffe9b17700 (LWP 3386)]
[Thread 0x7fffe9b17700 (LWP 3386) exited]
(process:3385): GLib-CRITICAL **: g_slice_set_config: assertion `sys_page_size == 0' failed
[New Thread 0x7fffe9b17700 (LWP 3389)]
[New Thread 0x7fffe2cff700 (LWP 3390)]
[New Thread 0x7fffe1ce7700 (LWP 3391)]
[New Thread 0x7fffe0eff700 (LWP 3392)]
[New Thread 0x7fffe06fe700 (LWP 3393)]
[New Thread 0x7fffdfbff700 (LWP 3394)]
[New Thread 0x7fffde9ff700 (LWP 3395)]
[New Thread 0x7fffdd0ff700 (LWP 3396)]
[New Thread 0x7fffdc4ff700 (LWP 3397)]
[New Thread 0x7fffdb18e700 (LWP 3398)]
[New Thread 0x7fffda781700 (LWP 3399)]
[New Thread 0x7fffd9f80700 (LWP 3401)]
[New Thread 0x7fffd90ff700 (LWP 3402)]
[New Thread 0x7fffd88fe700 (LWP 3403)]
[New Thread 0x7fffd80fd700 (LWP 3404)]
[New Thread 0x7fffd78fc700 (LWP 3405)]
[New Thread 0x7fffd67ff700 (LWP 3406)]
[Thread 0x7fffd67ff700 (LWP 3406) exited]
[Thread 0x7fffdd0ff700 (LWP 3396) exited]
[New Thread 0x7fffdd0ff700 (LWP 3407)]
[Thread 0x7fffdd0ff700 (LWP 3407) exited]
[New Thread 0x7fffd67ff700 (LWP 3418)]
[New Thread 0x7fffc62bb700 (LWP 3419)]
[New Thread 0x7fffdd0ff700 (LWP 3420)]
[New Thread 0x7fffc5aff700 (LWP 3421)]
[New Thread 0x7fffc52fe700 (LWP 3422)]
[Thread 0x7fffd67ff700 (LWP 3418) exited]
[Thread 0x7fffc52fe700 (LWP 3422) exited]
[New Thread 0x7fffc4afd700 (LWP 3423)]
[New Thread 0x7fffd67ff700 (LWP 3424)]
[New Thread 0x7fffc52fe700 (LWP 3425)]
[New Thread 0x7fffc42fc700 (LWP 3426)]
[Thread 0x7fffd67ff700 (LWP 3424) exited]
[Thread 0x7fffc52fe700 (LWP 3425) exited]
[Thread 0x7fffc42fc700 (LWP 3426) exited] # Up to here it took a long time
Entered ModifyHeaders.initConfigFile()[New Thread 0x7fffc52fe700 (LWP 3428)]
此时,我被要求输入主密码,但仍然没有出现浏览器窗口。现在至少已经过去了整整一分钟。这种启动和退出线程的游戏会持续一段时间,每分钟添加几行输出,直到最终开始。
如前所述,当我firefox -new-window
从另一个控制台运行时,浏览器窗口会立即打开。一切都已加载并正常工作。在该窗口中浏览一段时间(或者只是等待一段时间,这也有效)后,会出现另一个浏览器窗口,我猜这就是它一直试图启动的窗口。
这似乎是随机发生的。大多数情况下,Firefox 会像往常一样在 2-3 秒内正常启动。此外,重新启动后,该问题也不会持续出现。然而,当它确实发生时,使用killall firefox
并再次尝试并没有帮助;它会一直缓慢启动,直到完全启动一次。
系统信息:
Linux Mint 15 Cinnamon; 3.8.0-19-generic #30-Ubuntu SMP x86_64;来自 Mint 存储库的 Firefox 23。附加组件:Adblock Plus、Bugmenot、Cookies manager+、Cookies Ok、Firebug、Firegestures、Geolocater、修改标题、无 Google Analytics、在新选项卡中打开图像、自毁 Cookies、时尚(实际上未使用)、选项卡自动重新加载、选项卡滚轮滚动、篡改数据、用户代理更改器。
插件:Cinnamon Integration、DivX® Web Player、IcedTea-Web 插件、QuickTime 插件、VLC 多媒体插件、Windows Media Player 插件 10。
您有什么想法吗?或者您需要任何其他信息吗?
编辑:刚刚又吃了一次。似乎是在几个小时没有使用 Firefox 后发生的(系统已关闭),并且 Firefox 有一些处于打开状态的套接字,其状态为 SYN_SENT。我注意到,在这个不安全的 WLAN 网络上,在完成强制门户之前,任何发送到端口!=80 的数据包都会超时。可能就是这样。
另外,我的解决方法firefox -new-window
直到它询问我的主密码(我猜是为了同步)才起作用。那个时候还没有窗口,所以比一路等待要快,但好歹也花了4分钟。
当这种情况再次发生时,我会尝试断开无线网络,杀死所有火狐,然后重试。
答案1
显然这里的无线网络导致了这个问题。当您连接到无线网络时,您首先必须访问未加密的网站(例如http://example.com),之后您将被重定向到登录页面(强制门户)。但是,在您输入凭据之前,与 https 网站(或 80 以外的任何端口)的任何连接都将失败并超时。 Linux 尝试建立连接 (TCP SYN) 5 或 6 次它似乎,并且所有这些都必须超时,然后 Firefox 才知道它无法连接到它尝试安全连接的任何服务器。这就是花了这么长时间的原因。
解决方案:killall firefox; sudo ifdown wlan0; firefox & sudo ifup wlan0
答案2
您的环回接口可能没有 IP 地址。大多数 Linux 子系统(包括窗口管理和 X 服务器)通过环回套接字进行通信。看一看。