2006-01-26 (Thu)

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

作成。

_ [comp] .NET vs Mono 1.1.13.1

とある .NET アプリが Mono ではクラッシュしてしまうのでいろいろ調べてみる。その .NET アプリはソースがないので、そのアプリ自体のバグのせいでクラッシュしているとしても、Mono 側に手を入れてインチキすることにした。 まずウィンドウ自体が開かずにクラッシュ。

Unhandled Exception: System.Exception: Value '-91' must be greater than or equal to 0.
in <0x000a0> System.Windows.Forms.ScrollBar:set_LargeChange (Int32 value)

とりあえず mono-1.1.13.1/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ScrollBar.cs の LargeChange で、value が 0 未満なら例外を投げるのではなく value を既定値の 10 にセットすることにした(.NET Framework クラス ライブラリ ScrollBar.LargeChange プロパティ)。これを潰してもまだウィンドウ自体が開かずにクラッシュ。

Unhandled Exception: System.Exception: Value '-9' must be greater than or equal to 0.
in <0x0009e> System.Windows.Forms.ScrollBar:set_SmallChange (Int32 value)

同様に value に既定値の 1 をセット(.NET Framework クラス ライブラリ ScrollBar.SmallChange プロパティ)。 ひとまずウィンドウは開くようになったけど、今度はファイルダイアログを開こうとするとクラッシュ。

Unhandled Exception: System.ArgumentNullException: Argument cannot be null.
Parameter name: path
in <0x0006b> System.IO.FileSystemInfo:CheckPath (System.String path)
in <0x00025> System.IO.DirectoryInfo:.ctor (System.String path)
in (wrapper remoting-invoke-with-check) System.IO.DirectoryInfo:.ctor (string)
in <0x00035> System.Windows.Forms.DirComboBox:CheckChildOf ()
in <0x001ae> System.Windows.Forms.DirComboBox:CreateComboList ()
in <0x00020> System.Windows.Forms.DirComboBox:set_CurrentPath (System.String value)
in (wrapper remoting-invoke-with-check) System.Windows.Forms.DirComboBox:set_CurrentPath (string)
in <0x0002e> System.Windows.Forms.FileDialog+FileDialogPanel:ChangeDirectory (System.Object sender, System.String path_or_special_case)
in (wrapper remoting-invoke-with-check) FileDialogPanel:ChangeDirectory (object,string)
in <0x00021> System.Windows.Forms.FileDialog:set_InitialDirectory (System.String value)
in (wrapper remoting-invoke-with-check) System.Windows.Forms.FileDialog:set_InitialDirectory (string)

mono-1.1.13.1/mcs/class/Managed.Windows.Forms/System.Windows.Forms/FileDialog.cs の InitialDirectory で、value が null ならば value に “.” (カレントディレクトリ) をセットするようにした。 ファイルダイアログは開けるようになったけど、開いた直後にクラッシュすることがある。ウィンドウにフォーカスを当てていると駄目なようだ。

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object
in <0x00009> System.Windows.Forms.Document+Marker:op_LessThan (Marker lhs, Marker rhs)
in <0x001af> System.Windows.Forms.Document:SetSelectionToCaret (Boolean start)
in <0x000a7> System.Windows.Forms.TextBoxBase:TextBoxBase_MouseUp (System.Object sender, System.Windows.Forms.MouseEventArgs e)

mono-1.1.13.1/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextBoxBase.cs の TextBoxBase_MouseUp から mono-1.1.13.1/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TextControl.cs の SetSelectionToCaret は false つきで呼ばれている。selection_anchor.line が null ならば selection_anchor.line に caret.line をセットするようにした。 ファイルダイアログからファイルを保存しようとすると、ファイル名をつけられない。例えばファイルタイプ「.txt」の状態でファイル名に「hoge」または「hoge.txt」とつけて保存しようとしても、「.txt」というファイルに保存されてしまう。ファイル一覧から選んで上書きするには問題ないが、エントリに入力したファイル名は取得されていないようだ。なんかよくわからないので、保存する前に手動で touch してそれに上書きするようにした。

_ [debian] mono 1.1.13.1-1vd1

上記 workaround patch の vd_mono-1.1.13.1_dirty-workaround.patch を当てて作成。

_ [debian] rxvt-unicode 7.3a-0vd1

×問題対策インチキパッチ vd_rxvt-unicode_latin1-supplement-partly_double-width_encoding-jp.patch を当てて作成。

2006-01-25 (Wed)

_ [debian] xft 2.1.8.2-1

最初 xft-2.1.1-MakeBold-20040405.patch を当てて 1vd1 を作成したけども、全ての文字が一回り太字になってしまった。これはもしかするとボールド化機能が xft に入ったのかな。ということで調べてみた。

  1. xft-2.1.1-MakeBold-20040405.patch を当てて ~/.fonts.conf に何も手を入れてない: 全ての文字が一回り太字に。
  2. xft-2.1.1-MakeBold-20040405.patch を当てて ~/.fonts.conf で
     <edit name="embolden" mode="assign">
       <bool>false</bool>
     </edit>
    

とする: ボールド化されるけどサイズがおかしい文字がある。それにせっかく xft にボールド化機能が入ったんならそれを使ったほうがよさそう。

  1. 素の 2.1.8.2-1 で ~/.fonts.conf に何も手を入れてない状態: だと、ボールド化される文字とされない文字があったりと何かおかしい。

  2. 素の 2.1.8.2-1 で ~/.fonts.conf にFedora Coreと日本語フォント完結(?)編にある

     <!--
      Synthetic emboldening for fonts that do not have bold face available
     -->
     <match target="font">
       <!-- check to see if the font is just regular -->
       <test name="weight" compare="less_eq">
         <const>medium</const>
       </test>
       <!-- check to see if the pattern requests bold -->
       <test target="pattern" name="weight" compare="more">
         <const>medium</const>
       </test>
       <!-- set the embolden flag -->
       <edit name="embolden" mode="assign">
         <bool>true</bool>
       </edit>
     </match>
    

を追加: ボールド化自体は問題なさそうだけど、ボールド化されたアルファベット同士の間がなんか空いてる。

さらなる設定でどうにかなりそうだけど当面は 4. のままで。 xft 2.1.7-1vd1 を削除。

_ [comp] suspend2 2.2 for 2.6.15.1 (swapfile+swapwriter) 変

ついに rc が取れたので試してみる。サスペンドは問題ないけどレジュームで kernel panic。

Kernel panic - not syncing: Failed to read chunk 0/XXXXX of the image. (-5)

_ [comp] suspend2 大訂正

今の今まで勘違いしまくっていたので訂正。Using a swapfile の writer は filewriter ではなく swapwriter。ずーっと swapfile の writer は filewriter だと思ってた。なので、

  • swapwriter → swappartition+swapwriter
  • filewriter → swapfile+swapwriter

と過去めもを全部訂正。訂正めも一覧。

filewriter を疑ってた部分は全て濡れ衣。swappartition+swapwriter はしばらく使ってないのでわからないけど、少なくともおかしいのは swapfile+swapwriter。filewriter 関係の fix を当てても直らないと言っていたけど、swapfile+swapwriter で問題が起こっているのだから見当違いもいいところ(続・suspend2 2.2-rc16 for 2.6.15 (swapfile+swapwriter) 変, 続々・suspend2 2.2-rc16 for 2.6.15 (swapfile+swapwriter) 変)。filewriter を(濡れ衣で)疑って正解だったこともあるけどこれは偶然(suspend2 2.2-rc14 (swapfile+swapwriter) 変)。以上、filewriter を疑っていたことと間違いめもを半年近く続けていたことをお詫びします。

_ [comp] suspend2 2.2 for 2.6.15.1 (filewriter)

気を取り直して、改めて filewriter を使ってみる。Requirements for the filewriter と Installing the new kernel を確認しつつ。

  1. /etc/hibernate/hibernate.conf でファイルを指定。
    FilewriterLocation /var/lib/suspend2/file 1000
    
  2. hibernate –no-suspend を実行。ABORT するかもだけど、ひとまずファイルの位置「file:/dev/hdaX:0xXXXXXXX」を確認。
  3. /boot/grub/menu.lst に設定。
    resume2=file:/dev/hdaX:0xXXXXXXX
    
  4. reboot。
  5. hibernate –no-suspend を実行して確認。今度は ABORT せずに進むはず。
  6. サスペンド。
  7. レジューム。

問題なくサスペンドとレジュームができた。

2006-01-23 (Mon)

_ [debian] patch 2.5.9-3vd1

vd_patch-2.5.4-2-reject-udiff-format.patch を当てて作成。

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

作成。

_ [debian] w3m 0.5.1+1.946-0vd7

w3m-dev-4129.patch を当てて作成。

_ [debian] 続・libbinio 1.4-1vd1

reportbug を使って積極的に報告しようと思い立ったので #349458 に投げてみた。文面は #144481 をパクった。

_ [comp] mono-debugger 0.11 変

パッケージのビルドを試行錯誤しつつ繰り返していたら、もともとビルドされて配布されている wrapper/Mono.Debugger.Cecil.dll と test/TestBreakpoint.exe が clean 時に削除されてしまってビルドできなくなったり。 ビルドできた後も System.ArgumentException: Cannot compare addresses from different domains AddressDomain 等々でひっかかってうまく動かない。