タグ

ブックマーク / firewood.hatenadiary.jp (3)

  • Debug Hacks Conference 2009 - firewood's diary

    Debug祭りに参加してきた。 1. ネタ 憧れのオライリーを書くということでオライリーメーカーを使ったら消せなくなっちゃった。 straceを使ったデバッグ。ログが大量に出るが、先頭のほうは無視してよく、後ろから見て行ってエラーになっている部分から探すのが手っ取り早い。 次のの準備中。(消費電力関係?) 2. に載らなかったネタ あるファイルはどのプログラムが吐いているのかを調べたりするときに、rpmコマンドがけっこう使える。rpm -qfであたりをつけてrpm -qlで探したり。その他のファイルアクセスにはstraceが使える。 シェルスクリプトをデバッグするときはbash -xとか。 SysRqネタを書いている途中でカーネルのバグに気づきパッチを送付したらakpm氏がマージしてくれた。(かっこいい!) 3. GDBのデバッグスクリプト GDBはユーザー定義コマンドで構造体表示

    Debug Hacks Conference 2009 - firewood's diary
  • 汚いなさすがPerlきたない - firewood's diary

    Shibuya.pm #11「no Perl; use x86;」鑑賞してきた。 常々PerlはLLじゃないんじゃないかと思っていたのだが、LLの皮をかぶったアセンブラであることを再確認したのであった。 1. catcher in the int 80h; inside lleval FreeBSD::i386::Ptraceの実装について。 pt_to_sce()でsystemcallを実行直前にフックできる。スタックに積まれた引数を書き換えることができるので、実行したくないオペレーションであればSEGVで死ぬような引数に書き換えることでsandboxを実現。 forkは引数がないのだが、EIPを0に変更することはできるので、それで殺す。アドレス0にmmapされるとSEGVで死ななくなってしまうのでそれも抑止する。 2. Perl sandbox for Linux fork() sys

    汚いなさすがPerlきたない - firewood's diary
    mitsuki_engawa
    mitsuki_engawa 2009/04/23
    「LLの皮をかぶったアセンブラ」
  • 14.318180MHz - firewood's diary

    Linux のスリープ処理、タイマ処理の詳細を見る これに触発されてWindowsだとどんなもんなのか、自分の記憶があやふやだったので確認してみた。 処理1(低精度) DWORD Timestamp[256]; int i; for ( i = 0; i < 256; ++i ) { Timestamp[i] = ::timeGetTime(); // ここに処理を入れる Sleep(1); } これの結果は 15, 31, 47, 62, 78, 93 という感じになる。 OSや機種など環境に依存するが、XPだと15msのことが多いようだ。 単に待てばいい処理ならこれでOK。 処理2(精度向上) timeBeginPeriod( 1 ); Sleep( 1000 ); // 精度向上が反映されるのを待つ DWORD Timestamp[256]; int i; for ( i = 0;

    14.318180MHz - firewood's diary
  • 1