問題タブ [xnu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
677 参照

c - メモリ内の mach_header から Mach-o のシンボル アドレスを見つける

(経由で)メモリにロードされた mach-o ファイルがmmapあり、シンボルに対応するバイナリのアドレスを取得する必要がありますmySym。という関数が見つかり、NSLookupSymbolInImageそれを使用NSAddressOfSymbolして実際のアドレスを取得できると考えましたが、いくつかの問題があります。

  • これらの関数は非推奨です
  • のソースを見るとNSLookupSymbolInImagemach_header渡された はすでに dyld によってロードされている必要があるようです。自分でバイナリをロードしたので、この方法はおそらくうまくいきません。

必要に応じて、自分自身を解析してmach_headerその方法でシンボルを見つけることができることはわかっていますが、これを行うより良い方法があると思います。

基本的に、手動で行うよりも、dyld によってロードされていない macho ファイルからシンボルのアドレスを取得する簡単な方法があるかどうかを知りたいです。

0 投票する
1 に答える
307 参照

macos - HFS+ のみを使用してデバイスをフォーマットすると、OS X 上の仮想 SCSI ディスク デバイス ドライバーが原因でパニックが発生する

現在、IOKit を使用して仮想 SCSI デバイス ドライバーを開発しています。ドライバは正常に読み込まれ、ExFat、FAT32、または HFS+ を使用してデバイスをフォーマットできます。

これらのファイル システムのいずれかで CLI を使用して、仮想デバイスとの間でファイルをコピーすることもできます。ExFat または FAT32 を使用して、Finder を使用して仮想デバイスからファイルをコピーまたは表示することもできますが、ドライブが HFS+ (ジャーナリング) でフォーマットされている場合はできません。

HFS+ を使用すると、Finder、Spotlight、または Preview に関連するカーネル パニックが発生します。これは、たとえば、ファイルがディスクにコピーされた後にシステムがファイルをプレビューしようとした場合に発生します。カーネル パニックのサンプル ログを次に示します。

上記のパニック ログのスタック トレースは次のとおりです。

問題を特定するのに苦労しましたが、上記で示唆されているように、HFS+ に絞り込みました。これを引き起こす可能性のある HFS+ について何か特別なことはありますか?

この問題は VFS とページング (?) に関係しているため、IOMemoryDe​​scriptors を正しく処理しているかどうか疑問に思い始めています (Apple ドキュメントで読んだ内容に基づいて、正しく処理されていると思います)。誰もが同様の問題を経験していますか? これは通常、特定の種類の問題を示していますか?

更新: HFS+ でジャーナリングを無効にしても、上記の結果に影響がないことを確認しました。

UPDATE2: パニックログは毎回一貫しています。パニックは、次のすべての条件が満たされた場合にのみ発生します。

  • HFS+を使用
  • ファイルがデバイスにコピーされます (単一ファイルの場合 > 数 MB)
  • ファイルはFinderを使用してコピーされます(たとえば、端末ではありません)

最初のファイルがデバイスへのコピーを完了すると、カーネルは一貫してパニックになります。数MB以上の小さなファイルをパニックにならずにコピーできます。ターミナルを使用して大きなファイル (> 30 MB) をボリュームにコピーし、それらを Finder で読み取ったり開いたりすることもできます。

0 投票する
1 に答える
213 参照

c - fpirntf() を xnu カーネル tcp_xxx.c に追加すると、stdio.h が見つかりません

スタックオーバーフローの皆さん、よろしくお願いします!

fpirntf() を XNU カーネル tcp_xxx.c ファイルに追加しようとしているので、TCP が移動するときにパラメーターをファイルに出力して、TCP の動作をよりよく理解できるようになりますが、次のような致命的なエラーが発生します。

xnu ソース コードに stdio.h がないように見えます。これを解決するために、xcode 5.0.2 を再インストールし (これのみが xnu-2422 で動作します)、ブート可能な mach_kernel を出力しました。ターミナルで「xcode-select --install」でコマンドラインツールをインストールしようとしましたが、どちらも機能しませんでした。ところで、#include なしで printf() を追加してもエラーは発生しません。印刷関数は stdio.h 以外の名前のファイルで定義されているようです。

私のポイントはTCPパラメータ(輻輳ウィンドウサイズや次のシーケンス番号など)がファイルにどのように変化するかを記録することなので、これを行う方法があれば教えてください.xnuとCはまったく初めてです.プログラミング。

よろしくお願いします。

0 投票する
1 に答える
515 参照

xcode - Xnu のビルドと Xcode での使用

現在、osx でドライバーを開発していますが、Xcode プロジェクトで XNU ファイルを使用すると問題が発生します。ここの指示に従って XNU をビルドしました: http://shantonu.blogspot.co.il/2013/10/building-xnu-for-os-x-109-mavericks.html

正常にビルドされます。

ライブラリとヘッダー ファイルを見つけるために、XCODE の特定のディレクトリにインストールする必要がありますか?

ありがとう。

0 投票する
1 に答える
115 参照

ios - デフォルトのフリーザー (iOS)

Levin は彼の著書Mac OS X and iOS internals: To the Apple's Core に章を持っていました。仮想メモリ管理で使用できるデフォルトのフリーザーに関連しています。で実施されていることが記載されている.osfmk/vm/default_freezer.c

これを書いている時点では、これはまだ不完全でした。これが新しいバージョンの iOS に実装されているかどうかは誰にもわかりませんか? これに関する多くのドキュメントは見つかりませんでした。

0 投票する
1 に答える
1570 参照

macos - スリープ ウェイク エラーの原因となるドライバー

セキュリティ研究として、カスタムIOK​​itドライバーを作成しています。ドライバーは、電源プレーンを介して、依存するドライバーに自身を登録します。(USB サービス)。setPowerState関数が呼び出され、ドライバーが正しくシャットダウンされます。

問題は、ランダムにスリープ ウェイク エラーの問題が発生し、マシンが自動的に再起動することです。実際には、スリープに入った後のマシンのウェイクアップ中にリセットが発生します(明らかに休止状態にしようとしています)

質問は、どうすればデバッグまたは解決できますか? firewire カーネル デバッグを使用して何が起こっているかを確認していますが、デバッガとブレークポイントが原因でスリープ タイミング メカニズムに遅延が生じており、すべてが混乱しています。

この問題に関するインターネットのデータはかなり弱いですが、OSX マシンがクリーンなマシンでスリープ ウェイク エラーを引き起こしているという不満がたくさんあります。

さまざまなマシンとカーネル バージョンでテストしており、持続性があります。

どんな手がかりも役立ちます。

編集:追加のコード