OSSのバグの対処方法の探し方

github.com

OSSの一つであるOpenstack tacker を使用していた際、 あるユースケースにおいて、バグを確認した。 それをworkaroundにて対処した方法について記載する。

まず、バグの再現を行い、バグが存在することを再確認する。 次に、有識者にアドバイスをもらい、バグが発生している箇所にあたりを付ける。 バグを調べるために、ソースコードに変数を出力するためのソースを仕込み、 成功時、バグ発生時の変数の出力結果を比較する。 今回は以下のようなログを出力するソースを仕込んで確認した。 loggingライブラリだと何故か、ログを出力できなかった。

path = 'test.txt'
with open(path, mode='a') as f:
    f.write('var: {}\n'.format(var))

成功時、バグ発生時の変数を比較結果が異なる箇所を次々と追う。 比較結果の差異を発生させているソースコードを見つけ、そのソースコードの修正が無いか、確認する。 今回、バグを出力させるソースコードは、githubで管理されており v2.3.0のタグが付与されていたのだが、最新のmasterブランチの修正内容を反映させることで、 バグを回避することができた。