Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

fix: NativeDayMerge makeDayRecord 未设置 reserved 字段导致非 linux/amd64 平台 volume 虚高 100 倍#105

Merged
jing2uo merged 1 commit into
jing2uo:main from
syfly007:patch-1
Jun 5, 2026
Merged

fix: NativeDayMerge makeDayRecord 未设置 reserved 字段导致非 linux/amd64 平台 volume 虚高 100 倍 #105
jing2uo merged 1 commit into
jing2uo:main from
syfly007:patch-1

Conversation

@syfly007

@syfly007 syfly007 commented Jun 4, 2026

Copy link
×ばつ 100, 最终写入数据库的 volume 虚高 100 倍,turnover 同步虚高。 ## 现象 - init 阶段(读取 .day 文件):volume 正常 - cron 阶段(NativeDayMerge 写入新记录):当天 volume 约为前几天的 100 倍 以 sh600000 为例: | date | volume(修复前) | volume(修复后) | |------------|----------------|----------------| | 2026-06-03 | 71,007,326 | 71,007,326 | | 2026-06-04 | 5,609,264,100 | 56,092,641 | ## 原因 TDX .day 文件约定:reserved == 0x10000 表示正常记录,其他值触发溢出解码(×ばつ 100)。 makeDayRecord 写入新记录时未显式设置 reserved,导致误判为溢出记录。 ## 修复 写入 reserved = 0x10000,与 TDX 原始 .day 文件格式保持一致。" data-view-component="true"> Copy Markdown
Contributor

问题

在非 linux/amd64 平台(macOS、Windows)上,cron 通过 NativeDayMerge 写入 .day 文件时,
makeDayRecord 使用 make([]byte, recordSize) 创建缓冲区(全零初始化),
导致 reserved 字段(bytes 28-31)为 0x00000000。

parseVolumeOverflow 判断 reserved != 0x10000 时走溢出分支,执行 volRaw ×ばつ 100,
最终写入数据库的 volume 虚高 100 倍,turnover 同步虚高。

现象

  • init 阶段(读取 .day 文件):volume 正常
  • cron 阶段(NativeDayMerge 写入新记录):当天 volume 约为前几天的 100 倍

以 sh600000 为例:

date volume(修复前) volume(修复后)
2026年06月03日 71,007,326 71,007,326
2026年06月04日 5,609,264,100 56,092,641

原因

TDX .day 文件约定:reserved == 0x10000 表示正常记录,其他值触发溢出解码(×ばつ 100)。
makeDayRecord 写入新记录时未显式设置 reserved,导致误判为溢出记录。

修复

写入 reserved = 0x10000,与 TDX 原始 .day 文件格式保持一致。

@jing2uo jing2uo merged commit 83e4820 into jing2uo:main Jun 5, 2026
0 of 4 checks passed
digiprospector pushed a commit to digiprospector/tdx2db that referenced this pull request Jun 6, 2026
PR jing2uo#105 给 makeDayRecord 补了 reserved = 0x10000(TDX 正常记录标记),
但原测试仍断言 reserved == 0——这正是 volume 虚高 100 倍的根因被固化
成了"期望行为",会让 CI 挂掉。
改为断言 reserved == 0x10000,并增加端到端校验:写出的 volume 经
parseVolumeOverflow 读回后不应被 ×ばつ100。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

2 participants

AltStyle によって変換されたページ (->オリジナル) /