高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先


Technote 1096

Mac OS 7.6.1


目次

Mac OS 7.6 からの変更と改善

・Process Manager

・CFM-68K Runtime Enabler

・Memory Manager

・ドライバ

・その他


新機種のサポート

・アップデートされたコンポーネント

これまでに報告されている問題点

Mac OS 7.6 のリリースとともに、Apple は Mac OS の段階的な開発戦略の第 1 歩を踏み出しました。この戦略は、年 1 回のリファレンスリリース (小売りチャネルを通じて販売される完全に独立したバージョン) と、リファレンスリリースと次のリファレンスリリースの間に提供される複数のアップデートから構成されています。

Mac OS 7.6.1 は、この戦略を実現するための次のステップです。Mac OS 7.6 に対するこのアップデートには、次の 2 つの目標がありました。

  • バグフィックスにより安定性を向上させる。

  • Mac OS 7.6 のリリース時にサポートされていなかった新機種でも Mac OS 7.6 の機能を使用できるようにする。
このアップデートでは新しい機能が追加されることはありません。また、すでにインターネットやオンラインサービスのダウンロードサイトを通じて入手できるテクノロジーにもアップデートは加えられません。

Mac OS 7.6 の詳細については、「TECHNOTE 1090 -- Mac OS 7.6」を参照してください。


Mac OS 7.6 からの変更と改善

Process Manager

タイプ 11 エラー
Mac OS 7.6.1 の最大の変更点は、ほとんどすべてのタイプ 11 エラーが表示されなくなったことです。これまで、Power PC ネイティブコードのクラッシュは、大部分“miscellaneous fatal error”コード、つまりタイプ 11 にマップされていました。Mac OS 7.6.1 では、実際のエラーコードを計算し、正しいコード番号をレポートするようになりました。詳細についてはTechnote 1011 -- Understanding Type 11 & No FPU Installed Errors on the Power Macintoshをご覧下さい。

これまで、MacsBug がインストールされていなかった場合は、タイプ 11 エラーが発生すると、“システムエラーが発生しました”ダイアログが表示され、強制的に再起動するしかありませんでした。Mac OS 7.6.1 では、これらのエラーの大部分がフォアグラウンドアプリケーションを“予期せず終了”させることになります。このエラーが発生した後ではシステムを再起動することを推奨しますが、Finder の“特別”メニューの“再起動”または Apple メニューの“システム終了”を使用できるようになりました。

タイプ 12 エラー
Mac OS 7.6 では、Debugger または DebugStr 命令を持つアプリケーションがタイプ 12 エラーの原因になることがあり、このエラーが発生した場合は、システムを再起動せざるを得ませんでした。Mac OS 7.6.1 では、このエラーが発生すると、「アプリケーションが予期せず終了する」ことになり、通常の方法を使って再起動ができるようになりました。

タイプ 112 エラー
同じ Time Manager タスクを繰り返しインストールするアプリケーションでは、VM の遅延タスクキューがオーバーフローすることがあり、その結果として Mac OS 7.6 ではタイプ 112 エラーが発生し、Mac OS 7.6 よりも前のシステムはクラッシュまたはハングを起こしていました。Mac OS 7.6.1 では、重複したタスクを検出して、それらのインストールを中止することにより、このような状況は発生しなくなりました。詳細についてはTechnote 1069 -- System 7.5.5をご覧下さい。

Process Manager のヒープ
使用可能なメモリが最小サイズと推奨サイズの中間であるとき、Process Manager のヒープには若干のメモリ (300K) が確保されることになります。これにより、複数のアプリケーションが使用可能なメモリをすべて占有してしまうことを防止し、QuickTime などのモジュールを実行し続ける余地を残すことができます。

デフォルトスタックサイズ
バックグラウンドアプリケーションはデフォルトのスタックサイズが2Kから8Kに増加されました。これはスタックとヒープの衝突を避けるためです(問題はC、C++、Pascal等の高級言語で書かれたバックグラウンドアプリケーションはTechnote 1070Inside Macintosh: Memoryなどで書かれている方法を使ってスタックサイズを増やす以前に、ライブラリの初期化関数が呼ばれてしまうことでした)。バックグラウンドアプリケーションとデフォルトスタックサイズの変更方法についてはTechnote 1070 -- Background-Only Applicationsをご覧下さい。

CFM-68K Runtime Enabler

Mac OS 7.6 を使用する 680X0 マシンでは Code Fragment Manager が無効になっていましたが、Mac OS 7.6.1 では、これらのマシンに新しい CFM-68K Runtime Enabler がインストールされます。

CFM-68K のバグの背景については、「TECHNOTE 1084: Running CFM-68K Code at Interrupt Time: Is Your Code at Risk?」を参照してください。

ObjectSupportLib 1.2
新しい CFM-68K のバグフィックス版には、このバージョンの ObjectSupportLib が必要です。OSL の以前のバージョンにはバグがあり、CFM-68K アプリケーションをサポートしていませんでした。詳細については、「TECHNOTE 1095: Object Support Library Version History」を参照してください。

Memory Manager

BowelsOfTheMemoryMgr
Macsbugでアドレスを表示する場合、Macsbugは最後に見つけたシンボルからのオフセットを表示します。Mac OS 7.6およびそれ以前が動作している Power Macintosh の Modern Memory Manager の場合、最後に見つかるシンボルは __HSetStateQ でした。 __HSetStateQ 以降のコードは、 Memory Manager の様々な内部サブルーチンです。そのため、 Memory Manager の内部サブルーチンでハングアップあるいはクラッシュした場合、 Macsbug では __HSetStateQ+xxxxxxxx と表示されました。

多くのエンジニアは「 __HSetStateQ でクラッシュした」というバグレポートにうんざりしており、Mac OS 7.6プロジェクトを開始するときに、 Memory Manager に新しいシンボルを追加するという決定をしました。それにより、バグレポートが幾分かは意味を持つようになると考えたのです。当初、新しいシンボルを YourHeapIsCorrupt という名称にしようとしたのですが(というのも、通常はプログラムが Memory Manager をクラッシュさせた場合に表示されるからです)、その時点での位置を示すという意味で BowelsOfTheMemoryMgr というシンボルに決定しました。

以上の理由から、 BowelsOfTheMemoryMgr+xxxxxxxx でハングアップあるいはクラッシュした場合には、 HCコマンド を実行してヒープが壊れていないかどうか確認をして(おそらくは壊れているはずです)、それからデバッグを開始してヒープがどの様にして壊れたのかをつきとめて下さい。

ハンドルのロック解除
QuickTime にだけ影響を与える Memory Manager の条件がバグフィックスされました。Mac OS 7.6 では、すでにメモリ内に常駐していてロックされているハンドルを呼び出すとき、呼び出しが終わった後でハンドルのロックが解除されていました。このため、ハンドルがロックされていないものとして移動された後、QuickTime でそのハンドルを使用しようとすると、システムがクラッシュしていました。

ドライバ

ATA (IDE)

  • これまで、ATAマネージャで一度に大きなデータ転送(1MBを超える)をすると、クラッシュしてしまうことがありました。大きなデータ転送は複数回に分けて転送されますが、スタックフレームが転送を行うたびに追加されていたため、スタックオーバーフローが発生する可能性がありました。この問題は解決されました。

  • SCSIおよびATAマネージャは、同じ遅延タスクキューを共有します。これまでのATAマネージャでは、先頭のキューエレメントがATAタスクとして検出されると、キューに含まれる次のタスクもATAタスクであると無条件に見なしていました。このため、SCSIおよびATA転送を同時に行うと、10秒程度あるいは致命的なシステムハングが発生していました。Mac OS 7.6.1のATAマネージャは、後に続くタスクが実際にATAタスクであるかどうかを正しく判断するようになりました。

フロッピー
これまでクラッシュの原因になっていたMFSディスク(400K片面フロッピーディスク)への書き込みができなくなりました。これらのディスクは今後、読み取り専用となります。

シリアル
RxD+ラインがアースされている場合にフレームエラーが発生するという PowerBook 3400 及び Power Macintosh5400/5500/6400/6500 の問題が解決されました。この問題は、次の2つの条件下で発生していました。
  • 接続されているシリアルデバイス (モデムやデジタルカメラなど) の電源がオフになっている。

  • 未使用のピンをアースする RS-232 ケーブルを使用している。
このバグは、シリアルドライバがフレームエラーを検出したときにリセットを追加することによってフィックスされました。

ATIのグラフィックアクセラレータ
以前のバージョン( ATI Graphics Accelerator と ATI Graphics Accelerator 2機能拡張)では、ビデオキャプチャを妨害する長時間にわたる割り込みレイテンシーが発生することがありました。Mac OS 7.6.1でインストールされる ATI Graphics Accelerator 1.1.4 機能拡張ではこれらの割り込みレイテンシーの時間が短縮されています。

DriverLoaderLib
Driver Loader Libraryはシステムフォルダ内でファイルタイプが 'ndrv' のファイルを開けてディスクベースのドライバをロードします。以前は1つのファイルに複数の 'ndrv' を入れることはできませんでした。Driver Loaderはファイルの1つ目のフラグメントの TheDriverDescription export symbolを見て、有効な 'ndrv' が存在するかどうかと、どのデバイスに適応するのかを判断していました。DriverLoaderLib(DLL)は1つのファイルに複数の 'ndrv' をサポートするようになりました。 'ndrv' を1つしか含まないファイルはいままで通り認識されます。1つのファイルに複数の 'ndrv' を入れる場合は次のような変更を加えます。
  1. 'cfrg'は拡張データ型でなければなりません。
  2. コードフラグメント名はデバイスの名前と一致しなければなりません。
例えば、Mac OS 7.6.1に含まれているIMSドライバの「 9600 Graphics Accelerator 」ファイルには 'ndrv' が2つあります。ドライバの 'cfrg' リソースは次のようになります。
#define UseExtendedCFRGTemplate 1 #include "CodeFragmentTypes.r" resource 'cfrg' (0) {     {         extendedEntry {                 kPowerPC, kFullLib, kNoVersionNum, kNoVersionNum,                 kDefaultStackSize, kNoAppSubFolder,                 kIsLib,kOnDiskFlat,kZeroOffset,kWholeFork,                 "IMS,tt128mb8A",/* standard internal name: used by CFM */                                 /* must match the name of the DEVICE */                                  /* start of extended info */                 'ndrv', /* DLL looks for this to see if ndrv */                 "",                 "",                 "",                 "IMS TwinTurbo 128M8A"  /* external name: may be seen by user */         }     } }; 
DLLはファイル内の各項目について、この拡張型 'cfrg' リソースを探して、 'cfrg''ndrv' を含んでいるかどうかを判断します。

その他

  • これまで、PowerBook のバッテリ容量不足を警告するメッセージには 3 種類のものがありました。今後、PowerBookのバッテリ容量不足は、2種類のダイアログで警告されます。これはユーザフィードバックに基づいた変更です。表示される警告は次の2種類になります。

    • スリープの約 10 秒前

    • 10 秒前の警告ダイアログに先立つ約 2〜4 分前

  • AppleVision ソフトウェアがシステムフォルダ内に存在する場合、すべての PowerPC コンピュータと、サポートされているすべての 680x0 ベースのコンピュータに「モニタ&サウンド」コントロールパネルがインストールされるようになりました。AppleVision v1.5.1 には、「モニタ&サウンド」が必要です。

  • 一部の PowerBook 1400 コンピュータで輝度やコントラストが低いときに発生していた、画面にグラデーションパターンが表示されるという問題が解決されました。輝度やコントラストの設定範囲が調整され、この問題は発生しなくなります。

  • 7.5.5のDRエミュレータで追加されたマイナーなバグフィックスの内、2つはMac OS 7.6に反映されていませんでした。システムソフトウェア7.5.5についてはTechnote 1069 -- System 7.5.5をご覧下さい。7.6.1には、このバグフィックスが含まれます。

  • ブート時のスタートアップスクリーンに対する GetPort および SetPort 呼び出しが追加されました。これにより、ディスクドライバのパスワードダイアログが正常に動作するようになりました。

  • 7200、7500、8500、および 3400 のビデオドライバに存在していたガンマ設定のバグがフィックスされました。周波数の固定されているモニタが7200、7500、8500シリーズに接続され、かつ256色モードに設定されていると、ディスクベースのドライバは標準ガンマ設定を正しく適用していませんでした。

  • これまで、起動時刻とシステム終了時刻が 24 時間以上離れていると省エネルギー設定は保存されませんでした。この問題は解決されました。


新機種のサポート

次のMacintosh機種についてはMac OS 7.6での動作が保証されていません。これらの機種を7.6.1にアップデートするにはMac OS 7.6.1 CDを使わなければなりません。
  • Power Macintosh
    • 4400
    • 5500
    • 6500
    • 7300
    • 8600
    • 9600

  • PowerBook 3400
    • PowerBook 3400は専用のアップデータ、及びMac OS 7.6.1 CDが使用できます。

アップデートされた項目

Apple システム・プロフィール 1.1.4
IDEベースのCD-ROMドライブがサポートされました。

Apple ビデオプレーヤ 1.6/Video Startup
  • Apple ビデオプレーヤは AppleScript に対応しました。
  • PowerBook 3400 シリーズで、PCMCIA カードによるビデオキャプチャと TV 受信がサポートされました。
Apple CD-ROM 5.3.3
より高速なIDE CD-ROMドライブのサポートが追加されています。以前のApple CD-ROMドライバ5.3.1は、そのドライブ用のドライバがインストールされているかどうかに関わらず、すべてのSCSI CD-ROMドライブをサポートするようになっていました。このため、Apple CD-ROMドライバが提供する以上のサポートを必要とするような、CD-ROMチェンジャー(CD-ROM jukebox)というような特別なハードウェアでは問題が生じていました。Apple CD-ROMの5.3.1以前、および、それ以降のバージョンは、Apple純正のCD-ROMドライブのみをサポートしています。

Apple Dual Processor HAL 1.4.1
Multiprocessing API Libraryが複数のプロセッサを認識するためのハードウェア抽象レイヤです。Multiprocessing API Libraryと同じフォルダに格納する必要があります。Apple純正ハードウェア以外については、追加のHALや異なるHALが必要になる場合もあります。この項目は9600 MPのCPUのサポート用として追加されました。

PC カード機能拡張 2.5
FinderのデスクトップにPCMCIA記憶装置(PCカード)を自動的にマウントします。PCMCIAスロットを持つすべてのPowerBookで使用することができます。Mac OS 7.6以前ではマウントが自動的に行われず、ユーティリティを使わなければなりませんでした。

PowerBook 3400用の新規、又はアップデートされた項目
  • PowerBook 3400 Ethernet
  • PowerBook 3400 Internal 33.6
  • PowerBook 3400 Modem
  • PowerBook Ethernet (PCI)
  • PowerBook Zoomed Video
  • Serial (Built-in) 1.2.2
  • 自動再マウント 1.2.3
  • コントロールバー
  • Energy Saver
  • 一般設定
  • Infrared
  • Powerbook
  • トラックパッド

これまでに報告されている問題点

Power MacintoshやPerformaの5400、6360、6400シリーズのL2キャッシュ
Power Macintosh や Performaの5400、6360、6400シリーズでは、Mac OS 7.6.1アップデートをインストールするとL2キュッシュが使用されなくなり、パフォーマンスが低下してしまいます。この問題は以前のバグフィックスにコンパイラのオプティマイズ処理が重なったために起きました(バグフィックスは「5400/6400 Update 1.1」機能拡張の一部でしたが、Mac OS 7.6.1からはシステムファイルに組み込まれています)。対処方法はMac OS 7.6を再インストールするしかありません。「5400/6400 Update 1.1」をインストールしてもパフォーマンスは向上しません。現在、アップルコンピュータでは対応措置を調査しています。

MPEG
Mac OS 7.6.1ではQuickTime MPEGカードが使えません。Mac OS 7.6.1はQuickTime MPEGカードがインストールされていても、'mpeg'のGestaltセレクタを定義しません。Apple ビデオプレーヤはこのGestaltセレクタをチェックしますので、コントロールウインドウにはムービのアイコンが表示されません。ソフトウェアMPEGのQuickTime MPEG機能拡張がインストールされているとGestaltセレクタは定義されますが、MPEGカードではなく、ソフトウェアMPEGが使われます。QuickTime MPEGがインストールされていなければGestaltセレクタは定義されません。Mac OS 7.6.1でQuickTime MPEGカードを使えるようにする方法はありません。

Connectix Speed Doubler
Mac OS 7.6.1とともに、バージョン1.3.1以前またはバージョン2.0のSpeed Doublerを使用すると問題が発生します。これらのバージョンのSpeed Doublerを使っている場合は、Mac OS 7.6.1 Updateをインストールすると自動的に使用停止になります。Connectixではこの問題を認識しており、現在、無料のアップデータを提供しています。詳細については、ConnectixのWebサイト(http://www.connectix.com/)を参照するか、輸入販売元までお問い合わせください。

LaserWriter 8.3.4
Mac OS 7.6.1とLaserWriter 8.3.4の組み合わせで、デスクトッププリンタを使ってファイルへの出力を行うと問題が発生します。680x0コンピュータで新しいバグフィックス版のCFM-68Kが正常に動作しません。この問題は、Mac OS 7.6.1 Updateをインストールした680x0コンピュータのみで見られます。この問題を回避するには、LaserWriter 8.4を使ってください。 LaserWriter 8.4は、 Apple SW Updates 、 America Online(キーワード:AppleComputer)、 CompuServe(GO APLSUP)からダウンロードできます。

CFM と長いシンボル名
半角63文字を超えるシンボル名でCFMエラーが発生します。これはJavaアプレットで見られることがあります。この問題については、次のような回避方法を使うか、シンボル名を63文字以内で定義してください。
pascal OSErr   MyFindSymbol ( CFragConnectionID  connID,                              ConstStr255Param   symName,                              Ptr *              symAddr,                              CFragSymbolClass * symClass ){	OSErr err;	err = FindSymbol ( connID, symName, symAddr, symClass );	if ( (err == paramErr) && (symName[0] > 63) ) {	   // paramErr のバグを含む CFM を使っている点に注意	   long index, limit;	   Str255 name;	   err = CountSymbols ( connID, &limit );	   if ( err != noErr ) goto EXIT;	   for ( index = 0; index < limit; index += 1 ) {		  err = GetIndSymbol ( connID, index, name, symAddr, symClass );		  if ( err != noErr ) goto EXIT;		  if ( EqualString ( name, symName, false, false ) ) goto EXIT;	   }	   err = cfragNoSymbolErr;	}	EXIT:	return err;}
この問題はMac OS 8で解決され、文字数の制限が半角255文字になる予定です。

PowerBook と Open Transport 1.1.2
Open Transport 1.1.2はPowerBook 3400より以前にリリースされたため、PowerBook 3400の動作に必要なリソースが含まれていません。PowerBook 3400でOpen Transport 1.1.2をインストールする必要がある場合は、Open Transport 1.1.2をインストールした直後にPowerBook 3400専用のMac OS 7.6.1アップデートをインストールして下さい。そうすると、特定のLocalTalkリソースが正しくアップデートされます。古いリソースが入っていると、赤外線通信とLocalTalkの切り替え時にクラッシュする場合があります。ネットワークを切り替える際に問題が起きるようであればMac OS 7.6.1アップデートを再インストールして下さい。

DayStar 68040 アップグレードカードと仮想メモリ
Mac OS 7.6.1 Updateの仮想メモリ機能は、DayStarの68040アクセラレータカードと互換性がありません。DayStarの68040アクセラレータカードは仮想メモリをオフにしない限り使えません。Mac OS 7.6とMac OS 7.6.1アップデートを16MBより少ないメモリを搭載している680x0コンピュータにインストールすると自動的に仮想メモリが「入」になります。16MB以上あると、現在の設定がそのまま活かされます。DayStarの68040クセラレータカードを使用していて、かつRAMが16MBより少ない場合は、次の方法で問題を回避できます。
  1. マシンからカードを取り外します。

  2. Mac OS 7.6 へのアップグレードを行います。

  3. Mac OS 7.6.1 へのアップグレードを行います。

  4. 仮想メモリを「切」にします。

  5. カードを取り付けてマシンを起動します。
3D イメージと OpenDoc の 3DMF ビューア
QuickDraw 3D 1.5または1.5.1をインストールしている場合、OpenDocの3DMF ビューア 1.0.1では3Dイメージを表示できません。QuickDraw 3D 1.5または1.5.1をインストールしていると、3DイメージをOpenDoc文書にドラッグアンドドロップしようとするとき、メモリ不足のメッセージが表示されます。この問題は、「ファイル」メニューの「情報を見る」を使ってビューアのメモリサイズを増やしても解決できません。3DMF ビューアを使うには、QuickDraw 3Dの以前のバージョンをインストールしてください。

AppleVision 1710シリーズのモニタとPower Macintosh 6100/7100/8100シリーズ
Mac OS 7.6.1アップデートをインストールすると、NuBusベースPower MacintoshのAVディスプレイコネクタに接続されている1710シリーズのモニタでは640x480より高い解像度が使えなくなります。この問題は、AV機能を持たないPower Macintosh(7100/8100)や他の高性能ビデオカードでも見られます。内蔵ビデオやPCIベースのPower Macintoshでは問題が発生しません。

この問題は2つの回避方法があります。
  1. AppleVisionモニタを内蔵ビデオに接続する。

  2. Mac OS 7.6のクリーンインストールをする。これでAVディスプレイのすべての解像度が使えるようになります。

参考文献
  • TECHNOTE 1090: Mac OS 7.6は、Mac OS 7.6 に加えられたさまざまな変更と改善が詳細に説明されています。
  • 一般ユーザ向けの情報については「Mac OS 7.6.1について」をご覧下さい。

更新日: 1997 年 4 月 11 日