Delphi-Cross-Socket icon indicating copy to clipboard operation
Delphi-Cross-Socket copied to clipboard

EAccessViolation: Access violation at address 000000000043F20A in module 'CrossH ttpConsole.exe'

Open isgbuddy opened this issue 4 years ago • 12 comments

C:\temp>CrossHttpConsole.exe Windows 7 Service Pack 1 (Version 6.1, Build 7601, 64-bit Edition) EAccessViolation: Access violation at address 000000000043F20A in module 'CrossH ttpConsole.exe'. Read of address 0000000000000040 Unexpected Memory Leak An unexpected memory leak has occurred. The unexpected small block leaks are:

9 - 24 bytes: TDictionary<System.UInt64,Net.CrossSocket.Base.ICrossListen>.TValu eCollection x 1, TDictionary<System.UInt64,Net.CrossSocket.Base.ICrossConnection

.TValueCollection x 1, TObject x 2 57 - 72 bytes: Unknown x 2 89 - 104 bytes: TDictionary<System.UInt64,Net.CrossSocket.Base.ICrossConnection> x 1, TDictionary<System.UInt64,Net.CrossSocket.Base.ICrossListen> x 1 569 - 616 bytes: TCrossHttpServer x 1

C:\temp>

isgbuddy avatar Mar 08 '21 22:03 isgbuddy

Windows7 + Delphi 10.2.3

isgbuddy avatar Mar 08 '21 22:03 isgbuddy

我这么衰?跑你们官方自带的 demo 出错

isgbuddy avatar Mar 08 '21 22:03 isgbuddy

自行调试一下,我10.4.1没有问题

看你这提示TCrossHttpServer都没释放掉

pony5551 avatar Mar 08 '21 23:03 pony5551

我说明一下出错原因! uDM.pas 的201行 FHttpServer := TCrossHttpServer.Create(0, True); 改成 FHttpServer := TCrossHttpServer.Create(0, False);

demo默认启用https,但没有证书文件,你也可以自己生成证书文件测试

pony5551 avatar Mar 09 '21 00:03 pony5551

谢谢,我试试

isgbuddy avatar Mar 09 '21 01:03 isgbuddy

procedure TDM.DataModuleCreate(Sender: TObject); begin {$IFDEF CROSS_SSL} FHttpServer := TCrossHttpServer.Create(0, True); if FHttpServer.SSL then begin FHttpServer.SetCertificate(SSL_SERVER_CERT); FHttpServer.SetPrivateKey(SSL_SERVER_PKEY); end; {$ELSE} FHttpServer := TCrossHttpServer.Create(0, false); {$ENDIF} // FHttpServer.Addr := IPv4_ALL; // IPv4 // FHttpServer.Addr := IPv6_ALL; // IPv6 FHttpServer.Addr := IPv4v6_ALL; // IPv4v6 FHttpServer.Port := AppCfg.ListenPort; FHttpServer.Compressible := True;

FHttpServer.OnConnected := _OnConnected; FHttpServer.OnDisconnected := _OnDisconnected;

_CreateRouter; _CreateWatchThread; end;

isgbuddy avatar Mar 09 '21 01:03 isgbuddy

建议把这个 demo 这里改成这样,就不出一上来就出错了,会给人感觉不太好

isgbuddy avatar Mar 09 '21 01:03 isgbuddy

这个本来没有bug的,后来rony建议搞成https,http共存,所以就出了这个bug! 话说作者好久没出现了,估计比较忙

pony5551 avatar Mar 09 '21 01:03 pony5551

小问题自己折腾一下,框架还是很稳定的,运行90天无报错,因系统更新才重启的

pony5551 avatar Mar 09 '21 01:03 pony5551

@pony5551 这个框架推荐跑在 linux 下还 windows 下比较好?我看更新日志里写 linux 可能会有内存泄漏?

isgbuddy avatar Mar 09 '21 02:03 isgbuddy

linux下只要不用ssl就没问题,这个是openssl的问题!你可以找个稳定一点的openssl自己折腾一下

pony5551 avatar Mar 09 '21 02:03 pony5551

linux下只要不用ssl就没问题,这个是openssl的问题!你可以找个稳定一点的openssl自己折腾一下

感谢感谢

isgbuddy avatar Mar 09 '21 03:03 isgbuddy