Kazuhiro's blog
ようこそ! Kazuhiro's blog
日曜日, 11月 28 2021 @ 11:43 午前 JST
 記事を友人にメールする 印刷用画面 

Hyper Estraier bug report

general

前回の続きです。

Hyper Estraierのインデックスがoptimizeで壊れる問題はHyper Estraier側の問題でした。

  1. 転置インデックスが複数ファイルにまたがる (通常1.5GiB以上)。
  2. 複数回の書き込みが行われている。

上記に当てはまるインデックスにoptimizeをかけるとひっそりと転置インデックスが壊れることがあります。また、

  1. ドキュメントの数がとても大きい (確認したものでは約580万)。
  2. 各ドキュメントに共通するテキストがとても多い (英語主体で、N-gramを有効にしたインデックスで確認)

上記に当てはまるインデックスにoptimizeをかけると転置インデックスの1ファイルに2GiB以上書き込んでしまい、壊れてしまう事があります。

修正内容はGitHubのリポジトリを参照してください。ついでに2GiB以上のキャッシュサイズの指定に対応していますが、その3倍弱くらいのメモリが必要になるケースがありました。

タグ:Hyper Estraier QDBM

 記事を友人にメールする 印刷用画面 

QDBM bug report その2

general

以下の記事は間違いでした。変更で挙動は変わったのですが、変更する前のコードは正しく、挙動が変わった原因は現時点では不明です。

前回に引き続き、QDBMのバグ報告です。

cbdatumcat関数およびCB_DATUMCATマクロが必要なバッファの大きさを1バイト少なく見積もるというものです。 手元ではなぜかSEGVにはならずにプログラムは実行されてしまいますが、Hyper Estraierで巨大なインデックをoptimizeするとインデックスが壊れてしまい、searchできるが不適切な結果が返るようになるバグが修正されました(「巨大な」は必須条件ではく、その方が起きやすいというだけです)。前回分と併せてGitHubのリポジトリで公開しておきます。

タグ:QDBM Hyper Estraier

 記事を友人にメールする 印刷用画面 

QDBM bug report

general

かなり今更ですが、久しぶりにHyper EstraierQDBMを自分でビルドしたらうまく動作せず、結局 QDBM のバグだったので一応お知らせしておきます。

最初はsourceforgeにあるHyper EstraierのMLに投稿したのですが、unsubscribeしていたみたいでモデレータ送りになった為、こっちで公開することにしました。

 記事を友人にメールする 印刷用画面 

OpenWrt on OpenBlocks 600 その2

general

以前にOpenBlocks 600でOpenWrtを動かす記事をかきましたが、その後、使用していたKernel 4.19のサポートが無くなり、2021年3月時点ののOpenWrtにはKernel 5.4と5.10のサポートが入っています。

OpenBlocks 600もKernel 5.4での動作を確認していますが、dwc_otgドライバはコンパイルは通りますが動作はしませんでした。また、これは4.19の時もそうでしたが、ハードウェア暗号化アクセラレータも(多分)正常動作しません。

ちなみに、Kernel 5.10ではPowerPC 405を使用したデバイスのサポートが落とされていってるので、そのうちに使用できなくなるかもしれません。

タグ: OpenWrt OpenBlocks 600

 記事を友人にメールする 印刷用画面 

OpenWrt on OpenBlocks 600

general

OpenBlocks 600ファームウェア更新終了が発表されたから、というわけでもありませんが、眠らせておくのももったいないのでOpenWrtを入れてみました。 ただし、OpenWrtにPowerPCのサポートは入っているものの、OpenBlocks 600に搭載されているPowerPC 405についてはbroken扱いになっている為 (2018年10月現在。2019年5月にremoveされました。)、platformを増やす方向でやってみました。 見よう見まねでやった (見まねにもなっていないところもあります) ので、platform (target) / subtarget / device の切り分けがぐちゃぐちゃです。イメージの作成方法もこれで正しいのか全く分かりません。

OpenBlocks標準のflashcfgではU-Bootイメージしか書き込めないようなので、initramfsのfactoryファームで起動して、そこからsysupgradeでファームウェアを導入します。factoryファームについてはフラッシュROMに書き込んでもいいし、TFTP経由やCFブート (factoryファームをext2フォーマットのCFにuImage.initrd-cfbootの名前で書き込み、ディップスイッチのSW3をonにして起動) のいずれかでいけるはずです。私自身はCFブートで行いました。

直接は関係ない変更も混じってますが、一応公開しておきます。興味のある方は試してみてください。