KBMMW 4.93.10 win64 一个BUG 修正

简介: 经常有人提到kbmmw 4.93.10 的64 位版本没有32位版本稳定。 经过官方确认,是delphi 编译器生成64 位代码内存偏移地址的错误。 在kbmMWGlobal.pas 中 有一个函数kbmMWGetCurrentThreadID, 如下: 此函数在64 位里面,编译器出来是这个 可以看见编译出来的机器码是 $65 $48 $8B $04 $25 $24 $00 $00 $00 这个有时会导致64 位服务器出问题。

经常有人提到kbmmw 4.93.10 的64 位版本没有32位版本稳定。

经过官方确认,是delphi 编译器生成64 位代码内存偏移地址的错误。

在kbmMWGlobal.pas 中

有一个函数kbmMWGetCurrentThreadID, 如下:

此函数在64 位里面,编译器出来是这个

可以看见编译出来的机器码是

$65

$48

$8B

$04

$25

$24

$00

$00

$00

这个有时会导致64 位服务器出问题。

作者已经修改了这个问题(简单粗暴而有效)。直接使用机器码来处理,

替换上面的代码。替换后结果为

运行是CPU 的指令如下:

 

实际上就是把偏移地址从$24 换成 $48。

这样就可以解决win64 服务器的一些不稳定的问题。

如果大家碰到的话,可以试一下。

这个问题将在下一个版本上修正。

 

目录
相关文章
|
6月前
|
前端开发
修正一些formdesigner的一些bug与操作
修正一些formdesigner的一些bug与操作
52 1
|
IDE 开发工具
ide internal errors【bug】
ide internal errors【bug】
149 0
|
编译器 开发工具 C语言
C++ Visual Studio 2022 中的改进、行为更改和错误修复
C++ Visual Studio 2022 中的改进、行为更改和错误修复
关于win10 18362版之后的版本一个Bug
关于win10 18362版之后的版本一个Bug
198 0
关于win10 18362版之后的版本一个Bug