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 服务器的一些不稳定的问题。

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

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

 

目录
相关文章
|
8月前
|
测试技术 API
修改bug引入更多bug怎么办?
修改bug引入更多bug怎么办?
172 0
|
6月前
|
存储 数据库
cannot read properties of underfined (reading ‘code‘),别光知道抄,有的时候,细节就是影响全局关键,别人代码到你项目不一定100%正确,判断bug出
cannot read properties of underfined (reading ‘code‘),别光知道抄,有的时候,细节就是影响全局关键,别人代码到你项目不一定100%正确,判断bug出
|
安全 Windows
Window10升级遇到大坑错误代码:0xc000000e完美解决方案
Window10升级遇到大坑错误代码:0xc000000e完美解决方案
701 0
Window10升级遇到大坑错误代码:0xc000000e完美解决方案
|
编译器 开发工具 Windows
Qt使用过程中,遇到error及解决方法总结
Qt使用过程中,遇到error及解决方法总结