Skip to content

Releases: unknowbug/CoreSwap

coreswap 1.20.1-1.0.18

Choose a tag to compare

@unknowbug unknowbug released this 08 Aug 13:19

1.0.18 — 修复 spawn 崩溃(VEH vs JVM 冲突)+ SearchTree 平局对齐

崩溃修复(用户 0x34001 根因)

  • AddVectoredExceptionHandler(崩溃日志 VEH 实现)干扰 JVM 硬件异常处理:JIT null-check / GC guard page 均为 SEH 预期异常,VEH 先执行 StackWalk64/打印重活 → Server thread 堆损坏崩溃
  • 修复:JVM 进程(jvm.dll 已加载)不装 VEH,JVM 自带 hs_err(含 native 栈 dll 偏移)兜底

其他修复

  • biome 判定平局 tie-break 对齐 vanilla(MultiNoiseUtil.SearchTree 移植;MSVC long=32 位截断 INT64_MAX 根因修复)——8576 99.9993% → 99.9994%
  • build.gradle dll 同步源修复(processResources 指向 MC 侧旧 cpp → 打包旧 dll 坑)
  • 顺手对齐:aquifer float 常量 / 无效液面判定 / SteepCond heightmap(pillar 写回)

验证

  • 8576 99.9994% / 3200 99.9997%(主世界零退化)/ 20000 99.9989% / -288 95.74%(结案基线)
  • scan_cpp_anchors invalid=0;jar 内 dll sha 与 build-msvc 一致

部署

替换 mods/ 下 coreswap jar 即可。

coreswap-1.20.1-1.0.17

Choose a tag to compare

@unknowbug unknowbug released this 07 Aug 12:03

CoreSwap 1.0.17(内存损坏诊断版)

1.0.16 用户崩溃定位:dll 已验证是最新(sha256 匹配,排除旧缓存)——崩溃=内存损坏

  • fillOneChunk 的 memset 调用(0xEFE1)目标被覆盖成堆地址(0x299AA)→ 函数指针被堆越界写
  • 崩溃日志现在打印 data[0x34000/1] 的值(对比正常值)
  • fillOneChunk 每 chunk 校验 0x34001 vs 基线——一旦被写坏立即打印(定位写坏时机/线程)

Fabric 1.20.1 + Forge(Sinytra Connector),MSVC dll

coreswap-1.20.1-1.0.16

Choose a tag to compare

@unknowbug unknowbug released this 07 Aug 11:20

CoreSwap 1.0.16(崩溃日志增强——排查用户固定偏移崩溃)

1.0.15 用户三次崩溃(视距 32/8/8→32)都在 worldgen.dll+0xEFE7(memset 调用附近,读 0x0)

  • CaptureStackBackTrace 在 vectored handler 里只剩 5 帧——看不到调用链
  • 改 StackWalk64(用异常现场 CONTEXT 回溯)——崩溃日志给完整调用链(函数名+偏移)
  • CppBridge.init 打印加载 dll 的路径/size/sha256——验证是否旧缓存(如果用户加载的不是 jar 内最新 dll,sha256 会不同)

Fabric 1.20.1 + Forge(Sinytra Connector,PR #3 兼容),MSVC dll

coreswap-1.20.1-1.0.15

Choose a tag to compare

@unknowbug unknowbug released this 07 Aug 10:49

CoreSwap 1.0.15(原生崩溃日志 handler)

新增:dll 崩溃日志自动捕获

  • 崩溃时(访问违规等)自动打印:异常类型/地址/寄存器/崩溃指令字节/调用栈(模块偏移+函数名)
  • 输出到 MC 的 latest.log + 游戏目录 crash-coreswap-<时间>.txt
  • 便于定位崩溃点(之前只有 worldgen.dll+0x1BC40 这类地址)
  • C++ 异常也捕获(try-catch 打印)

1.0.14 已含(并发崩溃修复):derivedSplitters 并发写数据竞争(Worker-Main-11 崩溃根因)

兼容性:Fabric 1.20.1 + Forge(通过 Sinytra Connector,PR #3 兼容——CoreSwapFixHelper 多级定位 jar 提取),MSVC dll 已验证

coreswap-1.20.1-1.0.14

Choose a tag to compare

@unknowbug unknowbug released this 07 Aug 10:44

CoreSwap 1.0.14(并发崩溃修复)

修复:derivedSplitters 并发写数据竞争(崩溃根因)

  • 1.0.13 用户进图后 Worker-Main-11 崩溃(空 std::function 调用 → msvcp140.dll)
  • fillOneChunk 被多个 Worker 并发调用,splitterFor 无锁写 mutable std::map → 数据竞争 → map 内部指针损坏
  • 加 mutex 保护

1.0.13 已含的修复(heightmap 索引 x/z 交换)

  • 3200 100%(无回归)、8576 99.58→99.80%、-288 95.47→95.72%

兼容性:Fabric 1.20.1 + Forge(通过 Sinytra Connector,PR #3 兼容),MSVC dll 已验证

coreswap-1.20.1-1.0.13

Choose a tag to compare

@unknowbug unknowbug released this 07 Aug 10:29

CoreSwap 1.0.13(heightmap 修复版)

修复:buildSurface heightmap 索引 x/z 交换错位(真 bug)

  • buildSurface 遍历用 heightmap[k16+l](x16+z),但填充是 heightmap[bz16+bx](z16+x)——x/z 交换
  • 平坦地形不暴露(3200 保持 100% 无回归),起伏地形错位 → 地表高度取错列 → grass/dirt 层偏移、terracotta 带错位

对齐率提升(block_probe 逐位对比)

  • 3200:100%(无回归)
  • 8576:99.58% → 99.80%(差块 13679 → 7278)
  • -288:95.47% → 95.72%

兼容性:Fabric 1.20.1 + Forge(通过 Sinytra Connector,PR #3 兼容——CoreSwapFixHelper 多级定位 jar 提取),MSVC dll 已验证(dumpbin 导入表 MSVCP140/VCRUNTIME140)

CoreSwap 1.20.1-1.0.12-pre(崩溃修复版)

Choose a tag to compare

CoreSwap 1.20.1-1.0.12-pre(崩溃修复版)

修复 1.0.11-pre 的崩溃(32 视距创建世界 99% 崩溃 + 改视距进图崩溃):

根因:CoreSwapPool 的共享任务状态(fn/totalTasks/doneCount)在多 Worker 并发调用
fillBlocks 时互相覆盖——一个批次的 run 结束后把 fn 置空,另一个批次的 worker 线程
读取到空 std::function → 调用空函数 → 读地址 0 崩溃(EXCEPTION_ACCESS_VIOLATION)。
之前测试(block_probe 单批)不触发;MC 32 视距多个 worldgen 线程并发触发。

修复:run 加全局互斥(批次串行化,批次内部仍并行,性能影响小)。

另含 above_preliminary_surface 的 est 扫描修复(Java 语义)。

回归:3200 100%、20000 99.985%、-288 95.71% 无回归。

CoreSwap 1.20.1-1.0.11-pre(块状地形修复测试版)

Choose a tag to compare

1.0.11-pre(还原):cache_2d 缓存 key + weird rarity 两个根因修复

CoreSwap 1.20.1-1.0.9

CoreSwap 1.20.1-1.0.9 Pre-release
Pre-release

Choose a tag to compare

@unknowbug unknowbug released this 07 Aug 08:32

1.0.9(还原):-Dcoreswap.threads 可配 + 发布

CoreSwap 1.20.1-1.0.10

Pre-release

Choose a tag to compare

@unknowbug unknowbug released this 07 Aug 08:32

1.0.10(还原):线程池复用 + 模式自适应 + dll 提取崩溃修复