mORMot2 Daily每日上游提交速读

日志检查保留 MAB 文件,并新增跨平台调用方追踪

本期主要加固 TSynLog 周边工具,不改变 backend 协议。日志读取器不再因空 profiler 数据或纯文本选择而崩溃,TDebugFile 也不再删除无法读取的外部 .mab 文件。FreeBSD、FPC 与 Android 获得 socket/POSIX 兼容修复,调用方符号发现现在可通过 TDebugFile 覆盖所有受支持编译器。

要点

  • 应采用 build 2.4.17019 的 fc996116ae8a2534c5e763ac180649cdb78013ab。
  • TDebugFile.Create 不再删除通过 aExeName 提供但无法读取的外部 .mab 文件。
  • TSynLogFile 与 TSynLogFileView 现在可安全处理无 sllEnter 的日志、纯文本剪贴板行与空 level filter。
  • FreeBSD UNIX-domain socket 大小以及后续 FPC、BSD、Android 编译修复已在最终 build 完成。
  • 新增 TDebugFile.AppendCallerShort;无文本的 TSynLog.Enter 或 Log 现在在 FPC 与 Delphi 上都能解析调用方信息。
  • Lazarus package 重新生成 mormot2.pas 时现在会保留 mormot.crypt.pkcs11。

升级建议

请采用 build 2.4.17019。若 LogView 会打开外部 .mab、日志可能不含 sllEnter,或需支持 FreeBSD、FPC BSD、Android,应尽快升级。重新构建各平台 package,测试纯文本复制与空 filter,并确认自动调用方符号是否改变日志量或热路径成本。原始 payload 没有 superseded_by 标记,因此不声明避开区间。

版本号2.4.17002 → 2.4.17019
提交13
行数+796 -383
阅读1 分钟

8 条中的 8 条 · 上游 13 次提交

主题
# 条目 类别 单元
1 高 空日志与纯文本日志不再使 viewer 出错 无 sllEnter event 时,TSynLogFile.SetLogProcMerged 不再访问 profiler array。fLevels 为 nil 时,TSynLogFileView.GetLineForClipboard 返回原始行;Select 在处理空 event filter 前清除 fSelectedCount。TTestCoreBase.Debugging 新增回归测试。 修复 mormot.core.log a01ae51e+56-8

core: fixed TSynLogFile/TSynLogFileView edge cases found by the LogView tool

影响

LogView 与自定义分析器在无方法 profiling 的日志上避免 nil 或越界访问,可复制纯文本行,并在取消全部 level 后正确显示零行。

公开 API

  • TSynLogFile.SetLogProcMergedbehaviour-changed — 在无 sllEnter 的日志上启用 merged profiling 时,现在保留空 profiler,不再解引用空 array。
  • TSynLogFileView.GetLineForClipboardbehaviour-changed — 纯文本文件现在返回所选原始行,越界 row 返回空字符串。

Sven Harazim · 05:49 UTC · 在 GitHub 上查看该提交 →

2 高 无法读取的外部 MAB 文件不再被删除 cache timestamp 匹配时,TDebugFile.Create 仍会尝试 LoadMab,但加载不到 block 或 symbol 时不再调用 DeleteFile。 修复 mormot.core.log 4ca916cb+1-3

core: TDebugFile.Create() won't delete an unreadable .mab file

影响

像 LogView 那样通过 aExeName 传入用户选择的 .mab 时,不会再仅因文件不可读、损坏或不兼容而删除它。cache 加载失败后仍会回退解析 .map 或 .dbg。

公开 API

  • TDebugFile.Createbehaviour-changed — 无法读取的 MAB 会被保留,不再于 fallback 符号加载前删除。

Sven Harazim · 09:29 UTC · 在 GitHub 上查看该提交 →

3 高 平台 merge 后 BSD、FPC 与 Android 编译路径完成统一 后续修复让 CPU_ARCH_TEXT 使用 CPUAARCH64,使 PosixStatFS 在两种编译器上都接受 pointer,按 DELPHIPOSIX 选择 Android st_ino 字段,修正条件 socket 语法与 FPC shift cast,并通过 LibraryOpen/LibraryResolve 加载 getifaddrs。 编译器与平台 mormot.core.os+4 e68dce4a+17-20

all: some fixes after #598

影响

合并后的 Delphi Android 工作与 FreeBSD socket-size 修改可在 Delphi/FPC POSIX target 上正确编译。Android 文件标识采用对应 RTL 字段,FPC 在此不再依赖直接 dlopen 声明。

公开 API

  • PosixStatFSsignature-changed — Info 参数现在在 FPC 与 Delphi 上均为 pointer,不再在 FPC 上使用 PStatfs。

Arnaud Bouchez · 12:16 UTC · PR #598 · 在 GitHub 上查看该提交 →

4 中 Lazarus package 保留 PKCS #11 支持 packages/lazarus/mormot2.lpk 将 mormot.crypt.pkcs11 添加为 item 114,后续项目顺移,声明文件数从 123 增至 124。 修复 mormot.crypt.pkcs11 7b98b09a+24-20

packages: added mormot.crypt.pkcs11 to the Lazarus package

影响

打开或重建 Lazarus package 时,不再生成缺少 mormot.crypt.pkcs11 的 mormot2.pas。直接引用 unit 与 Delphi 项目不受影响。

值得一看

重建 Lazarus package,并确认生成的 umbrella unit 仍包含 mormot.crypt.pkcs11。

Sven Harazim · 09:31 UTC · 在 GitHub 上查看该提交 →

5 中 UNIX socket 地址采用 FreeBSD 原生大小 有 sun_len 的平台上,TSockAddrUnix 使用 104-byte sun_path,其他平台使用 108 bytes。SOCKADDR_SIZE 跟随该 layout,TNetAddr.Size 与 SetFamily 显式处理 AF_UNIX。 修复 mormot.net.sock+1 b6262622+22-9

net: fixed TSockAddrUnix size for FreeBSD

影响

FreeBSD 与其他含 sun_len 的 target 不再传入过大的 sockaddr_un buffer,也不再为 AF_UNIX 报告通用存储大小。Linux 与 Windows layout 不变。

公开 API

  • SOCKADDR_SIZEbehaviour-changed — 在 socket record 含 sun_len 的平台上,此公开常量从 110 改为 106。

Arnaud Bouchez · 07:50 UTC · 在 GitHub 上查看该提交 →

6 中 调用方符号可在不分配 heap 的情况下追加 TDebugFile.AppendCallerShort 捕获最多 62 个原始 frame,去重后把解析位置追加到 ShortString。RawStackTrace 与 StackTrace 共用,并在 Delphi/FPC 探测 frame 时屏蔽被拦截异常。 新功能 mormot.core.log 19b48603+186-111

core: new TDebugFile.AppendCallerShort method

影响

日志与诊断代码在 FPC 和 Delphi 上都可获得紧凑调用方位置,无需构造 RawUtf8 结果。符号质量仍取决于可用的 .map、.gdb 或 .mab 数据。

公开 API

  • TDebugFile.AppendCallerShortadded — 此新 class procedure 将 aSkip/aDepth 指定的已解析 stack 位置追加到调用方提供的 ShortString。

Arnaud Bouchez · 13:23 UTC · 在 GitHub 上查看该提交 →

7 中 无文本 TSynLog entry 可在所有 target 上识别调用方 aMethodName=nil 的 TSynLog.Enter 与 TSynLog.Log(Level) 会在获取 writer lock 前调用 TDebugFile.AppendCallerShort。LogEnter 接受预计算的 PShortString location,并移除原 Delphi-only 地址捕获。 新功能 mormot.core.log fc996116+74-145

core: TSynLog.Enter/Log with no text nor method name will use caller info

影响

有 debug 数据时,FPC 日志现在可包含与 Delphi 相同的调用方符号上下文。故意省略文本的调用会捕获 stack,且可能输出更多文本,因此应测量热日志路径。

值得一看

检查无文本 Enter/Log 调用,确认需要新的调用方文本,并使用生产 debug artifact 对高频路径进行 benchmark。

公开 API

  • TSynLog.Enterbehaviour-changed — aMethodName 为 nil 时,现在在 FPC 与 Delphi 上都会触发 TDebugFile 调用方解析。
  • TSynLog.Logbehaviour-changed — 仅接收 level 的 overload 现在会在可用时追加已解析的调用方位置。

Arnaud Bouchez · 13:24 UTC · 在 GitHub 上查看该提交 →

8 低 POSIX host record 对齐原生 C 字段类型 内部 hostent.h_length 声明从 TSockLen 改为 cint,以匹配 C ABI。sockaddr_dl 注释得到澄清,layout 不变。 编译器与平台 mormot.net.sock.posix de2e5034+4-4

net: minor cleanup after latest PR

影响

POSIX 名称解析 binding 在 FPC 与 Delphi 上采用原生整数类型;应用 API 与 Windows 行为不变。

Arnaud Bouchez · 08:02 UTC · 在 GitHub 上查看该提交 →

上游活动 每日提交数 · 最近 60 天
提交977
活跃天数44/60
最忙一天2026-09-30
峰值60
2026-08-15: 0 commits2026-08-16: 0 commits2026-08-17: 0 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 26 commits2026-08-28: 11 commits2026-08-29: 10 commits2026-08-30: 1 commit2026-08-31: 23 commits2026-09-01: 0 commits2026-09-02: 20 commits2026-09-03: 29 commits2026-09-04: 35 commits2026-09-05: 13 commits2026-09-06: 0 commits2026-09-07: 0 commits2026-09-08: 23 commits2026-09-09: 10 commits2026-09-10: 17 commits2026-09-11: 23 commits2026-09-12: 14 commits2026-09-13: 9 commits2026-09-14: 7 commits2026-09-15: 4 commits2026-09-16: 24 commits2026-09-17: 26 commits2026-09-18: 21 commits2026-09-19: 59 commits2026-09-20: 13 commits2026-09-21: 5 commits2026-09-22: 34 commits2026-09-23: 17 commits2026-09-24: 57 commits2026-09-25: 22 commits2026-09-26: 26 commits2026-09-27: 0 commits2026-09-28: 2 commits2026-09-29: 19 commits2026-09-30: 60 commits2026-10-01: 26 commits2026-10-02: 30 commits2026-10-03: 32 commits2026-10-04: 15 commits2026-10-05: 1 commit2026-10-06: 26 commits2026-10-07: 37 commits2026-10-08: 27 commits2026-10-09: 35 commits2026-10-10: 33 commits2026-10-11: 9 commits2026-10-12: 11 commits2026-10-13: 35 commits
2026-08-152026-10-13