2013年9月23日月曜日

firefoxでスクロール時に黒いブロックが出る (Small black box corruption in firefox) (1)

*2013/10/03の記事で内容を追記しました。そちらも参照ください。

以前から、firefoxで画面をスクロールすると黒い小さなブロックが出るようになった。それほど気にならなかったので放置していた。アップデートでそのうち良くなるかと思っていたが、しばらくしても改善されないので、調べてみた。
Ivy Bridgeのドライバ関連の問題らしい。Intel Graphicsを使ってSNA (Sandybridge's New Acceleration)[1]を使っていると現れる。解決策は2つ。

1. SNAの代わりにUXAを使う。[2], [3]
2. ビデオドライバ(xf86-video-intel)をgitのバージョンにする。[3]

解決策1
SNAの代わりの、UXA (Unified Acceleration Architecture)を使えば黒いブロックはでなくなる。

構成は、
MB: P8Z77-M PRO
CPU: i7-3770S
intel-dri 9.2.0-2
libva-intel-driver 1.2.0-1
xf86-video-intel 2.21.15-1
firefox 24.0-1
firefox-i18n-ja 24.0-1

以下、設定ファイルの内容。

/etc/X11/xorg.conf.d/20-intel.conf (SNA使用時):
Section "Device"
   Identifier  "Intel Graphics"
   Driver      "intel"
   Option      "AccelMethod"  "sna"
   Option      "TearFree"  "true"
EndSection


/etc/X11/xorg.conf.d/20-intel.conf (UXAに切り替える):
Section "Device"
   Identifier  "Intel Graphics"
   Driver      "intel"
   Option      "AccelMethod"  "uxa"
   Option      "TearFree"  "true"
EndSection


SNAはUXAより、高速な動作をサポートする。UXAは安定版。できれば、SNAを使いたいところ。今後進展があればSNAに戻したい。

解決策2
こちらは、未検証。AURからインストールすれば良いはず。
$ yaourt -S xf86-video-intel-git



参考:
[1]https://wiki.archlinux.org/index.php/Intel_Graphics#Choose_acceleration_method
[2]https://bugs.freedesktop.org/show_bug.cgi?id=68410
[3]https://bbs.archlinux.org/viewtopic.php?id=169449

bansheeが起動時にクラッシュする ([mono][banshee] SIGSEGV while executing native code, banshee crashes at startup)

ソフトフェアをアップデート後にbansheeが起動できなくなった。以下のエラーが出る。monoの不具合らしい。bansheeはarchlinuxで使っている音楽再生ソフト。時々、この手の問題が起きるのでソフトフェアアップデートには、ハラハラさせられる。以前は、dbus(gconf)の問題[1]だったけど、今回はmonoの問題。
...
  at System.AppDomain.ExecuteAssembly (string) <0x0001c>
  at (wrapper remoting-invoke-with-check) System.AppDomain.ExecuteAssembly (string) <0xffffffff>
  at Booter.Booter.BootClient (string) <0x00092>
  at Booter.Booter.Main () <0x001e3>
  at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) <0xffffffff>

Native stacktrace:

 banshee() [0x4b2f41]
 banshee() [0x509a2b]
 banshee() [0x422752]
 /usr/lib/libpthread.so.0(+0xf870) [0x7f900d7a0870]
 banshee() [0x5f6f1d]
 banshee() [0x5d3b0f]
 banshee() [0x5d98ce]
 banshee() [0x5d9d89]
 banshee() [0x5ef779]
 banshee() [0x5ef834]
 banshee(mono_object_clone+0x26) [0x5b1fb6]
 [0x40d3b066]

Debug info from gdb:


=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries 
used by your application.
=================================================================


[1]+  Aborted                 (core dumped) banshee


この問題は報告済みで、このバグの修正patchが出ている[2]。patchをあててあるmonoは、mono-gitとしてつい先日AURに投稿された (Saturday, 21 September 2013, 12:33 GMT)。以下、インストール。
$ yaourt -S mono-git


念の為、rebootしてbansheeを起動する。crashすることなく起動できた。


参考:
[1]https://bugs.archlinux.org/task/32927
[2]https://bugs.archlinux.org/task/36956?project=1