2006-02-08 (Wed)

_ [comp] Fx 1.5.0.1 が落ちるページ

めも - Firefox について より。

 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <style type="text/css">h1 + p:first-letter {float:right;}</style>
 <title>test</title>
 </head>
 <body>
 <h1>a</h1>
<a href="b"><img src="b" alt="b"></a>	 </body>
 </html>

という HTML ファイルを開き、リンクにポインタをのせると SEGV る。1.5.dfsg+1.5.0.1-1vd1 で確認。float:right が float:left でもクラッシュ。 バックトレースを取ってみるとこんな感じ。

#0  0xffffe410 in __kernel_vsyscall ()
#1  0x401aea7d in raise () from /lib/tls/i686/cmov/libpthread.so.0
#2  0x0808217c in nsProfileLock::FatalSignalHandler ()
#3  <signal handler called>
#4  0x0827091c in nsCSSFrameConstructor::GetInsertionPoint ()
#5  0x0827fab7 in nsCSSFrameConstructor::ContentInserted ()
#6  0x0827edf9 in nsCSSFrameConstructor::RecreateFramesForContent ()
#7  0x0827f0d2 in nsCSSFrameConstructor::ProcessRestyledFrames ()
#8  0x0827f21c in nsCSSFrameConstructor::RestyleElement ()
#9  0x0827f44f in nsCSSFrameConstructor::ProcessOneRestyle ()
#10 0x0827f552 in nsCSSFrameConstructor::ProcessPendingRestyles ()
#11 0x0827f5fe in nsCSSFrameConstructor::RestyleEvent::HandleEvent ()
#12 0x0827f631 in HandleRestyleEvent ()
#13 0x401259b7 in PL_HandleEvent () from /usr/lib/firefox/libxpcom_core.so
#14 0x40126288 in PL_ProcessPendingEvents ()
   from /usr/lib/firefox/libxpcom_core.so
#15 0x4012793e in nsAutoCMonitor::Exit ()
   from /usr/lib/firefox/libxpcom_core.so
#16 0x08266d95 in event_processor_callback ()

Bugzilla を漁ってみると、

  • Bugzilla ORG 318592 - [FIX]Crash with evil testcase, using float:right; and .u::first-letter { letter-spacing: 50px; }
  • Bugzilla ORG 322820 - Crash [@ nsCSSFrameConstructor::RemoveFirstLetterFrames] with evil testcase, using float:right; and .u::first-letter
  • Bugzilla ORG 317275 - Evil float:right testcase causes assertions and can crash [@ nsFrame::GetFirstLeaf]

あたりを手繰れてきた。示されてるパッチを当ててみる。Bugzilla ORG 318592 の testcase2 (Bugzilla ORG 3228207) と Bugzilla ORG 317275 のテストケース4つでは落ちなくなったけど、上記問題の HTML ファイルと Bugzilla ORG 318592 の testcase ではまだ落ちる。もっとも両者では落ちる場所が違うんだけど、アテが外れたか。 なお、trunk (Mozilla/5.0 (X11; U; Linux i686; ja-JP; rv:1.9a1) Gecko/20060207 Firefox/1.6a1) では、Bugzilla ORG 318592 の testcase 以外、上記問題の HTML ファイルの含めて問題ないようだ。

_ [debian] w3m 0.5.1+1.946-0vd8

w3mでpipeをクローズしないバグの修正を施して作成。

2006-02-07 (Tue)

_ [vdr] 続・HDD 崩壊の前兆?

しばらく落ち着いたと思っていたら、

Feb  6 06:25:12 XXXXXXXX kernel: hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
Feb  6 06:25:12 XXXXXXXX kernel: hda: dma_intr: error=0x40 { UncorrectableError }, LBAsect=237641434, sector=237641271
Feb  6 06:25:12 XXXXXXXX kernel: ide: failed opcode was: unknown
Feb  6 06:25:12 XXXXXXXX kernel: end_request: I/O error, dev hda, sector 237641271

また出ていた。さすがに対処しないとやばそうだ。

_ [comp] smartmontools

いろいろ検索していると Nano domain - diary: HDD破損ハードディスクのS.M.A.R.T.情報を表示するには という記事を発見。紹介されている smartmontools を早速導入。

# smartctl -a /dev/hda
        :                              
=== START OF INFORMATION SECTION ===
Model Family:     Maxtor DiamondMax Plus 9 family
Device Model:     Maxtor 6Y120P0
Serial Number:    XXXXXXXX    
Firmware Version: YAR41BW0    
User Capacity:    122,942,324,736 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   7           
ATA Standard is:  ATA/ATAPI-7 T13 1532D revision 0
Local Time is:    Tue Feb  7 14:51:22 2006 JST
SMART support is: Available - device has SMART capability.
SMART support is: Disabled    
                              
SMART Disabled. Use option -s with argument 'on' to enable it.

まずこんな感じ。SMART Disabled だそうなので有効にする。

# smartctl -s on /dev/hda
        :
=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.

SMART を有効にした。エラーログを見てみる。

# smartctl -l error /dev/hda
        :
=== START OF READ SMART DATA SECTION ===
SMART Error Log Version: 1
ATA Error Count: 25 (device log contains only the most recent five errors)
        CR = Command Register [HEX]
        FR = Features Register [HEX]
        SC = Sector Count Register [HEX]
        SN = Sector Number Register [HEX]
        CL = Cylinder Low Register [HEX]
        CH = Cylinder High Register [HEX]
        DH = Device/Head Register [HEX]
        DC = Device Command Register [HEX]
        ER = Error register [HEX]
        ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 25 occurred at disk power-on lifetime: 111 hours (4 days + 15 hours)
  When the command that caused the error occurred, the device was in an unknown state.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  40 51 4d 37 1e 2a ee  Error: UNC 77 sectors at LBA = 0x0e2a1e37 = 237641271

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  c8 00 f0 37 1e 2a ee 08   2d+22:20:48.128  READ DMA
  c8 00 f8 2f 1e 2a ee 08   2d+22:20:47.120  READ DMA
  c8 00 00 27 1e 2a ee 08   2d+22:20:46.096  READ DMA
  c8 00 00 27 1d 2a ee 08   2d+22:20:46.080  READ DMA
  c8 00 00 27 1c 2a ee 08   2d+22:20:46.064  READ DMA
        :

に記録されたセクタで UNC (UncorrectableError) と記録されている。ショートテストをしてみる。

# smartctl -t short /dev/hda
        :
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Tue Feb  7 15:14:49 2006

Use smartctl -X to abort test.

テストに2分かかるようなので待つ。結果を表示。

# smartctl -l selftest /dev/hda
        :
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%       142         -

ショートテストではエラーは検出されなかったけど、やばそうなことに変わりはない。

_ [comp] dd でセクタ調査

最近記録されてるやばそうなセクタを調べてみる。

zcat /var/log/syslog*gz | grep "dev hda" | awk '{print $12}' | sort -n > /tmp/sectors

for i in `cat /tmp/sectors`
dd if=/dev/hda of=/tmp/dd-${i}.img bs=512 skip=${i} count=1

これで出てきた /tmp/dd-*.img を見てみると、/var/lib/apt/lists/ 以下のファイルと思しき断片が大量に出てきた。そういや apt-get update を実行した時間と syslog にエラーが記録された時間が一致する。他にも謎のバイナリデータの断片が出てきたけど、正体はわからず。 ひとまず /home ではないようなので安心したけど、早めに HDD を換装しなくては。

_ [debian] gkrellm 2.2.7-8

昨日の問題だけど、即 FIX された。 2.2.7-7vd1 を削除。

_ [debian] xft 2.1.8.2-3

pkg-config xft が freetype2 のパスを吐き出してくれない問題が FIX された。

_ [debian] firefox 1.5.dfsg+1.5.0.1-1vd1

を当てて作成。 bugzilla-org_bug-316636_nsTableFrame.cpp-3.622vs3.623.patch (nsTableFrame.cpp: 3.622 vs. 3.623) は不要になったけど、続・MozFx 1.5 が落ちるページBugzilla ORG 316636 は未だに見えない。 また、Pango サポートがデフォルトで有効になった。

2006-02-06 (Mon)

_ [debian] rxvt-unicode 7.5-1vd1

Orphan されてしまった。×問題対策インチキパッチ vd_rxvt-unicode_latin1-supplement-partly_double-width_encoding-jp.patch を当てて作成。

_ [debian] gkrellm 2.2.7-7vd1

なんか ja.gmo が読まれてない気がしたので strace で調べてみると、/usr/share/locale ではなく /usr/local/share/locale を見に行っている。strings でバイナリを覗いてみると、しっかり /usr/local になっていた。報告しておいた。> #351613 ついでに対策したものを作成。

_ [debian] xchat 2.6.1-0vd2

ja.gmo が入ってなかったので作り直し。ja.po は momonga-linux の xchat-ja.po を利用。

_ [debian] audacious 0.2-0vd2

ja.po を更新して作成。モノは送付。> [translation] ja.po

_ [debian] postgresql-common 41 変

upgrade に失敗する。探してみると #351475 のようだ。そこに示されている workaround で回避。

_ [debian] sylpheed 2.1.999+2.2.0beta8-0vd1

作成。