Save current state before investigating TLS_SLL_HDR_RESET
This commit is contained in:
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
365
docs/tls_sll_hdr_reset_for_gemini.md
Normal file
365
docs/tls_sll_hdr_reset_for_gemini.md
Normal file
@ -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. **結果を報告**してください
|
||||
- 修正したファイル、変更内容、テスト結果を明記してください
|
||||
|
||||
よろしくお願いします!🙏
|
||||
143
docs/tls_sll_hdr_reset_investigation_v2.md
Normal file
143
docs/tls_sll_hdr_reset_investigation_v2.md
Normal file
@ -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のいずれか(または組み合わせ)で確実に「書くべき場所でヘッダーを復元する」こと。
|
||||
116
docs/tls_sll_header_corruption_investigation.md
Normal file
116
docs/tls_sll_header_corruption_investigation.md
Normal file
@ -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 パターンでも再発しないことを確認する。
|
||||
44
hakmem.d
44
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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
Reference in New Issue
Block a user