Files
hakmem/docs
Moe Charm (CI) c2f104618f Fix critical TLS drain memory leak causing potential double-free
## Root Cause

TLS drain was dropping pointers when SuperSlab lookup or slab_idx validation failed:
- Pop pointer from TLS SLL
- Lookup/validation fails
- continue → LEAK! Pointer never returned to any freelist

## Impact

Memory leak + potential double allocation:
1. Pointer P popped but leaked
2. Same address P reallocated from carve/other source
3. User frees P again → duplicate detection → ABORT

## Fix

**Before (BUGGY)**:
```c
if (!ss || invalid_slab_idx) {
    continue;  // ← LEAK!
}
```

**After (FIXED)**:
```c
if (!ss || invalid_slab_idx) {
    // Push back to TLS SLL head (retry later)
    tiny_next_write(class_idx, base, g_tls_sll[class_idx].head);
    g_tls_sll[class_idx].head = base;
    g_tls_sll[class_idx].count++;
    break;  // Stop draining to avoid infinite retry
}
```

## Files Changed

- core/box/tls_sll_drain_box.h: Fix 2 leak sites (SS lookup + slab_idx validation)
- docs/analysis/LARSON_DOUBLE_FREE_INVESTIGATION.md: Investigation report

## Related

- Larson double-free investigation (47% crash rate)
- Commit e4868bf23: Freelist header write + abort() on duplicate
- ChatGPT analysis: Larson benchmark code is correct (no user bug)
2025-11-27 06:49:38 +09:00
..

Docs Overview

このフォルダは hakmem の設計・計測・運用メモを体系化して管理する場所です。

  • INDEX.md: 目次(各ドキュメントへのリンク)
  • benchmarks/: ベンチマーク手順とスイープ結果の保存先
  • specs/: 現在の仕様SACS3/HW/ENVを集約
  • roadmap/: これからの実装計画・優先度・タスク

運用ルール(提案)

  • 1つの変更/計測のまとまりにつき1ファイルor 1フォルダ
  • 再現コマンド・環境変数・ハード構成は必ず記載
  • 大きな連続出力はファイルへ保存し、本文からは抜粋/要約を記載