マグネシウムバージョン(ubuntuから直接インストールされています)の-rte
オプションでインコヒーレントな動作に直面しています。私は誰かがその問題を認識しているのか、私が何か間違っているのかどうか疑問に思っています。マグネシウムの-rteオプションでの不自然な動作
私は、配列の外に誤ったアクセス権を持つプログラムを持っています。 frama-c-gui
でオプションと値の分析を行わないと、範囲外アクセスが検出され、対応する注釈がオレンジ色の円で表示されます。 -rteオプションを使用すると、2つのアノテーションが表示され(配列の下限と上限)、両方に緑色の円が表示されます(これは誤りです)。
/*@ assert rte: index_bound: 0 ≤ cpt; */
/*@ assert rte: index_bound: cpt < 5; */
コンソールは言う:
tableau_erreur.c:11:[value] Assertion 'rte,index_bound' got status valid.
は、私は彼らの両方が同じ「名前」を持っているので、2つの注釈の間に不一致がある疑いがある:index_bound
。
また、誤ったアクセスを含むループの後のコード部分は赤色で色分けされています。これは、以前のエラーのために解析できないと解析が正しく推測したことを示しています。ここで
は私のプログラムである:ここでは
int main(){
int t[5] = {1,2,3,4,5};
int cpt =0 ;
int tmp ;
while (cpt<10){
tmp = getchar() ;
if (t[cpt] > tmp)
{ return 1 ; }
cpt++ ;
}
return 10 ;
}
は(frama-c-gui -rte tableau_erreur.c
を使用して)私のディスプレイのキャプチャです。
私はバグトラッカーを見ていたが、それの痕跡を見つけることができませんでした:私は結果が正しい-rte
オプション(オレンジ色の円)を使用していない場合は
。私はそれをテストするためにFrama-Cのより新しいバージョンをコンパイルすることはできませんでした。
残念ながら、ユーザーがいつFrama-Cをインストールするのに問題があるかを知ることは常に有用です。 OPAMなどの問題かもしれませんが、frama-c-discussリスト([email protected])の誰かが役立つかもしれません。 – anol
これは本当に大きなバグです。これはできるだけ早く修正されます。ご報告いただきありがとうございます.SOとFrama-C BTSをご覧ください。あなたの質問について、「私は何か間違っていますか?」と答えても、答えは不可能ですが、ValueとRTEを一緒に使うことは珍しいことです。 (これは、このバグがあまりにも長い間気づかれなかった理由です)好奇心の外に、そうする特別な理由がありますか? – byako