sys.setprofile and equivalent C API don't track all callable C code
オープン
まだ誰も着手していません。
type-feature
- 主要言語
- Python
- スター
- 77.2k
- フォーク
- 35.9k
- PR マージ指標
- PR 指標を取得中
説明
Bug report
Bug description:
import sys
import mmap
def prof(frame, event, arg):
print(event, arg)
sys.setprofile(prof)
x = mmap.mmap(-1, 10_000)
open("/dev/null")
When run with Python 3.13 on Linux:
c_call <built-in function open>
call None
call None
return None
return None
c_return <built-in function open>
return None
No mention of mmap.mmap(), perhaps because it's a constructor of a type object.
(This is really an issue with the underlying C API, PyTrace_C_CALL is similarly not happening.)
As someone doing profiling, this means that any code running inside C type constructors is invisible, which is problematic and means I'm going to have to change how one of my profilers works.
CPython versions tested on:
3.12, 3.13
Operating systems tested on:
Linux
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
sys.setprofile、mmap.mmap()、open() を使用して Linux の例を再現し、その後 PyTrace_C_CALL と C 型コンストラクターの周辺にあるプロファイリングパスを追跡します。観測されたイベントを、呼び出し可能な C コードに対して期待される可視性と比較します。sys.setprofile と同等の C API を通じて、関連するコンストラクターのアクティビティが一貫して報告されれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- c, python
- 領域
- devtools
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100