> 近況的2018年04月 <

各プロジェクトはこんな感じでした。 ここはnyasu@3webの「近況的雑文集」のページです。
2002年から動いているので、デザインとか、いろいろ古いとか言わないように。当時から古かったけど。
話題の分類
私的プロジェクトその他
[this]
この近況まとめシステム。
[palmsync]
PalmSync
[rubyeb]
RubyEB
[vruby]
VisualuRuby計画(仮称)
[linux]
うちのLinuxBox関係の話題
[win]
Windows関係
[pda]
PDA関係。Palmとか
[ruby]
Ruby一般
[net][web]
ネット系雑談
[etc]
その他雑談

一応話題は計算機関係に縛る予定。予定は未定。
話題による分類ページは作成予定。同上。
あと、独り言がわんさか。

2018-4-25

wndproc via fiddle その3 [vruby]

メッセージポンプであるwhile文(115行〜)に突入するまえにGC.disableしてしまえば、落ちないですね。 @ ruby2.3.3 and ruby2.5.1

WaitMessage()やPeekMessage()、DispatchMessage()等を個別にGC.disable/GC.enableでくくっただけだと落ちるので、やはりGCが動くとダメになる模様。

遅々としたペースながら、調査は一応進んではいるのかな。

とか書きつつ、似たようなことを続けていると、wndprocの中から呼んでるDefWindowProcW()をGC.disable/GC.enableでくくると落ちない(落ちにくい?)ことを発見。

GC.disable return User32::DefWindowProcW(hwnd,msg,wParam,lParam) GC.enable

何が起こっているのか???

これはこれで対処になるのなら、理由の調査はさておき先に進むという選択肢もありか。ただ、「気のせい」「GC.disableの消し忘れ」などの可能性もあるので、(実動で)数日様子を見てみよう。

うーむ。mswin64のruby-2.4だと、ウインドウが移動できないしウインドウを(タスクバーから)閉じてもメッセージループから抜けない。落ちないですが。
いろいろ問題はありますね。


2018-4-24

wndproc via fiddle[vruby]

たしかにGCまわりが関連してるっぽい。@ ruby2.3.3

試しに、DispatchMessage()周りでGCを操作してみる。

  1. 元々はこれ
    User32::DispatchMessageW(msg) if msg.message!=0
  2. GC.disableとenableでくるんでみる。落ちるのが早い気がする(ちょっと状況悪化?)
    GC.disable User32::DispatchMessageW(msg) if msg.message!=0 GC.enable
  3. GC.startしてみる。即落ち(かなり悪化)。startの引数を4通り試しても同じ。
    GC.start User32::DispatchMessageW(msg) if msg.message!=0

GCって結構外から様子を見たり制御したりできるんですね。いろいろ様子を見てみよう... あららGC.stress=trueでも即落ちだ。


2018-4-23

wndproc via fiddle[vruby]

解決は全くしていないのですが、実験用スクリプトから分り易いゴミを削除しただけのスクリプトをアップロードしておきます。誰かがエウレカ!って叫ぶかもしれませんので。

もうちょっと読みやすくしてから、とも思ったのですが、定義の塊はどうやっても読みやすくならないのです。(センスのなさには目をつぶる)
引数の型をいじり回した後なので、おかしな定義があるかもしれません。ただ動作が変わってはいなかったはずです。

90行目のGetModuleHandleW()からが本題です。89行目に#の並んだ行があるのでそれが目印。WndProcは手前52行目からです。

どうでも良さそうなことですが、W系呼び出しのコードなのにファイルが今時SJISであいすみませぬ。

標準出力にダラダラ出すので、適当なコンソールから動かしてください。引数なしです。
起動後しばらくはちゃんとウインドウとして存在してますが、ウインドウ上でマウスを動かしたり、ウインドウを移動し続けたりすると、スコッとインタプリタが落ちます。まれに、ウインドウタイトルバーがなかなか出ない場合もあります(そのうち出ますが)。


fdlwin.rb

ruby本体[ruby]

2.5.1が出たことに気づいてなかったので、まずはダウンロードしました。上のWindowのスクリプトは、ruby2.3系と2.4系で実験してました。

ruby-lang.orgは数年ぶりに見に行った気がします。雰囲気が変わってない割に中身が結構変わってる印象を持ちました(余り覚えてないので具体的に言えない)。


2018-4-22

vrubyまわり[vruby]

先月ちょろっとvruby周りのことを書いてみたら、なんと、複数名の方からリアクションを頂いてしまいました。案外根強い需要があったようで、放置しててすみません。

雪見酒さん(お久しぶりです!)からのメールによると、ちょっとGC周り(とネイティブスレッド周りもか?)を見なければならないようで、現在のRubyへの理解を進めないとダメっぽいです。fiddleと格闘しているときもそうなのですが、64bit rubyだとどうなるんだこれ?などの知識不足による停止が多く、時間不足もあって、実はあれから進んでいません。
またfiddle経由は難しそうだと言うご意見を頂いていたりもします...

なお、3webのメールアドレスはほぼSPAM箱となっており、ちゃんとチェックされていません。実はメールは先ほど読みました... (重ね重ねすみません)。月1あるかないかのペースでしかちゃんと吸い上げてなかったのです。

とりあえず、今やってることは、それなりの決着を付けたいところ。


2018年03月へ

メールを出すつもりの方は

こっちへ