MacbookにてD02HW終了時カーネルパニックが発生?

概要

emobile D02HWMacbookで利用する場合、ネットワーク切断後ユーティリティ・アプリケーション終了時にカーネルパニック(下記画像のようなメッセージが表示される)を起こす可能性がある

現象時スペックなど

Hardware
Macbook2.0GHz, D02HW
OS
Mac OS X(10.5.6)
Driver
D02HW_utility_mac_V1_02

説明など

  • カーネルパニックが発生した際、記憶のほとんどではD02HWを切断後すぐアプリケーション終了した場合だった
  • 同じ現象は簡単には一件のみ検索でヒットした(下記「参照」を参照)
  • 参照エントリは切断時にカーネルパニックが発生していると書かれているが、こちらでは若干違う模様
  • この問題はGoogleで「D02HW mac」と検索した結果でいくつか出ているような不具合(たとえば下記「参照」「Leopard(レパード) でEmobile(イー・モバイル) D02HW不具合」)とは違うよう

推測と検証

推測
  1. 接続完了が終了しない状態でアプリケーションを終了させている可能性がある
  2. 接続完了が終了しない状態でアプリケーションを終了させると、カーネルパニックを起こす可能性がある
  3. 問題はアプリケーションの終了をネットワークの正常な切断後に行っているかどうか
  4. USBハードウェアのネットワーク接続確認用ランプやアプリケーション切断メッセージは「切断」を示しているが、実際のプロセスは切断できていないのではないか

接続完了が終了しないうちのアプリケーション終了とカーネルパニックの因果関係はひとまず保留し、切断と表示の関係のみ調査することに

この判断の根拠
  • ネットワークの状態を上部メニューバーに組み込んだ際の切断状態のタイミングが上記UIの情報と違う
  • メニューバーが切断を示した後にアプリケーションを終了させると問題ない(経験則)
  • 下記ログ
検証:D02HW 切断時のイベント・タイミングのテスト
  • 12:00:10 アプリケーション内「Disconnect(切断)」ボタン押下

~1sec

  • 12:00:11 アプリケーションの切断メッセージ表示

~7sec

  • 12:00:18 メニュー・バーの「Disconnecting(切断中)」メッセージの表示終了
system.log (/var/log/system.log)
  • 上記タイミングに対応したものを抽出(12:00:11のタイミングについては記載出来るものなし、また内容は編集したもの)

Jan 28 12:00:10 so-no-macbook [0x0-0x270270].com.yourcompany.MobileConnect[2110]: kSCNetworkConnectionDisconnecting (3)
Jan 28 12:00:10 so-no-macbook [0x0-0x270270].com.yourcompany.MobileConnect[2110]: kSCNetworkConnectionPPPDisconnectingLink (10)
Jan 28 12:00:10 so-no-macbook [0x0-0x270270].com.yourcompany.MobileConnect[2110]: kSCNetworkConnectionDisconnecting (3)
Jan 28 12:00:10 so-no-macbook [0x0-0x270270].com.yourcompany.MobileConnect[2110]: kSCNetworkConnectionPPPDisconnectingLink (10)

Jan 28 12:00:17 so-no-macbook [0x0-0x270270].com.yourcompany.MobileConnect[2110]: kSCNetworkConnectionDisconnected (0)
Jan 28 12:00:17 so-no-macbook [0x0-0x270270].com.yourcompany.MobileConnect[2110]: kSCNetworkConnectionPPPDisconnected (0)

結論(のようなもの)

  • アプリケーションの切断完了メッセージ表示以降だいぶ経って実際の切断が完了している模様
  • 実際の切断前(ネットワーク切断後すぐ)のアプリケーション終了はカーネルパニックを引き起こす可能性があるかは未検証(ながら可能性はある)
  • その場合を想定して以下を注意することは悪くないかも(カーネルパニック云々以前にきちんと行儀よくアプリケーションは終了させた方がよいという意味でも)
    • メニューバーにネットワーク状態を表示させ、その状態で判断する
    • 切断後すぐアプリケーションを終了させない(10秒以上はおく)
  • 上記はあくまで推測にすぎず厳密な調査は必要

メニューバーへのネットワーク状態の表示方法、等

設定方法
「System Preferences」→「Internet and Network」→「Show menu status in menu bar」にチェックを入れる
  • 注意:英語版の表示です
  • 接続状態ではモデムのアイコンと接続時間が表示される
  • 切断を選択すると「Disconnecting(切断中)」のメッセージが表示され、切断が完了するとモデムのアイコンのみになる

付録

2009-01-25-175550.panic (/Library/Logs/PanicReporter)

Sun Jan 25 17:55:50 2009
panic(cpu 0 caller 0x001A9C68): Kernel trap at 0x56afc1fb, type 14=page fault, registers:
CR0: 0x8001003b, CR2: 0x42bead74, CR3: 0x01873000, CR4: 0x00000660
EAX: 0x42bead74, EBX: 0x12887088, ECX: 0x00000000, EDX: 0x0000000d
CR2: 0x42bead74, EBP: 0x50bfbd78, ESI: 0x0000000d, EDI: 0x00000000
EFL: 0x00010212, EIP: 0x56afc1fb, CS: 0x00000008, DS: 0x07070010
Error code: 0x00000002

Backtrace (CPU 0), Frame : Return Address (4 potential args on stack)
0x50bfbb88 : 0x12b4f3 (0x45b13c 0x50bfbbbc 0x1335e4 0x0)
0x50bfbbd8 : 0x1a9c68 (0x464700 0x56afc1fb 0xe 0x463eb0)
0x50bfbcb8 : 0x1a038d (0x50bfbcd0 0x1da74105 0x50bfbd78 0x56afc1fb)
0x50bfbcc8 : 0x56afc1fb (0xe 0x48 0x50bf0010 0x10)
0x50bfbd78 : 0x56afe792 (0x12887088 0xd 0xc 0x6da6a00)
0x50bfbdb8 : 0x59b211 (0x12887000 0x1288707c 0x0 0xfa3)
0x50bfbe28 : 0x78a1c5 (0x6bd3800 0x6da8a00 0x0 0xfa3)
0x50bfbe98 : 0x78a2cf (0x6bd3800 0x14fd1b20 0x621bbf 0x0)
0x50bfbec8 : 0x78a43a (0x6bd3800 0x0 0x50bfbef8 0x40de1a)
0x50bfbef8 : 0x78a5d4 (0x6bd3800 0x0 0x421326 0x6d53dc0)
0x50bfbf18 : 0x4224ff (0x6bd3800 0x6d7b480 0x1 0x19eb5b)
0x50bfbf68 : 0x42165c (0x6d7b480 0x0 0x1 0x3df356)
0x50bfbf98 : 0x42133e (0x6d53dc0 0x50bfbfdc 0x50bfbfc8 0x1a8ddc)
0x50bfbfc8 : 0x1a017c (0x6d53dc0 0x0 0x10 0x126ca4c0)
Backtrace terminated-invalid frame pointer 0
Kernel loadable modules in backtrace (with dependencies):
com.Huawei.driver.HuaweiDataCardDriver(2.8.6)@0x56afb000->0x56afffff
dependency: com.apple.iokit.IOSerialFamily(9.3)@0x5c6000
dependency: com.apple.iokit.IOUSBFamily(3.2.7)@0x596000
com.apple.driver.AppleUSBOHCI(3.2.7)@0x787000->0x791fff
dependency: com.apple.iokit.IOPCIFamily(2.5)@0x60b000
dependency: com.apple.iokit.IOUSBFamily(3.2.7)@0x596000
com.apple.iokit.IOUSBFamily(3.2.7)@0x596000->0x5befff

BSD process name corresponding to current thread: kernel_task

Mac OS version:
9G55

Kernel version:
Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00 PST 2008; root:xnu-1228.9.59~1/RELEASE_I386
System model name: MacBook5,1 (Mac-F42D89C8)