はじめに
XSPECで次のように、理由が分からないまま segmentation fault が起きることがあります。
XSPEC> statistic cstat
Default fit statistic is set to: C-Statistic
This will apply to all current and newly loaded spectra.
Segmentation fault (core dumped)
(動作環境:XSPEC version 12.13.1)
原因:ignore によりデータが消えている
次のようにエネルギー範囲を指定すると、
XSPEC12> data spectrum.pha
XSPEC12> ignore **-Emin Emax-**
設定次第では 有効なデータ点が 0 個 になります。
これが segmentation fault の直接の原因です。
この core dump の危険性
データが存在しない場合でも、
-
pl data
→***XSPEC Error: Unable to plot: no data points found. -
fit
→***Warning: Ill-formed Fit problem - number of variable parameters exceeds number of bins
などのコマンドは segmentation fault にはならず、
「データがない」ことを明示的に教えてくれます。
しかし、
statistic cstat
は 警告を出さずにそのまま segmentation fault で落ちます。
(※筆者が確認した範囲ではこの例ですが、同様の挙動は他のコマンドでも起きる可能性があります)。
そのため、
- モデルやファイルが壊れているように見える
- どこで問題が起きたのか分かりにくい
という状況になりがちです。
まとめ
ignore によって有効データが 0 になった状態で statistic cstat を設定すると、
XSPECは警告なしに segmentation fault を起こすことがあります。
pl data で "no data points found" が出ないかを事前に確認することで、
このトラブルは簡単に回避できます。