Japan QualNet Community Forums Japan QualNet Community Forums
Welcome Guest 
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/19:16/18
2024/05/18:20/24

2024/03/20より397/1410
人気モジュール
No.1: フォーラム 15
No.2: QualNet概要 1
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット16

No.1:どっかの巡回ロボット13
No.2:Google巡回ロボット2
No.3:Baidu巡回ロボット1

日曜日からの合計
メイン
   Routing Protocols Implementation & Model Development
     ipHeaderはNULL
投稿するにはまず登録を

題名 投稿者 日時
   ipHeaderはNULL dsen 2008/11/13 17:58
   » Re: ipHeaderはNULL ipoten 2008/11/17 18:59
       Re: ipHeaderはNULL dsen 2008/11/20 17:50
         Re: ipHeaderはNULL ipoten 2008/11/20 18:39
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
ipoten
投稿日時: 2008/11/17 18:59
一人前
登録日: 2005/7/12
居住地:
投稿: 102
Re: ipHeaderはNULL
こんにちは

試しに添付されたシナリオを実行してみましたが、同じ箇所でアサーションストップしました。
私の環境は4.0.1のためか、若干行数は違いますが、以下のようになっています。
Assertion (ipHeader != NULL) failed in file c:\qualnet\4.0\libraries\wireless\src\mac_dot11-sta.h:2581
MacDot11StationSetCurrentMessageVariables:Message pointer is currpted
デバッガでとめてみたところ、これの発生の時点で dot11->currentMessage->packet が NULL になっています。
dot11->currentMessage は、IPからの送信パケットが発生した時点(関数MacDot11NetworkLayerHasPacketToSend())でセットされますが、
NAVやバックオフを待っている間に、破棄されているような雰囲気です。

デバッガで該当アドレスのメッセージ生成と解放を追ったところ、
下記の場所(l.3996)で最後に解放され、それ以降ほかの処理にメッセージ領域が使用されていることが分かりました。
ファイルmac_dot11-sta.h / 関数MacDot11StationStartTransmittingPacket()
3980|//--------------------HCCA-Updates Start---------------------------------//
3981|//Station should send Ack even if NAV is set so that stations can
3982|// receive data from HC in delivery mode.
・・・中略・・・
3990|    else{
3991|        canTx = MacDot11StationCanTransmit(node, dot11);
3992|    }
3993|    if(!canTx){
3994|        MacDot11Trace(node, dot11, NULL,
3995|            "Frame delayed - unable to transmit.");
3996|        MESSAGE_Free(node, packet);	// ←ここ!
3997|        return;
3998|    }
3999|//--------------------HCCA-Updates End-----------------------------------//
ここの処理は、「パケットを送ろうとしたんだけど、PHYのステータスがIDLEじゃないので送信を遅らせる」ということなのですが、
この MESSAGE_Free() で解放しているメッセージはブロードキャストパケットで、dot11->currentMessage そのものです(コピーではない)。
しかし前後の処理で dot11->currentMessage がクリアされている箇所が見当たりません。
ソースコメントをみると、ここの処理はHCCA関連で変更されたソースコードのようですが、
ここでブロードキャストパケットを MESSAGE_Free() するのは妙な気がします。

ちなみにQualNet3.9.5では上記の箇所で MESSAGE_Free() はしていません。
QualNet4.5では上記に該当するコード自体が大きく書き換わっています。
QualNet4.5(.1)のReleaseNotesには、BugFixのそれらしい記述は見つけられませんでしたが、どうも4.0の不具合のような気がします。

サポートに問い合せるか、ほかのバージョンを利用してみてはいかがでしょうか。
フラット表示 前のトピック | 次のトピック
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT