検証

CBMC

いつの間にかCBMCがオープンソースになっていた。 http://www.cprover.org/cbmc/svnでversion4.1のソースをダウンロードできる。 svn co http://www.cprover.org/svn/cbmc/releases/cbmc-4.1 これらを書いたころはver2.4のみソースが公開され、Currentの3.9…

障害に関すること

いろいろあって、障害というものについてちょっとだけ書いてみる。 万が一のときに壊滅的致命的破滅的災害にいたる技術を、人間は使っていいものか。 いい方悪いが飛行機事故で最悪1000人規模。スタジアムに落ちれば桁がかわってくるか。では原発事故では?…

JavaPathFinderの備忘録

名前しか知らなかったjavaPathFinderを数時間いじってみた。 ダウンロード、セットアップ JavaPathFinderから最新版をダウンロード。解凍すれば問題なく動作する。 できること Javaのバイトコードを読み込んで、デッドロックや競合状態の有無などを検査する…

CBMCの使い方入門:3

実際に使われている800行規模のCプログラムに対してCBMCを使ってみる。 ここでは拙作mcbというmemcachedのベンチマークプログラムを俎上にのせる。このプログラムのバージョン1.0rc2はここで指摘されているように、初歩的なミスを含んでいる稚拙なものであっ…

CBMCの使い方入門:2

次回に向けて、はやくも落ち穂拾い。 double intだけでなくdoubleでも使えるか、確認。 #include <stdio.h> #include <stdlib.h> #include <assert.h> int main (int argc, char **argv) { int _rand = rand(); double r; #ifdef __CBMC__ __CPROVER_assume(0 <= _rand && _rand <= RAND_M</assert.h></stdlib.h></stdio.h>…

Postgres-XC GTM(GlobalTransactionManager)の多重化 JGroups版

Postgres-XCの単一障害点であるgtmを多重化するmgtmを作ったので公表する。これはAPPIA版の改良でJGroupsを使っている。 2011年2月現在、最新版はver0.9.3〜0.9.4だが、mgtmはver0.9.2で動作する。もうすこしUI修正や動作を整えてから公開しようと思ったが、…

フォーマルメソッド、モデル検証のための弁明

昨日、某懇親会で天文関係者と話す機会があり、なぜか一瞬フォーマルメソッドの話に。情報工学ってのはほんとにサイエンスなのかい?*1ってな流れから。 否定的な意見も少なくないフォーマルメソッドについて、注目している理由を書いてみる。 それ動くの? …

CBMCの使い方入門:1

"CBMC"というモデル検査ツールの使い方を学ぶ。組込み分野では有名なツール。すでに開発終了したという人もいる*1が、最新版3.9は2010.12.19リリース。2010年には3.6,3.7,3.8,3.9と4バージョンリリースなので、アクティビティが落ちているようにはみえない。…

SPIN(Promela)によるpgpool-IIのモデル検証

冬頃、SPINでPostgreSQLのレプリケーションツールのひとつであるpgpool-IIをモデル検証していたのを思い出したので、一部公開する。 replication-strictモードの挙動 手始めにv2.0で廃止されたreplication-strictモードの挙動をspinで調べてみる。