Skip to content

Commit ab778e8

Browse files
committed
docs(#519): 记下第三处被实测推翻的推理(pack 不收合成的共享库)
1 parent 8aad64d commit ab778e8

1 file changed

Lines changed: 29 additions & 0 deletions

File tree

.agents/docs/2026-08-28-issue519-dependency-linkage-form.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -864,3 +864,32 @@ warning: trayapp: 88 symbols in this image are also provided by a library it loa
864864
2. 两段式谓词在真实图上**没有误报**(vendor 包自身的 `.so` 之间不报);
865865
3. `dependency_linkage` 的逃生口在真实图上**确实生效**(88 → 0);
866866
4. ⚠️ 而它的**局限也是真的**,并因此改了文案 —— 这是本次验证最有价值的产出。
867+
868+
### 13.5 ⚠️⚠️ 第三处:打出来的包起不来
869+
870+
§11.1 第 5 条写的是「大概率经 `$ORIGIN` 的闭包被捞到 —— 但这是推理不是测量」。
871+
判据 12 就是为它写的,而**推理错了**:
872+
873+
```console
874+
$ mcpp pack && tar xzf … && ./app
875+
error while loading shared libraries: libcore.so
876+
```
877+
878+
`pack` 的闭包来自**运行产物**(`LD_TRACE_LOADED_OBJECTS`),而它运行的是
879+
**暂存目录里的副本** —— 那个副本旁边的 `bin/` 是空的,`$ORIGIN` 解析不到,
880+
库于是从不出现在闭包里,也就从不被打包。构建、打包、上传全程无话。
881+
882+
⚠️ **不是这根轴引入的**:在 mcpp 2026.8.26.1 上用作者声明的 `kind = "shared"`
883+
依赖复现,同样起不来。但轴把它从「12 个自称 shared 的包」变成「任何一个包」
884+
都可达 —— 与 PIC 进缓存键完全同型,所以同一个 PR 修掉。
885+
886+
### 13.6 三条被实测推翻的推理,一次会话
887+
888+
| # | 我写的 | 实测 |
889+
|---|---|---|
890+
| §11.1-5 | 「大概率被 `$ORIGIN` 闭包捞到」 | ⚠️ 没有。包解开就起不来 |
891+
| §12.7 文案 | 三条出路,`dependency_linkage` 排第一 | ⚠️ 它会把 1 份变 2 份;次序要倒过来 |
892+
| §12.2 | (推导)shared→static 是良性的 | ✅ 实测确认,且**第一轮的谓词会误报它** |
893+
894+
⭐ 前两条都是**推理写在文档里、判据写在测试里、然后测试推翻了推理**
895+
第三条是推理被证实 —— 但只有把它写成判据才发现第一轮的谓词错了。

0 commit comments

Comments
 (0)