[Suzaku:01660] Re: Linuxフリーズ時の調査方法について

菊地 義和 email@hidden
2009年 10月 27日 (火) 18:42:32 JST


yashi 様

お返事ありがとうございます。

> - どこ(システムコール)から呼び出されているか分りますか?

開発したデバイスドライバでコールしてます。

> - 関数が呼ばれたときの条件と時間は、どうですか?

マクロ関数「wait_event_interruptible_timeout(Q,条件,時間)
について記述します。

Qは初期化してます。

条件は2つあり、どちらもカスタムIPのレジスタを参照しております。
1つは、ある値以上になったらwaitを抜ける。
もうひとつは、0になったらwaitを抜ける。

時間は1secにしております。

> - 時間は経過していますか/timerは動いていますか?

すみません。
これはまだ、準備が終わらず、判断がつきません。


> wait_... の後の関数が実行されないからと言って、そこで壊れているか分りま
> せん。たとえば、wait...()が呼ばれた結果、スケジューラーが動いて、
> 他の kernel threadが動き、なにか壊しているかもしれません。

なるほど。wait_event_interruptible_timeout()ですとそういう可能性がある
わけですね。
そうすると、これを使わない方法も考えられますので、試してみます。

>
> なので、スケジューラーに手を入れて、実行しているプロセス IDを表示するよ
> うにすると良いかもしれません。

少し時間が必要ですので、「wait_event_interruptible_timeout()を使わない」を
先に実施してみます。

また報告いたします。

以上

----- Original Message ----- 
From: "Yasushi SHOJI" <email@hidden>
To: "菊地 義和" <email@hidden>; "SUZAKU general discussion list" 
<email@hidden>
Sent: Tuesday, October 27, 2009 6:15 PM
Subject: Re: [Suzaku:01658] Re: Linuxフリーズ時の調査方法について


> At Tue, 27 Oct 2009 17:22:54 +0900,
> 菊地 義和 wrote:
> [...]
>> フリーズしていると思われる箇所は
>> マクロ関数「wait_event_interruptible_timeout(Q,条件,時間)」
>> と思われます。
>>
>> 頻繁に実行される関数で、正常に実行されていること
>> がほとんどなのですが、まれにこの行でフリーズする
>> ようです。この行のあとのprintk()が実行されないところ
>> からそう判断しております。
>>
>> 先に教えていただいている方法、もしくは異なる方法で
>> 上記関数の動作を観察する方法など、ご存知でしたら
>> お教えいただけないでしょうか。
>
> - どこ(システムコール)から呼び出されているか分りますか?
> - 関数が呼ばれたときの条件と時間は、どうですか?
> - 時間は経過していますか/timerは動いていますか?
>
> wait_... の後の関数が実行されないからと言って、そこで壊れているか分りま
> せん。たとえば、wait...()が呼ばれた結果、スケジューラーが動いて、
> 他の kernel threadが動き、なにか壊しているかもしれません。
>
> なので、スケジューラーに手を入れて、実行しているプロセス IDを表示するよ
> うにすると良いかもしれません。
>
> # う〜ん、mbには backtrace()が無いのか…。
> -- 
>          yashi 




suzaku メーリングリストの案内