diff --git a/core/box/capacity_box.d b/core/box/capacity_box.d index da96ecae..d5efed4b 100644 --- a/core/box/capacity_box.d +++ b/core/box/capacity_box.d @@ -1,7 +1,8 @@ core/box/capacity_box.o: core/box/capacity_box.c core/box/capacity_box.h \ core/box/../tiny_adaptive_sizing.h core/box/../hakmem_tiny.h \ core/box/../hakmem_build_flags.h core/box/../hakmem_trace.h \ - core/box/../hakmem_tiny_mini_mag.h core/box/../box/ptr_type_box.h \ + core/box/../hakmem_tiny_mini_mag.h \ + core/box/../box/hak_lane_classify.inc.h core/box/../box/ptr_type_box.h \ core/box/../hakmem_tiny.h core/box/../hakmem_tiny_config.h \ core/box/../hakmem_tiny_integrity.h core/box/capacity_box.h: @@ -10,6 +11,7 @@ core/box/../hakmem_tiny.h: core/box/../hakmem_build_flags.h: core/box/../hakmem_trace.h: core/box/../hakmem_tiny_mini_mag.h: +core/box/../box/hak_lane_classify.inc.h: core/box/../box/ptr_type_box.h: core/box/../hakmem_tiny.h: core/box/../hakmem_tiny_config.h: diff --git a/core/box/carve_push_box.d b/core/box/carve_push_box.d index 2f31266b..ba99a90d 100644 --- a/core/box/carve_push_box.d +++ b/core/box/carve_push_box.d @@ -1,8 +1,8 @@ core/box/carve_push_box.o: core/box/carve_push_box.c \ core/box/../hakmem_tiny.h core/box/../hakmem_build_flags.h \ core/box/../hakmem_trace.h core/box/../hakmem_tiny_mini_mag.h \ - core/box/../box/ptr_type_box.h core/box/../tiny_tls.h \ - core/box/../hakmem_tiny_superslab.h \ + core/box/../box/hak_lane_classify.inc.h core/box/../box/ptr_type_box.h \ + core/box/../tiny_tls.h core/box/../hakmem_tiny_superslab.h \ core/box/../superslab/superslab_types.h \ core/hakmem_tiny_superslab_constants.h \ core/box/../superslab/superslab_inline.h \ @@ -38,6 +38,7 @@ core/box/../hakmem_tiny.h: core/box/../hakmem_build_flags.h: core/box/../hakmem_trace.h: core/box/../hakmem_tiny_mini_mag.h: +core/box/../box/hak_lane_classify.inc.h: core/box/../box/ptr_type_box.h: core/box/../tiny_tls.h: core/box/../hakmem_tiny_superslab.h: diff --git a/core/box/free_publish_box.d b/core/box/free_publish_box.d index f6b54e27..8cf05ceb 100644 --- a/core/box/free_publish_box.d +++ b/core/box/free_publish_box.d @@ -7,7 +7,8 @@ core/box/free_publish_box.o: core/box/free_publish_box.c \ core/superslab/../hakmem_tiny_config.h core/tiny_debug_ring.h \ core/hakmem_build_flags.h core/tiny_remote.h \ core/hakmem_tiny_superslab_constants.h core/hakmem_tiny.h \ - core/hakmem_trace.h core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h \ + core/hakmem_trace.h core/hakmem_tiny_mini_mag.h \ + core/box/hak_lane_classify.inc.h core/box/ptr_type_box.h \ core/tiny_route.h core/tiny_ready.h core/hakmem_tiny.h \ core/box/mailbox_box.h core/box/free_publish_box.h: @@ -26,6 +27,7 @@ core/hakmem_tiny_superslab_constants.h: core/hakmem_tiny.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: core/tiny_route.h: core/tiny_ready.h: diff --git a/core/box/front_gate_box.d b/core/box/front_gate_box.d index e2a3a373..e6884f18 100644 --- a/core/box/front_gate_box.d +++ b/core/box/front_gate_box.d @@ -1,6 +1,7 @@ core/box/front_gate_box.o: core/box/front_gate_box.c \ core/box/front_gate_box.h core/hakmem_tiny.h core/hakmem_build_flags.h \ - core/hakmem_trace.h core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h \ + core/hakmem_trace.h core/hakmem_tiny_mini_mag.h \ + core/box/hak_lane_classify.inc.h core/box/ptr_type_box.h \ core/tiny_alloc_fast_sfc.inc.h core/hakmem_tiny.h \ core/box/tiny_next_ptr_box.h core/hakmem_tiny_config.h \ core/tiny_nextptr.h core/tiny_region_id.h core/tiny_box_geometry.h \ @@ -27,6 +28,7 @@ core/hakmem_tiny.h: core/hakmem_build_flags.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: core/tiny_alloc_fast_sfc.inc.h: core/hakmem_tiny.h: diff --git a/core/box/front_gate_classifier.d b/core/box/front_gate_classifier.d index 672c5ca2..a5d92954 100644 --- a/core/box/front_gate_classifier.d +++ b/core/box/front_gate_classifier.d @@ -13,14 +13,13 @@ core/box/front_gate_classifier.o: core/box/front_gate_classifier.c \ core/box/../box/ss_addr_map_box.h \ core/box/../box/../hakmem_build_flags.h core/box/../hakmem_tiny.h \ core/box/../hakmem_trace.h core/box/../hakmem_tiny_mini_mag.h \ - core/box/../box/ptr_type_box.h core/box/../tiny_debug_api.h \ - core/box/../hakmem_tiny_superslab.h \ + core/box/../box/hak_lane_classify.inc.h core/box/../box/ptr_type_box.h \ + core/box/../tiny_debug_api.h core/box/../hakmem_tiny_superslab.h \ core/box/../superslab/superslab_inline.h \ core/box/../hakmem_build_flags.h core/box/../hakmem_internal.h \ core/box/../hakmem.h core/box/../hakmem_config.h \ core/box/../hakmem_features.h core/box/../hakmem_sys.h \ - core/box/../hakmem_whale.h core/box/../hakmem_tiny_config.h \ - core/box/../pool_tls_registry.h + core/box/../hakmem_whale.h core/box/../hakmem_tiny_config.h core/box/front_gate_classifier.h: core/box/../tiny_region_id.h: core/box/../hakmem_build_flags.h: @@ -42,6 +41,7 @@ core/box/../box/../hakmem_build_flags.h: core/box/../hakmem_tiny.h: core/box/../hakmem_trace.h: core/box/../hakmem_tiny_mini_mag.h: +core/box/../box/hak_lane_classify.inc.h: core/box/../box/ptr_type_box.h: core/box/../tiny_debug_api.h: core/box/../hakmem_tiny_superslab.h: @@ -54,4 +54,3 @@ core/box/../hakmem_features.h: core/box/../hakmem_sys.h: core/box/../hakmem_whale.h: core/box/../hakmem_tiny_config.h: -core/box/../pool_tls_registry.h: diff --git a/core/box/integrity_box.d b/core/box/integrity_box.d index 0532e583..f497d55e 100644 --- a/core/box/integrity_box.d +++ b/core/box/integrity_box.d @@ -1,7 +1,8 @@ core/box/integrity_box.o: core/box/integrity_box.c \ core/box/integrity_box.h core/box/../hakmem_tiny.h \ core/box/../hakmem_build_flags.h core/box/../hakmem_trace.h \ - core/box/../hakmem_tiny_mini_mag.h core/box/../box/ptr_type_box.h \ + core/box/../hakmem_tiny_mini_mag.h \ + core/box/../box/hak_lane_classify.inc.h core/box/../box/ptr_type_box.h \ core/box/../superslab/superslab_types.h \ core/hakmem_tiny_superslab_constants.h core/box/../tiny_box_geometry.h \ core/box/../hakmem_tiny_superslab_constants.h \ @@ -11,6 +12,7 @@ core/box/../hakmem_tiny.h: core/box/../hakmem_build_flags.h: core/box/../hakmem_trace.h: core/box/../hakmem_tiny_mini_mag.h: +core/box/../box/hak_lane_classify.inc.h: core/box/../box/ptr_type_box.h: core/box/../superslab/superslab_types.h: core/hakmem_tiny_superslab_constants.h: diff --git a/core/box/mailbox_box.d b/core/box/mailbox_box.d index 0c53ee92..6fb77bb8 100644 --- a/core/box/mailbox_box.d +++ b/core/box/mailbox_box.d @@ -6,7 +6,8 @@ core/box/mailbox_box.o: core/box/mailbox_box.c core/box/mailbox_box.h \ core/superslab/../hakmem_tiny_config.h core/tiny_debug_ring.h \ core/hakmem_build_flags.h core/tiny_remote.h \ core/hakmem_tiny_superslab_constants.h core/hakmem_tiny.h \ - core/hakmem_trace.h core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h \ + core/hakmem_trace.h core/hakmem_tiny_mini_mag.h \ + core/box/hak_lane_classify.inc.h core/box/ptr_type_box.h \ core/hakmem_trace_master.h core/tiny_debug_ring.h core/box/mailbox_box.h: core/hakmem_tiny_superslab.h: @@ -24,6 +25,7 @@ core/hakmem_tiny_superslab_constants.h: core/hakmem_tiny.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: core/hakmem_trace_master.h: core/tiny_debug_ring.h: diff --git a/core/box/prewarm_box.d b/core/box/prewarm_box.d index bd769c62..0e29d041 100644 --- a/core/box/prewarm_box.d +++ b/core/box/prewarm_box.d @@ -1,6 +1,7 @@ core/box/prewarm_box.o: core/box/prewarm_box.c core/box/../hakmem_tiny.h \ core/box/../hakmem_build_flags.h core/box/../hakmem_trace.h \ - core/box/../hakmem_tiny_mini_mag.h core/box/../box/ptr_type_box.h \ + core/box/../hakmem_tiny_mini_mag.h \ + core/box/../box/hak_lane_classify.inc.h core/box/../box/ptr_type_box.h \ core/box/../tiny_tls.h core/box/../hakmem_tiny_superslab.h \ core/box/../superslab/superslab_types.h \ core/hakmem_tiny_superslab_constants.h \ @@ -18,6 +19,7 @@ core/box/../hakmem_tiny.h: core/box/../hakmem_build_flags.h: core/box/../hakmem_trace.h: core/box/../hakmem_tiny_mini_mag.h: +core/box/../box/hak_lane_classify.inc.h: core/box/../box/ptr_type_box.h: core/box/../tiny_tls.h: core/box/../hakmem_tiny_superslab.h: diff --git a/core/box/ss_hot_prewarm_box.d b/core/box/ss_hot_prewarm_box.d index 556caa05..25306bb1 100644 --- a/core/box/ss_hot_prewarm_box.d +++ b/core/box/ss_hot_prewarm_box.d @@ -1,12 +1,14 @@ core/box/ss_hot_prewarm_box.o: core/box/ss_hot_prewarm_box.c \ core/box/../hakmem_tiny.h core/box/../hakmem_build_flags.h \ core/box/../hakmem_trace.h core/box/../hakmem_tiny_mini_mag.h \ - core/box/../box/ptr_type_box.h core/box/../hakmem_tiny_config.h \ - core/box/ss_hot_prewarm_box.h core/box/prewarm_box.h + core/box/../box/hak_lane_classify.inc.h core/box/../box/ptr_type_box.h \ + core/box/../hakmem_tiny_config.h core/box/ss_hot_prewarm_box.h \ + core/box/prewarm_box.h core/box/../hakmem_tiny.h: core/box/../hakmem_build_flags.h: core/box/../hakmem_trace.h: core/box/../hakmem_tiny_mini_mag.h: +core/box/../box/hak_lane_classify.inc.h: core/box/../box/ptr_type_box.h: core/box/../hakmem_tiny_config.h: core/box/ss_hot_prewarm_box.h: diff --git a/core/box/unified_batch_box.d b/core/box/unified_batch_box.d index 8690715e..ae3d5b63 100644 --- a/core/box/unified_batch_box.d +++ b/core/box/unified_batch_box.d @@ -24,6 +24,7 @@ core/box/unified_batch_box.o: core/box/unified_batch_box.c \ core/box/../box/../box/../hakmem_build_flags.h \ core/box/../box/../hakmem_tiny.h core/box/../box/../hakmem_trace.h \ core/box/../box/../hakmem_tiny_mini_mag.h \ + core/box/../box/../box/hak_lane_classify.inc.h \ core/box/../box/../tiny_debug_api.h \ core/box/../box/../hakmem_tiny_integrity.h \ core/box/../box/../ptr_track.h core/box/../box/../ptr_trace.h \ @@ -66,6 +67,7 @@ core/box/../box/../box/../hakmem_build_flags.h: core/box/../box/../hakmem_tiny.h: core/box/../box/../hakmem_trace.h: core/box/../box/../hakmem_tiny_mini_mag.h: +core/box/../box/../box/hak_lane_classify.inc.h: core/box/../box/../tiny_debug_api.h: core/box/../box/../hakmem_tiny_integrity.h: core/box/../box/../ptr_track.h: diff --git a/core/front/tiny_unified_cache.d b/core/front/tiny_unified_cache.d index fc730245..288b7cc0 100644 --- a/core/front/tiny_unified_cache.d +++ b/core/front/tiny_unified_cache.d @@ -21,10 +21,12 @@ core/front/tiny_unified_cache.o: core/front/tiny_unified_cache.c \ core/hakmem_super_registry.h core/hakmem_tiny_superslab.h \ core/box/ss_addr_map_box.h core/box/../hakmem_build_flags.h \ core/superslab/superslab_inline.h core/hakmem_tiny.h core/hakmem_trace.h \ - core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h \ - core/tiny_debug_api.h core/front/../hakmem_tiny_superslab.h \ + core/hakmem_tiny_mini_mag.h core/box/hak_lane_classify.inc.h \ + core/box/ptr_type_box.h core/tiny_debug_api.h \ + core/front/../hakmem_tiny_superslab.h \ core/front/../superslab/superslab_inline.h \ - core/front/../box/pagefault_telemetry_box.h + core/front/../box/pagefault_telemetry_box.h \ + core/front/../hakmem_env_cache.h core/front/tiny_unified_cache.h: core/front/../hakmem_build_flags.h: core/front/../hakmem_tiny_config.h: @@ -60,8 +62,10 @@ core/superslab/superslab_inline.h: core/hakmem_tiny.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: core/tiny_debug_api.h: core/front/../hakmem_tiny_superslab.h: core/front/../superslab/superslab_inline.h: core/front/../box/pagefault_telemetry_box.h: +core/front/../hakmem_env_cache.h: diff --git a/core/tiny_alloc_fast_push.d b/core/tiny_alloc_fast_push.d index 7d28975b..c8a24698 100644 --- a/core/tiny_alloc_fast_push.d +++ b/core/tiny_alloc_fast_push.d @@ -19,13 +19,14 @@ core/tiny_alloc_fast_push.o: core/tiny_alloc_fast_push.c \ core/box/../box/ss_addr_map_box.h \ core/box/../box/../hakmem_build_flags.h core/box/../hakmem_tiny.h \ core/box/../hakmem_trace.h core/box/../hakmem_tiny_mini_mag.h \ - core/box/../tiny_debug_api.h core/box/../hakmem_tiny_integrity.h \ - core/box/../ptr_track.h core/box/../ptr_trace.h \ - core/box/../box/tiny_next_ptr_box.h core/hakmem_tiny_config.h \ - core/tiny_nextptr.h core/hakmem_build_flags.h core/tiny_region_id.h \ - core/superslab/superslab_inline.h core/box/../tiny_debug_ring.h \ - core/box/../superslab/superslab_inline.h core/box/tiny_header_box.h \ - core/box/../tiny_nextptr.h core/box/front_gate_box.h core/hakmem_tiny.h + core/box/../box/hak_lane_classify.inc.h core/box/../tiny_debug_api.h \ + core/box/../hakmem_tiny_integrity.h core/box/../ptr_track.h \ + core/box/../ptr_trace.h core/box/../box/tiny_next_ptr_box.h \ + core/hakmem_tiny_config.h core/tiny_nextptr.h core/hakmem_build_flags.h \ + core/tiny_region_id.h core/superslab/superslab_inline.h \ + core/box/../tiny_debug_ring.h core/box/../superslab/superslab_inline.h \ + core/box/tiny_header_box.h core/box/../tiny_nextptr.h \ + core/box/front_gate_box.h core/hakmem_tiny.h core/hakmem_tiny_config.h: core/box/tls_sll_box.h: core/box/../hakmem_internal.h: @@ -59,6 +60,7 @@ core/box/../box/../hakmem_build_flags.h: core/box/../hakmem_tiny.h: core/box/../hakmem_trace.h: core/box/../hakmem_tiny_mini_mag.h: +core/box/../box/hak_lane_classify.inc.h: core/box/../tiny_debug_api.h: core/box/../hakmem_tiny_integrity.h: core/box/../ptr_track.h: diff --git a/docs/tls_sll_hdr_reset_for_gemini.md b/docs/tls_sll_hdr_reset_for_gemini.md new file mode 100644 index 00000000..d66e7b4a --- /dev/null +++ b/docs/tls_sll_hdr_reset_for_gemini.md @@ -0,0 +1,365 @@ +# TLS_SLL_HDR_RESET Root Cause Investigation (Gemini Edition) + +## 背景 + +hakmemメモリアロケータのsh8benchで`[TLS_SLL_HDR_RESET]`エラーが継続発生しています。 +これまでClaude Code、ChatGPT、Task agentが調査しましたが根治に至っていません。 +Geminiに最終調査をお願いします。 + +## 現在の状況(2025-12-03 commit 6154e7656) + +### ✅ 解決済み問題 + +1. **unified_cache_refill SEGVAULT** (commit 6154e7656) + - 根本原因: コンパイラ最適化による操作順序入れ替え + - 修正: ヘッダー書き込みをtiny_next_read()の前に移動 + atomic fence + - 状態: 完全解決、sh8bench実行可能に + +2. **LRU registry未登録** (commit 4cc2d8add) + - 根本原因: LRU pop時にhak_super_register()未呼び出し + - 修正: LRU pop後に明示的に再登録 + - 状態: 解決 + +3. **ChatGPTの「8bit右シフト圧縮ポインタ」仮説** + - Task agentが否定: 意図的な圧縮スキームは存在しない + - 真の原因: unified_cache_refillのコンパイラ最適化問題(既に解決済み) + +### ❌ 未解決問題 + +**TLS_SLL_HDR_RESET エラー** - sh8benchで継続発生 + +``` +[TLS_SLL_HDR_RESET] cls=1 base=0x71bcf31bd858 got=0x51 expect=0xa1 count=0 +``` + +- **発生箇所**: `core/box/tls_sll_box.h:585` (TLS SLL pop時のヘッダー検証失敗) +- **期待値**: `0xa1` (class_idx=1のヘッダーマーカー) +- **実際値**: `0x51`, `0x61` など(破損) +- **動作**: SLL全体をリセット(安全だが非効率) + +## エラーの詳細 + +### ヘッダーフォーマット + +``` +期待値: 0xa1 + bit 7-4: 0xa (固定マーカー) + bit 3-0: 0x1 (サイズクラスインデックス) +``` + +### 破損パターン + +``` +got=0x51: 01010001 (未初期化メモリ?) +got=0x61: 01100001 ('a' ASCII文字?) +got=0x00: 00000000 (mmap zero初期値?) +``` + +### 発生パターン + +- ✅ **sh8bench**: ほぼ毎回発生 +- ✅ **リリース版**: 発生 +- ❌ **cfrac, larson**: 発生しない +- ❓ **ASan版**: Task agent報告では未再現 + +## これまでの調査と既知の修正 + +### 既に修正済みの境界(commit 3c6c76cb1, a94344c1a) + +以下の経路でのヘッダー復元は実装済み: + +1. **box_carve_and_push_with_freelist()** (commit 3c6c76cb1) + ```c + void* p = meta->freelist; + meta->freelist = tiny_next_read(class_idx, p); + tiny_header_write_if_preserved(p, class_idx); // ← 修正済み + if (!tls_sll_push(class_idx, p, sll_cap)) { ... } + ``` + +2. **tiny_drain_freelist_to_sll_once()** (commit a94344c1a) + ```c + void* p = m->freelist; + m->freelist = tiny_next_read(class_idx, p); + tiny_header_write_if_preserved(p, class_idx); // ← 修正済み + if (tls_sll_push(class_idx, HAK_BASE_FROM_RAW(p), sll_capacity)) { ... } + ``` + +### 現在の設定(commit 6154e7656) + +- ✅ ヘッダー書き込みデフォルトON (`g_write_header=1`) +- ✅ HAKMEM_TINY_WRITE_HEADER=0 で旧挙動に戻せるA/B切替 + +## Geminiへの調査依頼 + +### 調査の焦点 + +**「なぜsh8benchだけでTLS_SLL_HDR_RESETが発生するのか?」** + +cfrac/larsonでは発生しないことから、**sh8bench固有のアクセスパターン**に起因する経路がある可能性が高いです。 + +### 仮説(優先度順) + +#### 仮説1: TLS SLL push時のヘッダー未書き込み(最有力) + +**コード箇所**: `core/box/tls_sll_box.h` の `tiny_tls_sll_push()` + +**確認すべきこと**: +1. push時に本当にヘッダーを書き込んでいるか? + ```c + *(uint8_t*)raw_base = (uint8_t)(0xa0 | (class_idx & 0x0f)); + ``` + +2. 書き込み順序は正しいか? + - next pointer書き込みの**前**にヘッダー書き込み + - atomic fence有無 + +3. 条件分岐で書き込みをスキップしていないか? + +**調査方法**: +```bash +grep -n "static inline.*tiny_tls_sll_push" -A 100 core/box/tls_sll_box.h | \ + grep -E "raw_base.*=.*0xa0|class_idx" +``` + +#### 仮説2: unified_cache経由の未発見経路 + +**背景**: +- unified_cache_refillでヘッダーを書き込み済み(P1修正) +- しかしその後、**別の経路**でTLS SLLに入る可能性 + +**確認すべきこと**: +1. unified_cache_refillで返されたポインタがfree時にどの経路を通るか +2. その経路でヘッダーが保持されているか +3. TLS SLLに入る直前で破損していないか + +**調査方法**: +```bash +# unified_cache関連のfree/drain経路 +grep -n "unified_cache.*drain\|unified_cache.*free" \ + core/front/tiny_unified_cache.c core/box/tiny_front_cold_box.h +``` + +#### 仮説3: sh8bench固有のマルチスレッド競合 + +**背景**: +- sh8benchは8スレッド並行 +- 小さいブロック(class 1など)を高速にalloc/free + +**確認すべきこと**: +1. TLS SLL pushがスレッドセーフか +2. ヘッダー書き込みとnext pointer書き込みの間に競合窓がないか +3. `__atomic_thread_fence`の配置は適切か + +**調査方法**: +```bash +# TLS SLL実装の同期機構確認 +grep -n "thread_fence\|atomic\|mutex\|lock" core/box/tls_sll_box.h +``` + +## 具体的な調査手順 + +### Step 1: TLS SLL push実装の精査 + +```bash +cd /mnt/workdisk/public_share/hakmem + +# push実装を確認 +cat -n core/box/tls_sll_box.h | sed -n '450,550p' +``` + +**チェックポイント**: +- [ ] `*(uint8_t*)raw_base = 0xa0 | cls` が実行されているか +- [ ] `tiny_class_preserves_header(class_idx)` 条件は正しいか +- [ ] `__atomic_thread_fence(__ATOMIC_RELEASE)` があるか +- [ ] next pointer書き込みより**前**に実行されているか + +### Step 2: 詳細ログで経路追跡 + +```bash +# デバッグビルド +find . -name "*.o" -delete && find . -name "*.so" -delete +make shared -j8 EXTRA_CFLAGS="-g -O1" + +# リング有効化で実行 +HAKMEM_TINY_SLL_RING=1 HAKMEM_DEBUG_LEVEL=3 \ + LD_PRELOAD=./libhakmem.so ./mimalloc-bench/out/bench/sh8bench \ + 2>&1 | tee sh8bench_gemini_debug.log + +# push/pop/resetの順序を確認 +grep -E "TLS_SLL_PUSH|TLS_SLL_POP|TLS_SLL_HDR_RESET" \ + sh8bench_gemini_debug.log | head -100 +``` + +### Step 3: コード修正テスト + +**TLS SLL push強制ヘッダー書き込み**を試してください: + +```c +// core/box/tls_sll_box.h の tiny_tls_sll_push() に追加 + +static inline bool tiny_tls_sll_push(int class_idx, void* raw_base, uint32_t capacity) { + // GEMINI FIX: Always write header before push + #if HAKMEM_TINY_HEADER_CLASSIDX + if (tiny_class_preserves_header(class_idx)) { + *(uint8_t*)raw_base = (uint8_t)(0xa0 | (class_idx & 0x0f)); + __atomic_thread_fence(__ATOMIC_RELEASE); + } + #endif + + // 既存のpush処理... +} +``` + +**テスト**: +```bash +find . -name "*.o" -delete && make shared -j8 + +# 5回テスト +for i in {1..5}; do + echo "=== Run $i ===" + LD_PRELOAD=./libhakmem.so ./mimalloc-bench/out/bench/sh8bench 2>&1 | \ + grep -E "TLS_SLL_HDR_RESET|Total elapsed" +done +``` + +### Step 4: SAFEHEADER検証 + +```bash +HAKMEM_TINY_SLL_SAFEHEADER=1 HAKMEM_TINY_SLL_VALIDATE_HDR=1 \ +HAKMEM_TINY_SLL_RING=1 HAKMEM_DEBUG_LEVEL=3 \ + LD_PRELOAD=./libhakmem.so ./mimalloc-bench/out/bench/sh8bench \ + 2>&1 | tee sh8bench_gemini_safeheader.log + +# push時の不正検出 +grep -E "TLS_SLL_PUSH_BAD_HDR|TLS_SLL_REJECT" sh8bench_gemini_safeheader.log +``` + +## 期待される成果物 + +### 1. 根本原因の特定 + +以下のいずれかを明確に: + +- **パターンA**: TLS SLL push時にヘッダー未書き込み + - どの条件でスキップされているか + - 修正箇所の特定 + +- **パターンB**: 未発見の経路が存在 + - どの経路か(コールスタック) + - その経路でのヘッダー復元漏れ + +- **パターンC**: マルチスレッド競合 + - 競合が発生する箇所 + - atomic fence不足の箇所 + +### 2. 修正コード + +修正が必要なファイルと具体的なコード変更を提示してください: + +```c +// 例: core/box/tls_sll_box.h + +// 修正前: +static inline bool tiny_tls_sll_push(...) { + // 既存コード +} + +// 修正後: +static inline bool tiny_tls_sll_push(...) { + // GEMINI FIX: ヘッダー復元を追加 + #if HAKMEM_TINY_HEADER_CLASSIDX + if (tiny_class_preserves_header(class_idx)) { + *(uint8_t*)raw_base = (uint8_t)(0xa0 | (class_idx & 0x0f)); + __atomic_thread_fence(__ATOMIC_RELEASE); + } + #endif + + // 既存のpush処理 +} +``` + +### 3. テスト結果 + +修正後のsh8bench実行結果: + +```bash +# 期待される結果 +=== Run 1 === +Total elapsed time for 8 threads: XX.XX (XXX.XXXX CPU) +# [TLS_SLL_HDR_RESET] なし + +=== Run 2 === +Total elapsed time for 8 threads: XX.XX (XXX.XXXX CPU) +# [TLS_SLL_HDR_RESET] なし + +... (10回連続でエラーなし) +``` + +## 重要な調査対象ファイル + +**最優先**: +- `core/box/tls_sll_box.h` - TLS SLL push/pop実装(行450-610) + +**次点**: +- `core/front/tiny_unified_cache.c` - unified cache実装 +- `core/box/tiny_front_cold_box.h` - cold drain処理 +- `core/hakmem_tiny_free.inc` - free経路 + +**参考**: +- `core/tiny_region_id.h` - ヘッダー書き込み設定 +- `core/box/tiny_header_box.h` - ヘッダー管理API + +## 環境変数・ビルド方法 + +### デバッグフラグ +```bash +HAKMEM_TINY_SLL_RING=1 # TLS SLLイベントログ +HAKMEM_TINY_SLL_VALIDATE_HDR=1 # push時ヘッダー検証 +HAKMEM_TINY_SLL_SAFEHEADER=1 # 不正ヘッダーでpush拒否 +HAKMEM_DEBUG_LEVEL=3 # 詳細ログ +HAKMEM_TINY_WRITE_HEADER=1 # ヘッダー書き込み強制(既定でON) +``` + +### ビルド +```bash +cd /mnt/workdisk/public_share/hakmem + +# クリーンビルド(リリース版) +find . -name "*.o" -delete && find . -name "*.so" -delete +make shared -j8 + +# デバッグビルド +make shared -j8 EXTRA_CFLAGS="-g -O1 -UHAKMEM_BUILD_RELEASE" +``` + +## 参考資料 + +### 関連コミット +- `6154e7656` - unified_cache_refill SEGVAULT根治修正(最新) +- `4cc2d8add` - LRU registry未登録修正 +- `f7d0d236e` - malloc_count最適化(17s→10s) +- `3c6c76cb1` - box_carve_and_push_with_freelistヘッダー復元 +- `a94344c1a` - tiny_drain_freelist_to_sll_onceヘッダー復元 + +### ドキュメント +- `docs/tls_sll_header_corruption_investigation.md` - ChatGPT初回調査 +- `docs/tls_sll_hdr_reset_investigation_v2.md` - 更新版調査指示書 +- `docs/sh8bench_debug_instruction.md` - sh8benchデバッグ手順 + +--- + +## Geminiへのお願い + +1. **Step 1-2で原因を特定**してください + - 特にTLS SLL push実装の精査が重要です + +2. **Step 3で修正を実装**してください + - 修正後は必ずsh8benchで10回連続テストしてください + +3. **根治であることを証明**してください + - 対処療法ではなく、真の根本原因を解決してください + +4. **結果を報告**してください + - 修正したファイル、変更内容、テスト結果を明記してください + +よろしくお願いします!🙏 diff --git a/docs/tls_sll_hdr_reset_investigation_v2.md b/docs/tls_sll_hdr_reset_investigation_v2.md new file mode 100644 index 00000000..4958d1d2 --- /dev/null +++ b/docs/tls_sll_hdr_reset_investigation_v2.md @@ -0,0 +1,143 @@ +# TLS_SLL_HDR_RESET Investigation V2 + +TLS SLLヘッダー破損を「箱理論」で根治するためのChatGPT向け指示書。現状と仮説を整理し、再現手順と修正パターンをまとめる。 +Box境界で原因を特定し、A/Bで戻せる形で修正すること。 + +## 現在の状況 + +- ✅ ヘッダー書き込みデフォルトON(`core/tiny_region_id.h`、`HAKMEM_TINY_WRITE_HEADER`未設定で書く) +- ✅ ASan版 `libhakmem_asan.so` では sh8bench baseline / SAFEHEADER いずれも `TLS_SLL_HDR_RESET` 未再現(`sh8bench_baseline_v2.log`, `sh8bench_safeheader_v2.log`) +- ❌ リリース版 `libhakmem.so` は `unified_cache_refill` 内で SIGSEGV(TLS SLLに到達する前に崩れる) +- ❓ 過去にリリース版 sh8bench で `[TLS_SLL_HDR_RESET]` が発生していたが、現在はクラッシュが優先して観測(TLS SLL経路が怪しいまま) + +### 直近の再現結果(release + gdb) +- `unified_cache_refill+1128` で SEGV。`meta->freelist` が **スラブ基底を 8bit 右シフトした値**(例: slab_base=0x7fffc02d0000 → freelist=0x0000007fffc02d20)になっており、生アドレスではない。 +- `TinySlabMeta` も汚染されており、`used=0x1e80`(capacity=0x0400を大きく超過)など整合性崩壊。スラブ内部へのオフセット(0x2000相当)を持った「圧縮ポインタ」風の値が freelist に混入している可能性が高い。 +- 仮説A/B を再強調:freelist 書き込み境界(free_remote/local/TLS SLL drain/remote drain)でポインタが右シフト(region-id?)された形で保存されている箇所を watch する必要あり。 + +## 新仮説(3本) + +- **仮説A: unified_cache_refill → free → TLS SLL 経路でヘッダー復元漏れ** + - unified cacheで返したバッファがfree時にTLS SLLへ落ちる経路でヘッダー未復元/破損。 + - 先にクラッシュするので経路の可視化が必要。 + +- **仮説B: TLS SLL内部での破損** + - `tiny_tls_sll_push()`がヘッダーを書かない/順序が逆(next上書き先行)/競合で壊す。 + - push直前のヘッダー値が既に壊れている可能性も含め検証。 + +- **仮説C: Class Mapとヘッダー契約の不整合** + - Class Map経路ではヘッダー不要の前提だが、TLS SLL popは検証を要求。 + - `g_write_header`のON/OFFと検証条件がズレている可能性。 + +## デバッグ手順(4ステップ) + +### Step 1: 詳細ログ有効化 +```bash +cd /mnt/workdisk/public_share/hakmem +HAKMEM_TINY_SLL_RING=1 HAKMEM_DEBUG_LEVEL=3 \ + LD_PRELOAD=./libhakmem.so ./mimalloc-bench/out/bench/sh8bench \ + 2>&1 | tee sh8bench_tls_sll_debug.log + +grep -E "TLS_SLL_HDR_RESET|TLS_SLL_PUSH|TLS_SLL_POP" sh8bench_tls_sll_debug.log | head -50 +``` + +### Step 2: TLS SLL push境界の検証 +- 対象: `core/box/tls_sll_box.h` の `tiny_tls_sll_push()` +- 確認ポイント: + 1. `tiny_class_preserves_header` のとき `*(uint8_t*)raw_base = 0xa0 | cls` を必ず実行しているか + 2. next書き込みより前にヘッダーを書き、`__atomic_thread_fence(__ATOMIC_RELEASE)` で順序を固定しているか +- 必要なら一時的にトレースを挿入(非リリース限定)して push前ヘッダー値を記録。 + +### Step 3: unified_cache_refill→free→TLS SLL経路の追跡 +- 対象ファイル: + - `core/front/tiny_unified_cache.c` (`unified_cache_refill`, `unified_cache_free_list_drain`) + - `core/hakmem_tiny_free.inc` / `core/box/tiny_front_cold_box.h`(free入口→TLS SLL) +- 手順: + 1. `unified_cache_refill` の out[] 生成直後に `tiny_header_validate` を一度呼んでヘッダーの健全性をリングに記録(ワンショット)。 + 2. free経路で TLS SLL に入る直前(push直前)にも同じ base でヘッダー値を記録し、差分を見る。 + 3. 再現しやすさのため `HAKMEM_TINY_UNIFIED_CACHE=0` で迂回し、TLS SLL経路で再現有無を分離。 + +### Step 4: SAFEHEADER検証 +```bash +HAKMEM_TINY_SLL_SAFEHEADER=1 HAKMEM_TINY_SLL_VALIDATE_HDR=1 \ +HAKMEM_TINY_SLL_RING=1 HAKMEM_DEBUG_LEVEL=3 \ +LD_PRELOAD=./libhakmem.so ./mimalloc-bench/out/bench/sh8bench \ +2>&1 | tee sh8bench_safeheader_debug.log + +grep -E "TLS_SLL_PUSH_BAD_HDR|TLS_SLL_REJECT|TLS_SLL_HDR_RESET" sh8bench_safeheader_debug.log +``` +- push側で拒否が出れば仮説B/Cを優先。 + +## 修正パターン(A/B/C) + +- **パターンA: TLS SLL pushで常にヘッダー復元(境界固定)** + - `tiny_tls_sll_push()` の先頭でヘッダーを書き戻し + release fence。 + - Box境界をpushに集約し、他経路の漏れを吸収。 + +- **パターンB: unified_cache_refill境界でヘッダー確定** + - `unified_cache_refill` が out[] へ入れる直前に `tiny_header_write_if_preserved` を実行。 + - free経路でTLS SLLに落ちる前にヘッダーが既に正しいことを保証。 + - 必要なら `HAKMEM_TINY_UNIFIED_CACHE=0` でA/B切替を残す。 + +- **パターンC: Class Mapと検証条件の整合** + - `g_write_header` がOFFのときは TLS SLL pop 検証をスキップするか、Class Map経路をTLS SLLから分離。 + - ONの場合は push/pop 双方で `tiny_class_preserves_header` を強制し、Fail-Fastで露呈。 + +## 環境変数 +```bash +# ログ/検証 +HAKMEM_TINY_SLL_RING=1 +HAKMEM_TINY_SLL_VALIDATE_HDR=1 +HAKMEM_TINY_SLL_SAFEHEADER=1 +HAKMEM_DEBUG_LEVEL=3 + +# 経路A/B切替 +HAKMEM_TINY_WRITE_HEADER=1 # 既定でON(省略可) +HAKMEM_TINY_UNIFIED_CACHE=0 # unified cache無効化で分離試験 + +# 追加トレース +HAKMEM_WRAP_DIAG=1 +``` + +## ビルド方法 +```bash +cd /mnt/workdisk/public_share/hakmem +find . -name "*.o" -delete +find . -name "*.so" -delete + +# リリース相当 +make shared -j8 + +# ASan +make asan-shared-alloc -j8 +``` + +## テスト手順 +```bash +# ベースライン(リリース): クラッシュ/RESETの有無確認 +LD_PRELOAD=./libhakmem.so ./mimalloc-bench/out/bench/sh8bench \ + 2>&1 | tee sh8bench_baseline_v3.log + +# unified cache切替 +HAKMEM_TINY_UNIFIED_CACHE=0 LD_PRELOAD=./libhakmem.so \ + ./mimalloc-bench/out/bench/sh8bench 2>&1 | tee sh8bench_uc_off.log + +# SAFEHEADER強化 +HAKMEM_TINY_SLL_SAFEHEADER=1 HAKMEM_TINY_SLL_VALIDATE_HDR=1 \ +HAKMEM_TINY_SLL_RING=1 HAKMEM_DEBUG_LEVEL=3 \ +LD_PRELOAD=./libhakmem.so ./mimalloc-bench/out/bench/sh8bench \ +2>&1 | tee sh8bench_safeheader_v3.log +``` +- いずれも `[TLS_SLL_HDR_RESET]` や SIGSEGV が出た場合はリング先頭〜直前のイベントを確認。 + +## 調査対象ファイル(優先度順) +- `core/front/tiny_unified_cache.c` (仮説A/Bの境界) +- `core/box/tls_sll_box.h` (push/pop実装、仮説B/A) +- `core/hakmem_tiny_free.inc`, `core/box/tiny_front_cold_box.h` (free入口→TLS SLL) +- `core/tiny_region_id.h`, `core/box/tiny_header_box.h` (ヘッダー契約とClass Map、仮説C) +- 参考: `docs/tls_sll_header_corruption_investigation.md`(初回調査ログ) + +--- + +この指示書をChatGPTに渡せば、`TLS_SLL_HDR_RESET` と unified cacheクラッシュの根本原因を箱境界で特定・修正できる。 +Step 2〜3で経路を可視化し、A/B/Cのいずれか(または組み合わせ)で確実に「書くべき場所でヘッダーを復元する」こと。 diff --git a/docs/tls_sll_header_corruption_investigation.md b/docs/tls_sll_header_corruption_investigation.md new file mode 100644 index 00000000..cf166247 --- /dev/null +++ b/docs/tls_sll_header_corruption_investigation.md @@ -0,0 +1,116 @@ +# TLS SLL Header Corruption Investigation + +## 症状とスコープ +- sh8bench 実行時に `[TLS_SLL_HDR_RESET] cls=1 base=0x715210fbf858 got=0x51 expect=0xa1 count=0` などが発生(class 6 の `got=0x00 expect=0xa6` も報告)。 +- 発生地点: `core/box/tls_sll_box.h` の TLS SLL pop 境界(Header Box による検証失敗 → SLL をリセット)。 +- 再現範囲: sh8bench でほぼ毎回。Larson/cfrac では再現しにくい。 + +## 箱マップ(Box Theory) +- **Header Box (`core/box/tiny_header_box.h`)**: C1-C6 はヘッダー保持(HEADER_MAGIC|class_idx)。`tiny_header_write_if_preserved()` / `tiny_header_validate()` が単一の境界 API。 +- **Freelist Box**: freelist ↔ TLS SLL の橋渡し。ここでヘッダーを復元しないと TLS SLL pop で Fail-Fast する。 +- **TLS SLL Box (`core/box/tls_sll_box.h`)**: push でヘッダーを復元・検証、pop でヘッダー検証&リセット。リングイベント `TINY_RING_EVENT_TLS_SLL_HDR_CORRUPT` あり。 +- **Class Map Box**: class_idx をヘッダー無しで特定する高速経路。デフォルトで header write をスキップするため、TLS SLL がヘッダーに依存する場合は境界不整合が起きる。 + +## TLS_SLL_HDR_RESET 詳細分析 +- pop 経路は `tiny_class_preserves_header(class_idx)` が true (C1-C6) の場合に必ず `tiny_header_validate()` を呼ぶ。失敗時は SLL をリセットして `[TLS_SLL_HDR_RESET]` を 10k 回に 1 回だけ出力。 +- `core/tiny_region_id.h` では **デフォルト `g_write_header=1`**(A/B ガードで `HAKMEM_TINY_WRITE_HEADER=0` による切替可)。ヘッダーを書かずに freelist に入ると、Freelist→TLS SLL の移送時に復元漏れがあると pop で 0x00/0x51/0x61 を読み出してリセットする。 +- 既知の漏れ(修正済みの根治ポイント) + - `core/box/carve_push_box.c: box_carve_and_push_with_freelist()` で freelist pop→push 前にヘッダー未復元(commit `3c6c76cb1` で修正)。 + - `core/hakmem_tiny_free.inc: tiny_drain_freelist_to_sll_once()` のデッドパスでも同様に未復元(commit `a94344c1a` で修正)。 +- 破損パターン + - `got=0x00`: mmap zero 由来の stale data + - `got=0x51 / 0x61`: 前世の payload 断片(ヘッダー未書き込み時に漏れる) + +## 3つの仮説 +- **a. ヘッダー書き込みの未実行(最有力)** + - デフォルトで header write OFF(`g_write_header=0`)+ freelist→TLS SLL での復元漏れが重なると、pop 側の検証で Fail-Fast する。上記 2 箇所の修正がこれを潰す。 +- **b. TLS SLL と Class Map の境界不整合** + - Class Map は「ヘッダー不要」を前提、一方 TLS SLL pop はヘッダー必須。境界(freelist→TLS SLL)でヘッダーを必ず再構成するか、Class Map 情報に切り替えるかのどちらかに統一すべき。 +- **c. sh8bench 固有パターン** + - 8 スレッドで class 1 の高速 churn により freelist→TLS SLL デッドパス(drain/carve)の頻度が高い。ヘッダー復元漏れが顕在化しやすい。 + +## 今回の実行結果 +- `LD_PRELOAD=./libhakmem.so`(リリースビルド)は `unified_cache_refill+0x46f` で SEGFAULT(`mov 0x1(%r15),%rdx`)。`r15` は TLS freelist から読みだしたポインタで、無効値を指していた。→ リリース版で sh8bench を回す前に unified cache 側のクラッシュ修正が必要。 +- `LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libasan.so.6 ./libhakmem_asan.so"` で代替実行(LeakSanitizer のリーク警告付きだが完走): + - ベースライン + `HAKMEM_TINY_SLL_RING=1`: `[TLS_SLL_HDR_RESET]` ゼロ件(`sh8bench_baseline.log`)。 + - `HAKMEM_TINY_WRITE_HEADER=1` A/B(5 回)+ Ring: すべて `[TLS_SLL_HDR_RESET]` ゼロ件(`sh8bench_header_on_run*.log`)。 + - `HAKMEM_TINY_SLL_SAFEHEADER=1 HAKMEM_TINY_SLL_VALIDATE_HDR=1 HAKMEM_DEBUG_LEVEL=3` + Ring: `[TLS_SLL_PUSH_BAD_HDR]` / `[TLS_SLL_REJECT]` ゼロ件(`sh8bench_safeheader.log`)。 +- 現時点では TLS_SLL_HDR_RESET は再現せず。リリース版の unified cache 落ちを直した上で再確認が必要。 + +## デバッグ手順(4ステップ) +1. **現状再現とリング取得** + ```bash + cd /mnt/workdisk/public_share/hakmem + HAKMEM_TINY_SLL_RING=1 LD_PRELOAD=./libhakmem.so \ + ./mimalloc-bench/out/bench/sh8bench 2>&1 | \ + tee sh8bench_baseline.log | grep -E "TLS_SLL_HDR_RESET|TLS_SLL_HDR_CORRUPT|Total elapsed" + ``` + - 目的: `[TLS_SLL_HDR_RESET]` 発生位置と ring payload (got/expect) を確定。 + +2. **ヘッダー強制書き込みで A/B**(仮説 a の確認) + ```bash + for i in {1..5}; do + echo "=== header_on run $i ===" + HAKMEM_TINY_WRITE_HEADER=1 HAKMEM_TINY_SLL_RING=1 LD_PRELOAD=./libhakmem.so \ + ./mimalloc-bench/out/bench/sh8bench 2>&1 | \ + grep -E "TLS_SLL_HDR_RESET|Total elapsed" + done + ``` + - 消えれば「ヘッダー未復元」が原因と確定。 + +3. **push 側の境界検証を強化** + ```bash + HAKMEM_TINY_SLL_SAFEHEADER=1 HAKMEM_TINY_SLL_VALIDATE_HDR=1 HAKMEM_DEBUG_LEVEL=3 \ + LD_PRELOAD=./libhakmem.so ./mimalloc-bench/out/bench/sh8bench \ + 2>&1 | tee sh8bench_safeheader.log + ``` + - `TLS_SLL_PUSH_BAD_HDR` / `TLS_SLL_REJECT` が出れば freelist→TLS SLL 境界で復元漏れが残っている。ring で callsite を特定。 + +4. **修正後のリグレッション確認** + ```bash + # sh8bench 10 回 + for i in {1..10}; do LD_PRELOAD=./libhakmem.so ./mimalloc-bench/out/bench/sh8bench \ + 2>&1 | grep -E "TLS_SLL_HDR_RESET|Total elapsed"; done + + # Larson / cfrac で広めに確認 + LD_PRELOAD=./libhakmem.so ./mimalloc-bench/out/bench/larson 10 7 8 100 10000 + LD_PRELOAD=./libhakmem.so ./mimalloc-bench/out/bench/cfrac 17545186520507317056371138836327483792789528 + ``` + - 目的: sh8bench だけでなく他ワークロードでも Fail-Fast が出ないことを確認。 + +## 修正パターン(根治案) +- **パターンA: 境界一箇所でヘッダー復元を徹底(推奨)** + - Freelist→TLS SLL を 1 つの Box 境界として `tiny_header_write_if_preserved()` を必ず実行(現行の `box_carve_and_push_with_freelist()` / `tiny_drain_freelist_to_sll_once()` の形を維持)。 + - 追加ガード: `HAKMEM_TINY_SLL_SAFEHEADER=1` を運用フラグとして残し、違反時は push 拒否+リング記録。 + +- **パターンB: ヘッダー常時書き込みに戻す** + - `core/tiny_region_id.h` の `g_write_header` をデフォルト `1` にして Class Map 依存を減らす。 + - **実装済み**: デフォルト ON に変更(`HAKMEM_TINY_WRITE_HEADER=0` で旧挙動に戻せる)。 + - A/B 切替: 環境変数 `HAKMEM_TINY_WRITE_HEADER=0` でオフにできるよう保持(切り戻し容易)。 + +- **パターンC: TLS SLL を Class Map 準拠にリファクタ** + - `tls_sll_pop()` でヘッダー検証を `tiny_header_validate()`→`class_map_lookup()` の優先順に変更(ヘッダーが無い場合は Class Map で検証)。 + - `tiny_header_write_if_preserved()` を「Best Effort」扱いにしつつ、リングで Class Map vs header の不一致を Fail-Fast ログする。 + +## 環境変数 / ビルド / テスト +- **デバッグフラグ** + - `HAKMEM_TINY_WRITE_HEADER=1` : ヘッダー強制書き込み(仮説 a 検証) + - `HAKMEM_TINY_SLL_RING=1` : TLS SLL イベントをリング出力 + - `HAKMEM_TINY_SLL_VALIDATE_HDR=1` または `HAKMEM_DEBUG_LEVEL=3` : push でのヘッダー検証を常時 ON + - `HAKMEM_TINY_SLL_SAFEHEADER=1` : ヘッダー不一致時は push 拒否(Fail-Fast) + - `HAKMEM_WRAP_DIAG=1` : Wrapper トレース +- **ビルド** + ```bash + cd /mnt/workdisk/public_share/hakmem + rm -f *.o libhakmem.so + make shared -j8 # Release + make shared -j8 EXTRA_CFLAGS="-g -O0 -UHAKMEM_BUILD_RELEASE" # Debug + ``` +- **テスト**(再掲) + - `LD_PRELOAD=./libhakmem.so ./mimalloc-bench/out/bench/sh8bench` + - `LD_PRELOAD=./libhakmem.so ./mimalloc-bench/out/bench/larson 10 7 8 100 10000` + - いずれも `grep -E "TLS_SLL_HDR_RESET|TLS_SLL_HDR_CORRUPT"` でゼロ件を確認。 + +--- + +根治の原則: 「ヘッダーを書かないなら検証しない」「検証するなら境界で必ず書く」を Box 境界 1 箇所に閉じ込め、Fail-Fast とリング可視化で sh8bench パターンでも再発しないことを確認する。 diff --git a/hakmem.d b/hakmem.d index 3ab2015b..35543738 100644 --- a/hakmem.d +++ b/hakmem.d @@ -1,7 +1,8 @@ hakmem.o: core/hakmem.c core/hakmem.h core/hakmem_build_flags.h \ core/hakmem_config.h core/hakmem_features.h core/hakmem_internal.h \ core/hakmem_sys.h core/hakmem_whale.h core/box/ptr_type_box.h \ - core/hakmem_bigcache.h core/hakmem_pool.h core/hakmem_l25_pool.h \ + core/hakmem_bigcache.h core/hakmem_pool.h \ + core/box/hak_lane_classify.inc.h core/hakmem_l25_pool.h \ core/hakmem_policy.h core/hakmem_learner.h core/hakmem_size_hist.h \ core/hakmem_ace.h core/hakmem_site_rules.h core/hakmem_tiny.h \ core/hakmem_trace.h core/hakmem_tiny_mini_mag.h \ @@ -11,11 +12,11 @@ hakmem.o: core/hakmem.c core/hakmem.h core/hakmem_build_flags.h \ core/superslab/../hakmem_tiny_superslab_constants.h \ core/superslab/../hakmem_tiny_config.h core/tiny_debug_ring.h \ core/tiny_remote.h core/hakmem_tiny_superslab_constants.h \ - core/tiny_fastcache.h core/box/tiny_next_ptr_box.h \ - core/hakmem_tiny_config.h core/tiny_nextptr.h core/tiny_region_id.h \ - core/tiny_box_geometry.h core/ptr_track.h core/hakmem_super_registry.h \ - core/box/ss_addr_map_box.h core/box/../hakmem_build_flags.h \ - core/tiny_debug_api.h core/hakmem_mid_mt.h core/hakmem_elo.h \ + core/tiny_fastcache.h core/hakmem_env_cache.h \ + core/box/tiny_next_ptr_box.h core/hakmem_tiny_config.h \ + core/tiny_nextptr.h core/tiny_region_id.h core/tiny_box_geometry.h \ + core/ptr_track.h core/hakmem_super_registry.h core/box/ss_addr_map_box.h \ + core/box/../hakmem_build_flags.h core/tiny_debug_api.h core/hakmem_elo.h \ core/hakmem_ace_stats.h core/hakmem_batch.h core/hakmem_evo.h \ core/hakmem_debug.h core/hakmem_prof.h core/hakmem_syscall.h \ core/hakmem_ace_controller.h core/hakmem_ace_metrics.h \ @@ -23,13 +24,13 @@ hakmem.o: core/hakmem.c core/hakmem.h core/hakmem_build_flags.h \ core/box/hak_exit_debug.inc.h core/box/hak_kpi_util.inc.h \ core/box/hak_core_init.inc.h core/hakmem_phase7_config.h \ core/box/ss_hot_prewarm_box.h core/box/hak_alloc_api.inc.h \ - core/box/../hakmem_tiny.h core/box/../hakmem_smallmid.h \ - core/box/mid_large_config_box.h core/box/../hakmem_config.h \ - core/box/../hakmem_features.h core/box/hak_free_api.inc.h \ - core/hakmem_tiny_superslab.h core/box/../tiny_free_fast_v2.inc.h \ - core/box/../tiny_region_id.h core/box/../hakmem_build_flags.h \ - core/box/../hakmem_tiny_config.h core/box/../box/tls_sll_box.h \ - core/box/../box/../hakmem_internal.h \ + core/box/../hakmem_tiny.h core/box/../hakmem_pool.h \ + core/box/../hakmem_smallmid.h core/box/mid_large_config_box.h \ + core/box/../hakmem_config.h core/box/../hakmem_features.h \ + core/box/hak_free_api.inc.h core/hakmem_tiny_superslab.h \ + core/box/../tiny_free_fast_v2.inc.h core/box/../tiny_region_id.h \ + core/box/../hakmem_build_flags.h core/box/../hakmem_tiny_config.h \ + core/box/../box/tls_sll_box.h core/box/../box/../hakmem_internal.h \ core/box/../box/../hakmem_tiny_config.h \ core/box/../box/../hakmem_build_flags.h \ core/box/../box/../hakmem_debug_master.h \ @@ -49,14 +50,13 @@ hakmem.o: core/hakmem.c core/hakmem.h core/hakmem_build_flags.h \ core/box/../box/free_local_box.h core/box/../box/ptr_type_box.h \ core/box/../box/free_publish_box.h core/hakmem_tiny.h \ core/tiny_region_id.h core/box/../hakmem_tiny_integrity.h \ - core/box/../superslab/superslab_inline.h \ + core/box/../hakmem_env_cache.h core/box/../superslab/superslab_inline.h \ core/box/../box/ss_slab_meta_box.h \ core/box/../box/slab_freelist_atomic.h core/box/../box/free_remote_box.h \ core/hakmem_tiny_integrity.h core/box/front_gate_v2.h \ core/box/external_guard_box.h core/box/ss_slab_meta_box.h \ core/box/fg_tiny_gate_box.h core/box/hak_wrappers.inc.h \ - core/box/front_gate_classifier.h core/box/../hakmem_pool.h \ - core/box/../front/malloc_tiny_fast.h \ + core/box/front_gate_classifier.h core/box/../front/malloc_tiny_fast.h \ core/box/../front/../hakmem_build_flags.h \ core/box/../front/../hakmem_tiny_config.h \ core/box/../front/../superslab/superslab_inline.h \ @@ -70,8 +70,7 @@ hakmem.o: core/hakmem.c core/hakmem.h core/hakmem_build_flags.h \ core/box/../front/../box/../tiny_region_id.h \ core/box/../front/../box/../front/tiny_unified_cache.h \ core/box/../front/../box/tiny_front_cold_box.h \ - core/box/tiny_front_config_box.h core/box/mid_free_route_box.h \ - core/box/../hakmem_mid_mt.h + core/box/tiny_front_config_box.h core/box/wrapper_env_box.h core/hakmem.h: core/hakmem_build_flags.h: core/hakmem_config.h: @@ -82,6 +81,7 @@ core/hakmem_whale.h: core/box/ptr_type_box.h: core/hakmem_bigcache.h: core/hakmem_pool.h: +core/box/hak_lane_classify.inc.h: core/hakmem_l25_pool.h: core/hakmem_policy.h: core/hakmem_learner.h: @@ -103,6 +103,7 @@ core/tiny_debug_ring.h: core/tiny_remote.h: core/hakmem_tiny_superslab_constants.h: core/tiny_fastcache.h: +core/hakmem_env_cache.h: core/box/tiny_next_ptr_box.h: core/hakmem_tiny_config.h: core/tiny_nextptr.h: @@ -113,7 +114,6 @@ core/hakmem_super_registry.h: core/box/ss_addr_map_box.h: core/box/../hakmem_build_flags.h: core/tiny_debug_api.h: -core/hakmem_mid_mt.h: core/hakmem_elo.h: core/hakmem_ace_stats.h: core/hakmem_batch.h: @@ -133,6 +133,7 @@ core/hakmem_phase7_config.h: core/box/ss_hot_prewarm_box.h: core/box/hak_alloc_api.inc.h: core/box/../hakmem_tiny.h: +core/box/../hakmem_pool.h: core/box/../hakmem_smallmid.h: core/box/mid_large_config_box.h: core/box/../hakmem_config.h: @@ -171,6 +172,7 @@ core/box/../box/free_publish_box.h: core/hakmem_tiny.h: core/tiny_region_id.h: core/box/../hakmem_tiny_integrity.h: +core/box/../hakmem_env_cache.h: core/box/../superslab/superslab_inline.h: core/box/../box/ss_slab_meta_box.h: core/box/../box/slab_freelist_atomic.h: @@ -182,7 +184,6 @@ core/box/ss_slab_meta_box.h: core/box/fg_tiny_gate_box.h: core/box/hak_wrappers.inc.h: core/box/front_gate_classifier.h: -core/box/../hakmem_pool.h: core/box/../front/malloc_tiny_fast.h: core/box/../front/../hakmem_build_flags.h: core/box/../front/../hakmem_tiny_config.h: @@ -199,5 +200,4 @@ core/box/../front/../box/../tiny_region_id.h: core/box/../front/../box/../front/tiny_unified_cache.h: core/box/../front/../box/tiny_front_cold_box.h: core/box/tiny_front_config_box.h: -core/box/mid_free_route_box.h: -core/box/../hakmem_mid_mt.h: +core/box/wrapper_env_box.h: diff --git a/hakmem_ace.d b/hakmem_ace.d index a941b19c..e52260d0 100644 --- a/hakmem_ace.d +++ b/hakmem_ace.d @@ -2,7 +2,8 @@ hakmem_ace.o: core/hakmem_ace.c core/hakmem_internal.h core/hakmem.h \ core/hakmem_build_flags.h core/hakmem_config.h core/hakmem_features.h \ core/hakmem_sys.h core/hakmem_whale.h core/box/ptr_type_box.h \ core/hakmem_ace.h core/hakmem_policy.h core/hakmem_pool.h \ - core/hakmem_l25_pool.h core/hakmem_ace_stats.h core/hakmem_debug.h + core/box/hak_lane_classify.inc.h core/hakmem_l25_pool.h \ + core/hakmem_ace_stats.h core/hakmem_debug.h core/hakmem_internal.h: core/hakmem.h: core/hakmem_build_flags.h: @@ -14,6 +15,7 @@ core/box/ptr_type_box.h: core/hakmem_ace.h: core/hakmem_policy.h: core/hakmem_pool.h: +core/box/hak_lane_classify.inc.h: core/hakmem_l25_pool.h: core/hakmem_ace_stats.h: core/hakmem_debug.h: diff --git a/hakmem_ace_controller.d b/hakmem_ace_controller.d index 9e8d7587..93331e40 100644 --- a/hakmem_ace_controller.d +++ b/hakmem_ace_controller.d @@ -2,7 +2,8 @@ hakmem_ace_controller.o: core/hakmem_ace_controller.c \ core/hakmem_ace_controller.h core/hakmem_ace_metrics.h \ core/hakmem_ace_ucb1.h core/hakmem_tiny_magazine.h core/hakmem_tiny.h \ core/hakmem_build_flags.h core/hakmem_trace.h \ - core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h + core/hakmem_tiny_mini_mag.h core/box/hak_lane_classify.inc.h \ + core/box/ptr_type_box.h core/hakmem_ace_controller.h: core/hakmem_ace_metrics.h: core/hakmem_ace_ucb1.h: @@ -11,4 +12,5 @@ core/hakmem_tiny.h: core/hakmem_build_flags.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: diff --git a/hakmem_batch.d b/hakmem_batch.d index b4c7287e..cb95f6a2 100644 --- a/hakmem_batch.d +++ b/hakmem_batch.d @@ -1,10 +1,11 @@ hakmem_batch.o: core/hakmem_batch.c core/hakmem_batch.h core/hakmem_sys.h \ - core/hakmem_whale.h core/hakmem_internal.h core/hakmem.h \ - core/hakmem_build_flags.h core/hakmem_config.h core/hakmem_features.h \ - core/box/ptr_type_box.h + core/hakmem_whale.h core/hakmem_env_cache.h core/hakmem_internal.h \ + core/hakmem.h core/hakmem_build_flags.h core/hakmem_config.h \ + core/hakmem_features.h core/box/ptr_type_box.h core/hakmem_batch.h: core/hakmem_sys.h: core/hakmem_whale.h: +core/hakmem_env_cache.h: core/hakmem_internal.h: core/hakmem.h: core/hakmem_build_flags.h: diff --git a/hakmem_debug.d b/hakmem_debug.d index 5fd28a4e..75c95090 100644 --- a/hakmem_debug.d +++ b/hakmem_debug.d @@ -1,2 +1,4 @@ -hakmem_debug.o: core/hakmem_debug.c core/hakmem_debug.h +hakmem_debug.o: core/hakmem_debug.c core/hakmem_debug.h \ + core/hakmem_env_cache.h core/hakmem_debug.h: +core/hakmem_env_cache.h: diff --git a/hakmem_learner.d b/hakmem_learner.d index f2974da1..e0f875ee 100644 --- a/hakmem_learner.d +++ b/hakmem_learner.d @@ -2,11 +2,12 @@ hakmem_learner.o: core/hakmem_learner.c core/hakmem_learner.h \ core/hakmem_internal.h core/hakmem.h core/hakmem_build_flags.h \ core/hakmem_config.h core/hakmem_features.h core/hakmem_sys.h \ core/hakmem_whale.h core/box/ptr_type_box.h core/hakmem_syscall.h \ - core/hakmem_policy.h core/hakmem_pool.h core/hakmem_l25_pool.h \ - core/hakmem_ace_stats.h core/hakmem_size_hist.h core/hakmem_learn_log.h \ - core/hakmem_tiny_superslab.h core/superslab/superslab_types.h \ - core/hakmem_tiny_superslab_constants.h core/superslab/superslab_inline.h \ - core/superslab/superslab_types.h core/superslab/../tiny_box_geometry.h \ + core/hakmem_policy.h core/hakmem_pool.h core/box/hak_lane_classify.inc.h \ + core/hakmem_l25_pool.h core/hakmem_ace_stats.h core/hakmem_size_hist.h \ + core/hakmem_learn_log.h core/hakmem_tiny_superslab.h \ + core/superslab/superslab_types.h core/hakmem_tiny_superslab_constants.h \ + core/superslab/superslab_inline.h core/superslab/superslab_types.h \ + core/superslab/../tiny_box_geometry.h \ core/superslab/../hakmem_tiny_superslab_constants.h \ core/superslab/../hakmem_tiny_config.h core/tiny_debug_ring.h \ core/tiny_remote.h core/hakmem_tiny_superslab_constants.h @@ -22,6 +23,7 @@ core/box/ptr_type_box.h: core/hakmem_syscall.h: core/hakmem_policy.h: core/hakmem_pool.h: +core/box/hak_lane_classify.inc.h: core/hakmem_l25_pool.h: core/hakmem_ace_stats.h: core/hakmem_size_hist.h: diff --git a/hakmem_pool.d b/hakmem_pool.d index 670f779b..a5ee752a 100644 --- a/hakmem_pool.d +++ b/hakmem_pool.d @@ -1,4 +1,5 @@ -hakmem_pool.o: core/hakmem_pool.c core/hakmem_pool.h core/hakmem_config.h \ +hakmem_pool.o: core/hakmem_pool.c core/hakmem_pool.h \ + core/box/hak_lane_classify.inc.h core/hakmem_config.h \ core/hakmem_features.h core/hakmem_internal.h core/hakmem.h \ core/hakmem_build_flags.h core/hakmem_sys.h core/hakmem_whale.h \ core/box/ptr_type_box.h core/hakmem_syscall.h core/hakmem_prof.h \ @@ -10,6 +11,7 @@ hakmem_pool.o: core/hakmem_pool.c core/hakmem_pool.h core/hakmem_config.h \ core/box/pool_stats.inc.h core/box/pool_api.inc.h \ core/box/pagefault_telemetry_box.h core/hakmem_pool.h: +core/box/hak_lane_classify.inc.h: core/hakmem_config.h: core/hakmem_features.h: core/hakmem_internal.h: diff --git a/hakmem_shared_pool.d b/hakmem_shared_pool.d index 1c530667..02d12aa4 100644 --- a/hakmem_shared_pool.d +++ b/hakmem_shared_pool.d @@ -13,8 +13,8 @@ hakmem_shared_pool.o: core/hakmem_shared_pool.c \ core/tiny_nextptr.h core/tiny_region_id.h core/tiny_box_geometry.h \ core/ptr_track.h core/hakmem_super_registry.h core/box/ss_addr_map_box.h \ core/box/../hakmem_build_flags.h core/hakmem_tiny.h core/hakmem_trace.h \ - core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h \ - core/tiny_debug_api.h core/box/ss_hot_cold_box.h \ + core/hakmem_tiny_mini_mag.h core/box/hak_lane_classify.inc.h \ + core/box/ptr_type_box.h core/tiny_debug_api.h core/box/ss_hot_cold_box.h \ core/box/pagefault_telemetry_box.h core/box/tls_sll_drain_box.h \ core/box/tls_sll_box.h core/box/../hakmem_internal.h \ core/box/../hakmem.h core/box/../hakmem_build_flags.h \ @@ -63,6 +63,7 @@ core/box/../hakmem_build_flags.h: core/hakmem_tiny.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: core/tiny_debug_api.h: core/box/ss_hot_cold_box.h: diff --git a/hakmem_site_rules.d b/hakmem_site_rules.d index 99a5c8db..d96a7245 100644 --- a/hakmem_site_rules.d +++ b/hakmem_site_rules.d @@ -1,9 +1,11 @@ hakmem_site_rules.o: core/hakmem_site_rules.c core/hakmem_site_rules.h \ - core/hakmem_pool.h core/hakmem_internal.h core/hakmem.h \ - core/hakmem_build_flags.h core/hakmem_config.h core/hakmem_features.h \ - core/hakmem_sys.h core/hakmem_whale.h core/box/ptr_type_box.h + core/hakmem_pool.h core/box/hak_lane_classify.inc.h \ + core/hakmem_internal.h core/hakmem.h core/hakmem_build_flags.h \ + core/hakmem_config.h core/hakmem_features.h core/hakmem_sys.h \ + core/hakmem_whale.h core/box/ptr_type_box.h core/hakmem_site_rules.h: core/hakmem_pool.h: +core/box/hak_lane_classify.inc.h: core/hakmem_internal.h: core/hakmem.h: core/hakmem_build_flags.h: diff --git a/hakmem_smallmid.d b/hakmem_smallmid.d index 068b65ad..c3cfe192 100644 --- a/hakmem_smallmid.d +++ b/hakmem_smallmid.d @@ -8,8 +8,8 @@ hakmem_smallmid.o: core/hakmem_smallmid.c core/hakmem_smallmid.h \ core/superslab/superslab_types.h core/superslab/../tiny_box_geometry.h \ core/tiny_debug_ring.h core/tiny_remote.h core/box/ss_addr_map_box.h \ core/box/../hakmem_build_flags.h core/hakmem_tiny.h core/hakmem_trace.h \ - core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h \ - core/tiny_debug_api.h + core/hakmem_tiny_mini_mag.h core/box/hak_lane_classify.inc.h \ + core/box/ptr_type_box.h core/tiny_debug_api.h core/hakmem_env_cache.h core/hakmem_smallmid.h: core/hakmem_build_flags.h: core/hakmem_smallmid_superslab.h: @@ -32,5 +32,7 @@ core/box/../hakmem_build_flags.h: core/hakmem_tiny.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: core/tiny_debug_api.h: +core/hakmem_env_cache.h: diff --git a/hakmem_super_registry.d b/hakmem_super_registry.d index 39244e2b..d9854085 100644 --- a/hakmem_super_registry.d +++ b/hakmem_super_registry.d @@ -8,7 +8,8 @@ hakmem_super_registry.o: core/hakmem_super_registry.c \ core/hakmem_build_flags.h core/tiny_remote.h \ core/hakmem_tiny_superslab_constants.h core/box/ss_addr_map_box.h \ core/box/../hakmem_build_flags.h core/box/ss_allocation_box.h \ - core/hakmem_tiny_superslab.h + core/hakmem_tiny_superslab.h core/box/ss_cold_start_box.inc.h \ + core/hakmem_env_cache.h core/hakmem_super_registry.h: core/hakmem_tiny_superslab.h: core/superslab/superslab_types.h: @@ -26,3 +27,5 @@ core/box/ss_addr_map_box.h: core/box/../hakmem_build_flags.h: core/box/ss_allocation_box.h: core/hakmem_tiny_superslab.h: +core/box/ss_cold_start_box.inc.h: +core/hakmem_env_cache.h: diff --git a/hakmem_tiny_bg_spill.d b/hakmem_tiny_bg_spill.d index 750d0e94..dbad8dc0 100644 --- a/hakmem_tiny_bg_spill.d +++ b/hakmem_tiny_bg_spill.d @@ -9,8 +9,8 @@ hakmem_tiny_bg_spill.o: core/hakmem_tiny_bg_spill.c \ core/superslab/superslab_types.h core/superslab/../tiny_box_geometry.h \ core/tiny_debug_ring.h core/tiny_remote.h core/box/ss_addr_map_box.h \ core/box/../hakmem_build_flags.h core/hakmem_tiny.h core/hakmem_trace.h \ - core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h \ - core/tiny_debug_api.h + core/hakmem_tiny_mini_mag.h core/box/hak_lane_classify.inc.h \ + core/box/ptr_type_box.h core/tiny_debug_api.h core/hakmem_tiny_bg_spill.h: core/box/tiny_next_ptr_box.h: core/hakmem_tiny_config.h: @@ -35,5 +35,6 @@ core/box/../hakmem_build_flags.h: core/hakmem_tiny.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: core/tiny_debug_api.h: diff --git a/hakmem_tiny_magazine.d b/hakmem_tiny_magazine.d index 92298c4b..208dcfe4 100644 --- a/hakmem_tiny_magazine.d +++ b/hakmem_tiny_magazine.d @@ -1,6 +1,7 @@ hakmem_tiny_magazine.o: core/hakmem_tiny_magazine.c \ core/hakmem_tiny_magazine.h core/hakmem_tiny.h core/hakmem_build_flags.h \ - core/hakmem_trace.h core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h \ + core/hakmem_trace.h core/hakmem_tiny_mini_mag.h \ + core/box/hak_lane_classify.inc.h core/box/ptr_type_box.h \ core/hakmem_tiny_config.h core/hakmem_tiny_superslab.h \ core/superslab/superslab_types.h core/hakmem_tiny_superslab_constants.h \ core/superslab/superslab_inline.h core/superslab/superslab_types.h \ @@ -20,6 +21,7 @@ core/hakmem_tiny.h: core/hakmem_build_flags.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: core/hakmem_tiny_config.h: core/hakmem_tiny_superslab.h: diff --git a/hakmem_tiny_query.d b/hakmem_tiny_query.d index cbea8bed..273d7a3a 100644 --- a/hakmem_tiny_query.d +++ b/hakmem_tiny_query.d @@ -1,10 +1,11 @@ hakmem_tiny_query.o: core/hakmem_tiny_query.c core/hakmem_tiny.h \ core/hakmem_build_flags.h core/hakmem_trace.h \ - core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h \ - core/hakmem_tiny_config.h core/hakmem_tiny_query_api.h \ - core/hakmem_tiny_superslab.h core/superslab/superslab_types.h \ - core/hakmem_tiny_superslab_constants.h core/superslab/superslab_inline.h \ - core/superslab/superslab_types.h core/superslab/../tiny_box_geometry.h \ + core/hakmem_tiny_mini_mag.h core/box/hak_lane_classify.inc.h \ + core/box/ptr_type_box.h core/hakmem_tiny_config.h \ + core/hakmem_tiny_query_api.h core/hakmem_tiny_superslab.h \ + core/superslab/superslab_types.h core/hakmem_tiny_superslab_constants.h \ + core/superslab/superslab_inline.h core/superslab/superslab_types.h \ + core/superslab/../tiny_box_geometry.h \ core/superslab/../hakmem_tiny_superslab_constants.h \ core/superslab/../hakmem_tiny_config.h core/tiny_debug_ring.h \ core/tiny_remote.h core/hakmem_tiny_superslab_constants.h \ @@ -15,6 +16,7 @@ core/hakmem_tiny.h: core/hakmem_build_flags.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: core/hakmem_tiny_config.h: core/hakmem_tiny_query_api.h: diff --git a/hakmem_tiny_registry.d b/hakmem_tiny_registry.d index d969777a..e3ba5f03 100644 --- a/hakmem_tiny_registry.d +++ b/hakmem_tiny_registry.d @@ -1,10 +1,11 @@ hakmem_tiny_registry.o: core/hakmem_tiny_registry.c core/hakmem_tiny.h \ core/hakmem_build_flags.h core/hakmem_trace.h \ - core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h \ - core/hakmem_tiny_registry_api.h + core/hakmem_tiny_mini_mag.h core/box/hak_lane_classify.inc.h \ + core/box/ptr_type_box.h core/hakmem_tiny_registry_api.h core/hakmem_tiny.h: core/hakmem_build_flags.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: core/hakmem_tiny_registry_api.h: diff --git a/hakmem_tiny_remote_target.d b/hakmem_tiny_remote_target.d index 8a12a916..a7bad65b 100644 --- a/hakmem_tiny_remote_target.d +++ b/hakmem_tiny_remote_target.d @@ -1,10 +1,12 @@ hakmem_tiny_remote_target.o: core/hakmem_tiny_remote_target.c \ core/hakmem_tiny_remote_target.h core/hakmem_tiny.h \ core/hakmem_build_flags.h core/hakmem_trace.h \ - core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h + core/hakmem_tiny_mini_mag.h core/box/hak_lane_classify.inc.h \ + core/box/ptr_type_box.h core/hakmem_tiny_remote_target.h: core/hakmem_tiny.h: core/hakmem_build_flags.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: diff --git a/hakmem_tiny_sfc.d b/hakmem_tiny_sfc.d index b5013d99..bbeb4bad 100644 --- a/hakmem_tiny_sfc.d +++ b/hakmem_tiny_sfc.d @@ -1,10 +1,10 @@ hakmem_tiny_sfc.o: core/hakmem_tiny_sfc.c core/tiny_alloc_fast_sfc.inc.h \ core/hakmem_tiny.h core/hakmem_build_flags.h core/hakmem_trace.h \ - core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h \ - core/box/tiny_next_ptr_box.h core/hakmem_tiny_config.h \ - core/tiny_nextptr.h core/tiny_region_id.h core/tiny_box_geometry.h \ - core/hakmem_tiny_superslab_constants.h core/hakmem_tiny_config.h \ - core/ptr_track.h core/hakmem_super_registry.h \ + core/hakmem_tiny_mini_mag.h core/box/hak_lane_classify.inc.h \ + core/box/ptr_type_box.h core/box/tiny_next_ptr_box.h \ + core/hakmem_tiny_config.h core/tiny_nextptr.h core/tiny_region_id.h \ + core/tiny_box_geometry.h core/hakmem_tiny_superslab_constants.h \ + core/hakmem_tiny_config.h core/ptr_track.h core/hakmem_super_registry.h \ core/hakmem_tiny_superslab.h core/superslab/superslab_types.h \ core/hakmem_tiny_superslab_constants.h core/superslab/superslab_inline.h \ core/superslab/superslab_types.h core/superslab/../tiny_box_geometry.h \ @@ -20,12 +20,14 @@ hakmem_tiny_sfc.o: core/hakmem_tiny_sfc.c core/tiny_alloc_fast_sfc.inc.h \ core/box/../hakmem_tiny_integrity.h core/box/../hakmem_tiny.h \ core/box/../ptr_track.h core/box/../ptr_trace.h \ core/box/../tiny_debug_ring.h core/box/../superslab/superslab_inline.h \ - core/box/tiny_header_box.h core/box/../tiny_nextptr.h + core/box/tiny_header_box.h core/box/../tiny_nextptr.h \ + core/hakmem_env_cache.h core/tiny_alloc_fast_sfc.inc.h: core/hakmem_tiny.h: core/hakmem_build_flags.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: core/box/tiny_next_ptr_box.h: core/hakmem_tiny_config.h: @@ -70,3 +72,4 @@ core/box/../tiny_debug_ring.h: core/box/../superslab/superslab_inline.h: core/box/tiny_header_box.h: core/box/../tiny_nextptr.h: +core/hakmem_env_cache.h: diff --git a/hakmem_tiny_stats.d b/hakmem_tiny_stats.d index fabc2bec..76c56196 100644 --- a/hakmem_tiny_stats.d +++ b/hakmem_tiny_stats.d @@ -1,10 +1,11 @@ hakmem_tiny_stats.o: core/hakmem_tiny_stats.c core/hakmem_tiny.h \ core/hakmem_build_flags.h core/hakmem_trace.h \ - core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h \ - core/hakmem_tiny_config.h core/hakmem_tiny_stats_api.h \ - core/hakmem_tiny_superslab.h core/superslab/superslab_types.h \ - core/hakmem_tiny_superslab_constants.h core/superslab/superslab_inline.h \ - core/superslab/superslab_types.h core/superslab/../tiny_box_geometry.h \ + core/hakmem_tiny_mini_mag.h core/box/hak_lane_classify.inc.h \ + core/box/ptr_type_box.h core/hakmem_tiny_config.h \ + core/hakmem_tiny_stats_api.h core/hakmem_tiny_superslab.h \ + core/superslab/superslab_types.h core/hakmem_tiny_superslab_constants.h \ + core/superslab/superslab_inline.h core/superslab/superslab_types.h \ + core/superslab/../tiny_box_geometry.h \ core/superslab/../hakmem_tiny_superslab_constants.h \ core/superslab/../hakmem_tiny_config.h core/tiny_debug_ring.h \ core/tiny_remote.h core/hakmem_tiny_superslab_constants.h \ @@ -13,6 +14,7 @@ core/hakmem_tiny.h: core/hakmem_build_flags.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: core/hakmem_tiny_config.h: core/hakmem_tiny_stats_api.h: diff --git a/tiny_adaptive_sizing.d b/tiny_adaptive_sizing.d index c10e8a57..263b44b8 100644 --- a/tiny_adaptive_sizing.d +++ b/tiny_adaptive_sizing.d @@ -1,6 +1,7 @@ tiny_adaptive_sizing.o: core/tiny_adaptive_sizing.c \ core/tiny_adaptive_sizing.h core/hakmem_tiny.h core/hakmem_build_flags.h \ - core/hakmem_trace.h core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h \ + core/hakmem_trace.h core/hakmem_tiny_mini_mag.h \ + core/box/hak_lane_classify.inc.h core/box/ptr_type_box.h \ core/box/tiny_next_ptr_box.h core/hakmem_tiny_config.h \ core/tiny_nextptr.h core/tiny_region_id.h core/tiny_box_geometry.h \ core/hakmem_tiny_superslab_constants.h core/hakmem_tiny_config.h \ @@ -15,6 +16,7 @@ core/hakmem_tiny.h: core/hakmem_build_flags.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: core/box/tiny_next_ptr_box.h: core/hakmem_tiny_config.h: diff --git a/tiny_debug_ring.d b/tiny_debug_ring.d index 2ee3627a..27482c79 100644 --- a/tiny_debug_ring.d +++ b/tiny_debug_ring.d @@ -1,9 +1,11 @@ tiny_debug_ring.o: core/tiny_debug_ring.c core/tiny_debug_ring.h \ core/hakmem_build_flags.h core/hakmem_tiny.h core/hakmem_trace.h \ - core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h + core/hakmem_tiny_mini_mag.h core/box/hak_lane_classify.inc.h \ + core/box/ptr_type_box.h core/tiny_debug_ring.h: core/hakmem_build_flags.h: core/hakmem_tiny.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: diff --git a/tiny_fastcache.d b/tiny_fastcache.d index 18164651..9c04a441 100644 --- a/tiny_fastcache.d +++ b/tiny_fastcache.d @@ -1,16 +1,18 @@ tiny_fastcache.o: core/tiny_fastcache.c core/tiny_fastcache.h \ - core/box/tiny_next_ptr_box.h core/hakmem_tiny_config.h \ - core/tiny_nextptr.h core/hakmem_build_flags.h core/tiny_region_id.h \ - core/tiny_box_geometry.h core/hakmem_tiny_superslab_constants.h \ - core/hakmem_tiny_config.h core/ptr_track.h core/hakmem_super_registry.h \ + core/hakmem_env_cache.h core/box/tiny_next_ptr_box.h \ + core/hakmem_tiny_config.h core/tiny_nextptr.h core/hakmem_build_flags.h \ + core/tiny_region_id.h core/tiny_box_geometry.h \ + core/hakmem_tiny_superslab_constants.h core/hakmem_tiny_config.h \ + core/ptr_track.h core/hakmem_super_registry.h \ core/hakmem_tiny_superslab.h core/superslab/superslab_types.h \ core/hakmem_tiny_superslab_constants.h core/superslab/superslab_inline.h \ core/superslab/superslab_types.h core/superslab/../tiny_box_geometry.h \ core/tiny_debug_ring.h core/tiny_remote.h core/box/ss_addr_map_box.h \ core/box/../hakmem_build_flags.h core/hakmem_tiny.h core/hakmem_trace.h \ - core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h \ - core/tiny_debug_api.h + core/hakmem_tiny_mini_mag.h core/box/hak_lane_classify.inc.h \ + core/box/ptr_type_box.h core/tiny_debug_api.h core/tiny_fastcache.h: +core/hakmem_env_cache.h: core/box/tiny_next_ptr_box.h: core/hakmem_tiny_config.h: core/tiny_nextptr.h: @@ -34,5 +36,6 @@ core/box/../hakmem_build_flags.h: core/hakmem_tiny.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: core/tiny_debug_api.h: diff --git a/tiny_publish.d b/tiny_publish.d index c98cd0a8..4d57e248 100644 --- a/tiny_publish.d +++ b/tiny_publish.d @@ -1,10 +1,10 @@ tiny_publish.o: core/tiny_publish.c core/hakmem_tiny.h \ core/hakmem_build_flags.h core/hakmem_trace.h \ - core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h \ - core/box/mailbox_box.h core/hakmem_tiny_superslab.h \ - core/superslab/superslab_types.h core/hakmem_tiny_superslab_constants.h \ - core/superslab/superslab_inline.h core/superslab/superslab_types.h \ - core/superslab/../tiny_box_geometry.h \ + core/hakmem_tiny_mini_mag.h core/box/hak_lane_classify.inc.h \ + core/box/ptr_type_box.h core/box/mailbox_box.h \ + core/hakmem_tiny_superslab.h core/superslab/superslab_types.h \ + core/hakmem_tiny_superslab_constants.h core/superslab/superslab_inline.h \ + core/superslab/superslab_types.h core/superslab/../tiny_box_geometry.h \ core/superslab/../hakmem_tiny_superslab_constants.h \ core/superslab/../hakmem_tiny_config.h core/tiny_debug_ring.h \ core/tiny_remote.h core/hakmem_tiny_superslab_constants.h \ @@ -14,6 +14,7 @@ core/hakmem_tiny.h: core/hakmem_build_flags.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: core/box/mailbox_box.h: core/hakmem_tiny_superslab.h: diff --git a/tiny_sticky.d b/tiny_sticky.d index 0a5b0240..b9daf103 100644 --- a/tiny_sticky.d +++ b/tiny_sticky.d @@ -1,9 +1,10 @@ tiny_sticky.o: core/tiny_sticky.c core/hakmem_tiny.h \ core/hakmem_build_flags.h core/hakmem_trace.h \ - core/hakmem_tiny_mini_mag.h core/box/ptr_type_box.h core/tiny_sticky.h \ - core/hakmem_tiny_superslab.h core/superslab/superslab_types.h \ - core/hakmem_tiny_superslab_constants.h core/superslab/superslab_inline.h \ - core/superslab/superslab_types.h core/superslab/../tiny_box_geometry.h \ + core/hakmem_tiny_mini_mag.h core/box/hak_lane_classify.inc.h \ + core/box/ptr_type_box.h core/tiny_sticky.h core/hakmem_tiny_superslab.h \ + core/superslab/superslab_types.h core/hakmem_tiny_superslab_constants.h \ + core/superslab/superslab_inline.h core/superslab/superslab_types.h \ + core/superslab/../tiny_box_geometry.h \ core/superslab/../hakmem_tiny_superslab_constants.h \ core/superslab/../hakmem_tiny_config.h core/tiny_debug_ring.h \ core/tiny_remote.h core/hakmem_tiny_superslab_constants.h @@ -11,6 +12,7 @@ core/hakmem_tiny.h: core/hakmem_build_flags.h: core/hakmem_trace.h: core/hakmem_tiny_mini_mag.h: +core/box/hak_lane_classify.inc.h: core/box/ptr_type_box.h: core/tiny_sticky.h: core/hakmem_tiny_superslab.h: