mieki256's diary



2019/11/16() [n年前の日記]

#1 [gimp] texturizeプラグインのソースを眺めてる

せっかく Windows10 上で、gimp-texturize プラグインをビルド可能な環境を整えたことだし。ここは一つ、実行すると謎のエラーを出してクラッシュしてしまう原因を調べてみようかと思い立った。

_lmanul/gimp-texturize: Texturize plugin for the GIMP

ということで、チマチマと、printfデバッグ。ソースのあちこちに printf("hoge"); を追記して、ビルドして、GIMP から実行して。どこで不正終了するのか、場所だけでも突き止めようと。

offset.c が怪しい。 :

調べた範囲では、どうやら src/offset.c の、offset_optimal() が呼ばれてからクラッシュしているらしい…。 *1

_gimp-texturize/offset.c at master - lmanul/gimp-texturize

てっきり、calloc や malloc を呼んでいる部分で問題が起きているのではないか、返り値のNULLチェックもしてないし、と予想していたのだけど。

_gimp-texturize/graphcut.cpp at master - lmanul/gimp-texturize
_gimp-texturize/initialiser.c at master - lmanul/gimp-texturize

どうやらそこではなさそうだなと。というのも、NULL が返ってきたらエラーメッセージを出すように修正しても、該当メッセージが全く出てこなかったので。

さておき、offset_optimal() は、difference() という関数を呼び出しているのだけど、この difference() が怪しい。

中では、以下の2つのポインタを使っているのだけど…。
  • patch : 元画像バッファへのポインタ。
  • image : 新先作成画像バッファへのポインタ。
この2つのポインタが、確保されたバッファイサイズを超えて参照されてしまう瞬間がある、ような気がする。特に patch がヤバイ。与えられたアドレス初期値+バッファサイズより、前にも、後ろにも、盛大に飛び出して、全然関係ないメモリ領域の値をせっせと参照している場面があるように思える…。

それとも、patchバッファは元画像サイズ (= width_p * height_p * channels) を持つはずだ、という認識が、そもそも間違っているのだろうか…。

どうしてそれっぽく動く時もあるのか。 :

しかし、全然関係ない領域を参照しているのに、どうしてそれっぽい画像が出来上がっていたのだろう。

どうやら、difference() は、元画像を配置するのに適した場所を探し出すため、元画像と生成画像のピクセル情報を総当たりで取得して差にして返す関数のようで。たまたま偶然、頓珍漢な領域の情報と差を取ってみたら、それらしい差が得られてしまって、ベストポジションを見つけたつもりになっていた…のではないかと。

しかし、稀に、ユーザプログラムが読んではいけないアドレスから値を読もうとしてしまって、その際には不正終了する…ということではないのかなと。

実行するたびに、生成できたり、不正終了したりと、同じ動作にはならなかったけど。その時々で、周辺のメモリ領域に違う値が入ってたから、動作結果も毎回異なっていたのだな…。たぶん。

飛び出さないようにしてみた。 :

バッファサイズを超えずに値を参照するように修正して動作確認してみた。

落ちない。何度実行しても落ちない。ということは、予想は当たってたようだな…。たぶん。

その代わり、4重ループ内で、1ドット参照するたびに、剰余を使ってアドレスを求め直すようにしてしまったので、処理がとんでもなく遅くなった…。まあ、落ちるよりはマシだろうけど…。

生成画像が正しいかどうかはよく分からず。もっとも、自分の予想が当たっていたとしたら、今までも頓珍漢な画像を作っていたはずで。しかし見ていて特におかしいとは思わなかったのだから、生成結果が正しいかどうかなんて目視で判別はできないだろうなと。

*1: DOS窓に printf で文字列が表示されるタイミングがずれてなければの話だけど。

#2 [anime] リュウソウジャー、ガイソーグ活躍回を視聴

録画してたソレを視聴。

凄かった…。とにかく凄かった…。カメラワークは異様に凝ってるし。演技は熱いし。なんだかスゴイ場所で戦ってるし。VFXもカッコイイ。SEもカッコイイ。どのカットもカッコイイ。

こんな マスク割れのさせ方があったとは…。こんな見せ方、思いもつかなかった。

そして、あの台詞を、あそこであんな風に使うとは…。これは燃える。いや、泣く。こんなの見せられたら、ちょっと泣きそう…。

戦隊シリーズと言えばサクサクと話が進む印象があるけれど。今回は役者さんの各演技をじっくり見せようと、ちゃんと尺を使ってみせていた感じで。話の内容と相俟って、若干失礼ながら戦隊とは思えないしっとりした印象に。

最後に メッセージを残してあるあたりにも唸ってしまった。例えば「北の国から」でも何度も使っていたぐらいに、この手のソレは、使い方次第ではあるけれどかなり美味しい手口だろうと思うわけで。上手いな…。ココで使いますか…。やるなあ…。しかも演技が…。この役者さん、やはり間の取り方が本当に上手いなと…。

いやはや、この回は名作なのではあるまいか…。脚本、演出、演技、VFX、どれもこれも良かった。この回は良い。素晴らしい。

以上、1 日分です。

過去ログ表示

Prev - 2019/11 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project