2005年1月 1日

[openoffice:6726] Re: 異常発生時における、作業内容の自動復旧機能

清水@川崎さん

ども、Toraです。また、長くなってしまった。反省 (^^;

>>=========================================================================
>>OpenOffice.org / StarSuite では、アプリケーションに異常が発生しても、
>>多くの場合作業内容は自動的に退避され、再起動時に復旧されます。
>>※MS Office 2003には同様な機能が導入されています。
>>=========================================================================
>>OOo / SS は、異常が発生したその時点で、お亡くなりになる直前に自動的に

>>隠しフォルダへその時点での作業内容を保存します。そして再起動時にその
>>隠しフォルダ内のファイルから自動復旧してきます。
>
> とのことですが、OOo/SSが上記の機能を搭載しているというのは確かな
> のでしょうか? ご教示願えれば、幸いです。

はい。確かです。

ただし、限界はあります。もう少し正確にいいますと、「異常が発生した」
というのは、

・内部で C++ 言語の Exception が発生し、適切な場所で catch されず、
 一番上位の例外ハンドラが catch した。
・UNOのAPI呼び出しで Exception が発生し、それが適切な場所で catch
 されずに、一番上位の例外ハンドラが catch した。
・assert() の引数が偽となって、assertion fail を発生させた。
・OOo/SS などのユーザープロセスが処理可能でかつ自プロセスで処理する
 と宣言している割り込みが発生した。

などです。異常が発生すると、

   OpenOffice.org 1.1.x エラーレポート
   .....あ〜だらこーだら.....
    [ 戻る ] [ 次へ ] [ 送信 ] [ 送信しない ]

が突如出現します。何かしらのボタンを押してエラーレポート処理を終了
もしくは中断すると、OOo / SS の各ウィンドウの下端のステータスバー上の
左端に「ドキュメントを保存しています。」と表示され、プログレスバーが
左から右へ走ります。
そして、

   予期しないエラーが発生しました。
   変更したファイルはすべて保存されているので
   次のプログラム起動で復元されるはずです。
       [ OK ]

という最後のメッセージを表示したあと、お亡くなりになります。

※変更が加えられていなくて保存する必要がない場合、すでに保存済みで
その後変更していない場合、つまり、ツールバー上のフロッピーディスク
の形をしたアイコンが灰色になっていて押せないファイル、については、
「変更したファイルはすべて保存されているので次のプログラム起動で復元
されるはずです。」と言い残しているにもかかわらず、保存する必要が
ありませんので、保存されません。したがって復元対象にはなりません。

次回の起動時には、
   ファイル "無題1" を復元しますか。
    [ はい ] [ いいえ ] [ キャンセル ]

というダイアログがスプラッシュスクリーンの次に現れます。[はい]と答
えると、まさに異常発生を呼び起こしてしまった処理のその直前の状態の
内容が復元されます。

以上のように本機能は、数分前に保存されていたような内容を復元するよう
な機能とは関係ありません。この機能は、OOo 1.0.x / SS 6 からあります。
StarOffice 5.2 にあったかどうかは、私は知りません。

> というのも、以前、サン社に聞いたときには(MS-OfficeXP以降に搭載さ
> れているのと同等の)修復機能は搭載していないとの説明を聞いた記憶が
> ある

はい。正しい回答です。Office XP のそれとは、異なっています。

なお、エラーレポート機能は OOo 1.1.x および SS 7 で追加された機能です。
エラーレポートで送信する情報は、スタックトレース情報と共有ライブラリなど
のメモリマップなどの情報、および、ユーザーに善意で入力してもらう以下の
項目などです。

・エラーが発生したときに使用していたドキュメントの種類(例:プレゼンテーション)
・エラーが発生したときの OpenOffice.org 使用状況
・[ ]このレポートに関して Sun Microsystems がユーザーに連絡してもさしつかえない。
  ・ユーザーの E-Mail アドレスを入力してください。

これらをまとめて、XML 形式のテキストで、http プロトコルによって、送信します。

>(ただし、日本語版の最初のバージョンが出た頃のことですし、今と
> なってはうろ覚えです)のと、今回あらためてWindows版OOo1.1.2/StarSuite7
> で新規文書を作成して実験してみた範囲ではやはり働いていないように思
> えるためです。
>  ※OOo1.1.3およびLinux版では未実験です。

最近は、なかなかクラッシュしてくれないので、各アプリケーションには
「隠しコマンド」が用意されているそうです。でも私は忘れちゃいました。
例えば、Calc では、セルに「=なんたら」という呪文を入力すると、わざ
とクラッシュするという仕掛けです。

Linux で試してみる方法です。
soffice &
ps -ef | grep soffice.bin
kill -SEGV soffice.binのプロセス番号

SEGV とは、Segment Violation (セグメント違反: 不正なメモリアドレスを
参照した) です。このようにして、わざと OOo / SS のプロセスがセグメン
ト違反を起こしたんだという状況を仮に作り出すというトリックです。他の
同様な割り込みでも動作します。

余談ですが、9番目の -KILL (つべこぺ言わずに、頼むから絶対に死んでくれ)
では、ご存知の通り、なすすべもなく、お亡くなりになります。というか、
そうじゃないと困りますよね。

保存先のディレクトリは、UNIX系では、インストール先/user/backup です。
再起動する前に、find インストール先 -ctime 0 などで、本日作成された
ファイルを見つけてみてください。

では、お楽しみあれ。
Tora


--[PR]------------------------------------------------------------------
         ★☆★  「懸賞侍」見参!!  ★☆★
       侍ゲームで楽しく遊んで、豪華賞品を当てちゃおう!
            この戦国懸賞時代を制するのは君だ!
          さあ、バッサバッサと当ててしまえ!!!
      http://www.kenshosamurai.com/regist.html?aid=frml041227
------------------------------------------------------------------[PR]--
■GMO GROUP■ Global Media Online www.gmo.jp


投稿者 xml-rpc : 2005年1月 1日 23:27
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/3825
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。