![]() ![]() ![]() | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
ichiko | 投稿日時: 2008/3/4 16:58 |
新米 ![]() ![]() 登録日: 2008/3/4 居住地: 投稿: 17 |
NAV期間と通常状態の定期的遷移でのエラー はじめまして、こんにちは。
QualNet4.0で一つの端末がNAV期間と通常状態を定期的に(10msごとに)遷移するコーディングをしているのですが、下記のようなエラーがでて、シミュレーションが途中(シミュレーション時間で20sほど)で止まってしまいます。それまでは正確に遷移しています。seedによってうまくいく時といかない時があります。 引用: qualnet: ../kernel/src/sched_std_library.cpp:365: clocktype SCHED_STDLIB_NextEventTime(const PartitionData*): Assertion `toVal >= partitionData->theCurrentTime' failed.アポートしました linuxなのですが/kernel/src/sched_std_library.cppを探してもkernelの中にはC++ファイルがないのでどういうエラーが起こっているのかわからなくて困っています。 コーディング内容は簡単に言いますとmac_dot11.cppのMacDot11LayerのeventtypeにNAV期間に入るイベントとNAV期間が終わり通常状態に戻るイベントを加えて、これらのイベントを10ms毎に行き来するというものです。 シナリオはAPに一つの端末しかない状況でCBRで送信しています。 エラーの原因などご教授いただければと思い投稿させて頂きました。よろしくお願いします。 |
hed | 投稿日時: 2008/3/4 17:37 |
一人前 ![]() ![]() 登録日: 2006/7/3 居住地: 京都 投稿: 81 |
Re: NAV期間と通常状態の定期的遷移でのエラー ichikoさんこんにちは。
sched_std_library.cppは公開されておらずオブジェクトファイルしかないようなので、SCHED_STDLIB_NextEventTime関数の詳細はわかりません。 以下はエラー内容を見て想像で書きます。 引用:
このエラー内容は、"toVal" は "partitionData->theCurrentTime"以上のはずだが、そうでなかったということを言っていると思います。 関数名から想像すると "toVal" は次のイベントの開始時刻ではないかと思います。 そうすると、このエラーが起きた原因は、現在時刻より過去にイベントを仕掛けようとしたために起きたエラーではないでしょうか? マルチスレッドで動いているとpartitionData(スレッド)毎にtheCurrentTimeが同期されていないタイミングがあると思います。 この辺が原因ではないでしょうか? 想像ばかりで申し訳ありませんが、何かのお役にたてれば幸いです。 |
ichiko | 投稿日時: 2008/3/4 22:49 |
新米 ![]() ![]() 登録日: 2008/3/4 居住地: 投稿: 17 |
Re: NAV期間と通常状態の定期的遷移でのエラー hedさん貴重なご意見ありがとうございます。
引用: 関数名から想像すると "toVal" は次のイベントの開始時刻ではないかと思います。そうすると、このエラーが起きた原因は、現在時刻より過去にイベントを仕掛けようとしたために起きたエラーではないでしょうか? 確かにpartitionData毎にtheCurrentTimeが同期されていないタイミングがあるかもしれません。 mac_dot11.cppのMacDot11LayerのMSG_MAC_TimerExpiredというイベントからmessageから取り出したtimerSequenceNumberとdot11->timerSequenceNumberが同じ時のみMacDot11HandleTimeout関数に進むことがわかります。 私の作ったイベント内でこのmessageから取り出したtimerSequenceNumberとdot11->timerSequenceNumberをprintf出力させた場合、全く異なっています。たまに同じ数字の時があるのですが… timerSequenceNumberが一致していないことが同期していないことと関係がありそうなのですが、timerSequenceNumberが一致しない原因は主にどんなことが考えられるでしょうか? もしよろしければご教授お願いします。 |
hed | 投稿日時: 2008/3/5 10:35 |
一人前 ![]() ![]() 登録日: 2006/7/3 居住地: 京都 投稿: 81 |
Re: NAV期間と通常状態の定期的遷移でのエラー 引用:
これは、MSG_MAC_TimerExpiredイベントのときと同様に、以下が成り立つときだけ、自作のタイマーハンドラーを呼ぶということですよね。
詳細は特に調べていないのですが、一致しない原因としてぱっと思いついたのは、dot11->timerSequenceNumberのインクリメントのし忘れの可能性はないかなと思いました。 もし自作のメッセージを作成しているのであればこのあたりも疑ってみるといいかもしれません。 ためしにdot11->timerSequenceNumberをインクリメントしている箇所を機械的に検索してみたら以下が見つかりました。
ここでやっていることを参考にしてはいかがでしょうか? |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |