翻訳記事:
いったい Newton OS Error -10061っていうのはなんなんだ?
1998年 4月 26日 登録
もう一つ、大本の文書はAppleが正式にNewton OSの開発を継続しないという発表よりも、さらに二ヶ月前に書かれているものということを前提にお読みいただきたい。一部内容が古いところがある。
原文:Frank Wegener
英語訳:Georg Oehl
日本語訳:バスケ
Date: Wed, 4 Feb 1998 19:36:14 +0100
From: Frank Wegener <wegener@TRAVEL-CS.COM>
Organization: Travel Concept Solutions, Germany
To: NEWTS@TU-CLAUSTHAL.DE [編注. ドイツのNewtonメーリングリスト]
この-10061のエラーは、Newton OSの歴史の中でも、もっとも深刻なエラーである。
我々は昨年の6月からこのエラーに悩まされ続け、Appleに何度も問い合わせを行っ
た。最初彼らは、これは単にPowerTrans側のせいでエラーになっているのではない
か、ということを我々に信じさせようとしていた。当時この現象は、Newerの4MBメ
モリを増設したeMateでしか起こっていなかったからだ。
しかし12月までになるころには、問題は、4MBのメモリを持つほとんど全ての
Newton 2.1デバイスで起こるということがわかってきた。つまりMP2100やアップグ
レードしたMP2000でも起こる。
もし十分な数のパッケージがアクティブになっていさえすれば、この問題はどんな
アプリケーションでも起こるのである。
実際には以下のようなことが起こっている。
NewtonScirpt(インタプリタ)自体は、直接フラッシュRAMにアクセスできるわけ
ではなく、DRAMにしかアクセスを許されていない。すべてのNewtonのパッケージは
フラッシュRAM上に存在している。パッケージをアクティブにするということは、
基本的にはDRAMの一部をフラッシュRAMにマッピングしてアクセスできるようにす
ることである。NewtonのインタプリタがこのDRAM部分にアクセスすると、ページ例
外ハンドラーがフラッシュRAMにある圧縮されたデータを復元しながらDRAM上の適
当な仮想アドレスに読み込む。DRAM(システム・ヒープ)の容量には制限があるた
め、キャッシュを有効に活用されている。このため、くり返しフラッシュRAMのメ
モリにアクセスをしたときも、圧縮に関わる作業を最低限に抑えることが出来るよ
うになっている(4MBのNewtonの速さの秘密はこのことが大きくかかわっている)。
さて、-10061のエラーが起こったときの詳細であるが、Newtonの内部では以下のよ
うなことが起こっている。DRAM上のパッケージにアクセスしようしたときのメモリ
アドレスを見て、Newton OSはそれが正しくパッケージにマッピングされたアドレ
スではないと判断してしまう(これが-10061エラーのもっとも多いケースだ)。こ
れはWindows 95におけるメモリ例外と同じようなものと考えられる。それで、メモ
リを正しくマップする変りに、セグメント違反例外(MMU例外)が発生するのであ
る。
我々がPowerTransでとった対処法は、パッケージ(この場合はPowerTransの辞書)
をアクセスするいたる所に例外処理を埋め込み、もし外部のパッケージを参照して
いるところでNewton OSが-10061エラーを返してきたら、即座に手作業でマッピン
グのキャッシュを再構築した上で、メモリアクセスを続けるという方法だ。これで
問題なく機能している。
しかし問題となる部分が少し残っている。まれにであるが、この例外処理のコード
自体がキャッシュからいなくなってしまっているというときだ。
-10061エラーがメモリ書き込み例外なのではないか?という意見は、次の二つの理
由で意味をなさない。(a) 書き込み処理エラーは別のエラー番号を起すはずであ
る。(b) これほどたくさんのソフトが、MP2000では完ぺきに動作していたのに急に
動かなくなってしまったということを説明できるのか?
なんにせよ、-10061エラーが起こるのは、デバイスがある程度動作した後で、仮想
メモリマネージャが適当な量の仕事をこなした後だけであるようだ。
現在のところ、Appleはこの問題をどう扱ったらいいか困っているようである。
-10061エラーはだいたいランダムに起こるので、再現性に非常に乏しい。彼らは現
在どこでいつエラーが起こるのかを調べている状態である。
PowerTransにおいては、99%の-10061エラーが起こることがわかっている六つの場
所がある。これらの場所を隔離するのは比較的簡単だ。CPUはこれらの場所を250回
は無事に通過したが、突然-10061エラーを起した。何一つメモリ参照を変えていな
いにもかかわらずである。NTKでこれらの現象を調べてみると、参照されていた
パッケージの一部、または全てが、突然仮想メモリ上から消えてしまっていたこと
がわかった。これにより、NTKを使っても-10061エラーを体験できるということが
証明されたのである。おそらくAppleもしばらくしたらこれに気がつくであろう。
少なくとも再現できることはわかると思う。
"BugTrap"(TactileのRobert Bruce作)は、この-10061問題に対する素晴らしい救
済策である。これによってエラー自体が無くなるわけではないが、ユーザーによる
-10061エラーのレポートが得られるというのは我々にとっては非常に助かる話であ
る。
Frank Wegener
Travel Concept Solutions
Newton Quality Software:
PowerTrans 3.2 - Multilingual Translator
PowerTrans Cursive 1.0 - Multilingual HWR
PowerTrans Keyboards 1.1 - Newton Keyboard Driver (Free)
Travel Concept Solutions http://www.travel-cs.com
email: wegener@travel-cs.com
Eckelskamp 10
49086 Osnabrueck voice: +49 (0)5406 3488
Germany fax: +49 (0)5406 3488
_________________________________________________________
Copyright © 1995-1998
Yosuke "Basuke" Suzuki.このホームページの内容について、ページの無断転載を禁止します。
|