Forum Replies Created
-
AuthorPosts
-
Babis MichaelParticipantSeems SSL certificate has expired. Works with HTTP.
Babis MichaelParticipantWell i’ve created my own thread timer as workaround until Kim fixes the “Activation” bug of kbmMWScheduler.
Babis MichaelParticipantWell it didn’t work for long …
Babis MichaelParticipantSeems it’s choosing wrong (active) thread from the thread pool … might be wrong
Babis MichaelParticipantIt seems i found a workaround … just activate/deactivate 2 times
eg.
MyEvent.Active := False;
MyEvent.Active := True;
MyEvent.Active := False;
MyEvent.Active := True;Now the interval will work
I sent a sample project to Kim
-
This reply was modified 2 years, 6 months ago by
Babis Michael.
Babis MichaelParticipantActually the Precise Thread Interval Starts but if you deactivate the Event and Reactivate it doesn’t work. So the problem is on the 2nd time you activate the precise event/schedule.
Babis MichaelParticipantAny news ?
Thank you
Babis MichaelParticipantI am not Kim <g>
Can you connect your client and server locally ? (ip: 127.0.0.1)-
This reply was modified 2 years, 8 months ago by
Babis Michael.
Babis MichaelParticipantHello,
You connecting locally or remotely ?
Also check the port in your server’s (remote) firewall.
Babis MichaelParticipantSent you a sample project via e-mail
Babis MichaelParticipantbtw, the same leak happends to client transports too
-
This reply was modified 2 years, 9 months ago by
Babis Michael.
Babis MichaelParticipantHello,
Here’s the shutdown code:
Server.Shutdown;
Server.Active := False;if ConnectionPool.ConnectionList.Count > 0 then
ConnectionPool.KillConnections;Transport.PurgeAndClose([mwpacFlushInbound,mwpacFlushOutbound]);
The leak didn’t exist in 5.22 i’ll try to make a sample project
Babis MichaelParticipantSince i create the actor on OnLogin event I fixed by cheking autologin:
function TkbmMWAuthorizationManager.InternalLogin(const AActorName:string; const ARoleName:string;
…..
if (ctx.Actor=nil) then
begin
if AAutoCreateActor then
ctx.Actor:=FActors.Add(AActorName,APassPhrase,ARoleName,’Auto created ‘+TkbmMWDateTime.Now.ISO8601String);
if (mwaoAutoLogin in Options) or ((ctx.Actor<>nil) and (not ctx.Actor.Internal)) then // HERE added cheking auto login and fire the event
DoOnLogin(ctx,ctx.FActor,ctx.FRole,ctx.FMessage);If you have something else to suggest let me know
Thank you
-
This reply was modified 2 years, 9 months ago by
Babis Michael.
-
This reply was modified 2 years, 9 months ago by
Babis Michael.
Babis MichaelParticipantHi Kim,
Any news on the fixes ?Thank you
January 20, 2023 at 02:57 in reply to: Remote Desktop Demo doesn’t work if it is compiled in kbmMW 5_14, 5_15 #56968
Babis MichaelParticipantOk i found the issue … DXGI needs the monitor array backwards!
according to chromium sources:
dxgi_adapter_duplicator.cc
duplicators_.push_back(std::move(duplicator));-
This reply was modified 3 years, 9 months ago by
Babis Michael.
January 15, 2023 at 23:59 in reply to: Remote Desktop Demo doesn’t work if it is compiled in kbmMW 5_14, 5_15 #56960
Babis MichaelParticipantSeems their is problem multi monitor environments eg. it doesn’t register monitor 1/primary. the FMonitors[0] value is nil while FMonitors[1] (monitor 2) is mdwn_2.
Changed this line in order to work:
constructor TkbmMWRemoteDesktopClient.Create(AOwner:TComponent);
{$IFDEF FMX}
FID:=TkbmMWRemoteDesktopMonitor.mwrdm_1;
{$ELSE}
// Original: FID:=TkbmMWRemoteDesktopMonitor(Screen.PrimaryMonitor.MonitorNum)FID:=TkbmMWRemoteDesktopMonitor(Screen.PrimaryMonitor.MonitorNum -1);
Testing ….
-
This reply was modified 3 years, 9 months ago by
Babis Michael.
Babis MichaelParticipantI found the issue. It’s VerifyTransfer. When it’s enabled it throws randomly an Invalid Data error and Disconnects.
I disable atm and no more random disconnections.
January 15, 2023 at 00:17 in reply to: Remote Desktop Demo doesn’t work if it is compiled in kbmMW 5_14, 5_15 #56958
Babis MichaelParticipantDue my experiments replaced the Move with CopyMemory and it works although it copies the 2nd monitor instead of the 1st.
So the problem is when you have a 4k Monitor and a 2nd 1080p monitor and switch to DirectX.
Seems it grabs the wrong monitor for the buffer or the opposite.Thank you
January 15, 2023 at 00:13 in reply to: Remote Desktop Demo doesn’t work if it is compiled in kbmMW 5_14, 5_15 #56957
Babis MichaelParticipantFound the problem it’s on the below line but i don’t know how to resolve the AV or Stack Overflow.
Maybe the map is still locked or something and can’t let it copy the bytes to DIB ?function TkbmMWRemoteDesktopServer.GetScreenDXGI ….
…
ABmp.DrawData(map.pBits); //AV Here
….Thank you
Babis MichaelParticipantFound the issue! The leak occurs when you call kbmmwshutdown before you terminate you application.
procedure TForm25.FormClose(Sender: TObject; var Action: TCloseAction);
begin
kbmmwshutdown; //comment me to prevent leak
end;
Babis MichaelParticipantSending you via email because here the link thinks it is spam.
Babis MichaelParticipantKim,
Any news on this ?
I think it’s related to “native transport 5.21 TLS disconnect crash” topic too-
This reply was modified 3 years, 9 months ago by
Babis Michael.
Babis MichaelParticipantCan you free this upon finalization or needed to do it manually ?
Babis MichaelParticipantOh! i found i had a “kbmMWSmartEvent” declaration in one of my units that caused this. So even if you don’t use the SmartEvent declaring the unit causes this. Removed and the leaks gone!
Babis MichaelParticipantHello!
Yes! Here’s the code:
procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CommonServer.doServerTerminate;
kbmMWShutdown;
end;btw, i’m not using smartevents at all in my app!
-
This reply was modified 3 years, 9 months ago by
Babis Michael.
Babis MichaelParticipantI have the same issue without using TLS. 5.20 works ok!
Babis MichaelParticipantSeems Transport Disconnection isn’t working reverting back to 5.20 solved the problem!
Babis MichaelParticipantMaybe it’s related to the error i get in the client when i terminate the server: EkbmMWSocket ‘Cannot execute StopLoop in IO thread’
Babis MichaelParticipantKim,
OnClientWaitingResponse AAbort stopped working in 5.21!
After the server disconnects i get a TRANSPORT_PROCESSOR_EXCEPTION: Access violation at address 0195F414 in module ‘myapp.exe’. Read of address 00000000 and it doesn’t timeout. (Native Transport)It seems the transport is trying to transfer data on a disconnected session.
Thank you
Babis MichaelParticipantWell, it’s up to you but those native sockets kicks ass! 🙂
So having a basic command handler class would be nice to create a lot of Server/Client Protocols too (eg. IMAP/POP3 etc)
Babis MichaelParticipantHello,
Well it’s a server transport not client and i also i don’t understand how to download a file from a HTTPS source using this.
I would appreciate any example!
Thank you
Babis MichaelParticipantI mean i change the transport portocol to HTTP but it doesn’t accept it! (or i shouldn’t ?)
IOW, all i want is to download a file from a HTTPS source to a stream using native transports!
eg. https://www.mysite.com/myfile.zip with TLS 1.2/1.3Thanks
Babis MichaelParticipantWell HTTP protocol not supported so i can’t download a file! 🙁
Babis MichaelParticipantThe issue exists with wifi connections too. Random few (2-4) disconnection per day.
Anything that i can debug ?Thank you
Babis MichaelParticipantNope, changing keepalive values didn’t help!
Babis MichaelParticipantChanging SetKeepAlive to 20 instead of 5 seems to resolve the problem … Keep testing …
function TkbmMWAbstractSocket.SetKeepAlive(ASocket:THandle):Integer;
begin
//Result:=TkbmMWSocketAPI.SetKeepAlive(ASocket,5,3,5);
Result:=TkbmMWSocketAPI.SetKeepAlive(ASocket,20,3,5);
end;btw, It would be nice to have it on a property or something to be able to set socket options.
Babis MichaelParticipantHmm, seems TkbmMWCustomTCPMessagingClientTransport.InternalCloseSocket; called twice but TkbmMWAbstractSocket.Destroy; called once!
Babis MichaelParticipantHmm, still getting leak on the native client transport when i shutdown the app with 5.20.01

Babis MichaelParticipantnice 🙂
Babis MichaelParticipantI guess this will fix the Socket memory leak too right ?
Thank you
Babis MichaelParticipantThank you i’ll give it a try 🙂
Babis MichaelParticipantthe native messaging! with the indy messaging i do this with the code on the first post!
Thank you
Babis MichaelParticipantYes, i’m using the messaging transport.
IOW, i want to kill all active connections/requests instantly and not wait to timeout.Thank you
November 4, 2022 at 21:55 in reply to: Remote Desktop Demo doesn’t work if it is compiled in kbmMW 5_14, 5_15 #56737
Babis MichaelParticipantRtx 3090 with latest drivers, 4k monitor and windows 11! You’ll notice that the server application will be busy (can’t do anything) when you switch to DirectX mode.
-
This reply was modified 3 years, 11 months ago by
Babis Michael.
Babis MichaelParticipantThis is NOT fixed in 5.20! You forgot one NativeUInt!
Pbyte(NativeUInt(@InData1)+i-1)^:= Pbyte(NativeUInt(@InData1)+i-1)^ xor Pbyte(longword(@InData2)+i-1)^;
the last LongWord should be NativeUInt too!Thank you
-
This reply was modified 3 years, 11 months ago by
Babis Michael.
October 31, 2022 at 15:34 in reply to: Remote Desktop Demo doesn’t work if it is compiled in kbmMW 5_14, 5_15 #56723
Babis MichaelParticipantChanging to capture mode DirectX freezes server!
October 31, 2022 at 12:18 in reply to: AuthorizationManager.Logout(const ALoginToken:string) doesn’t fill the ctx! #56722
Babis MichaelParticipantKim, this isn’t fixed in 5.20! (you forgot it)
October 31, 2022 at 09:13 in reply to: Remote Desktop Demo doesn’t work if it is compiled in kbmMW 5_14, 5_15 #56721
Babis MichaelParticipantLove you!
September 23, 2022 at 23:38 in reply to: Remote Desktop Demo doesn’t work if it is compiled in kbmMW 5_14, 5_15 #56673
Babis MichaelParticipantKim ?
The client connects but it doesn’t display anything!
Babis MichaelParticipantbtw, added manually and works!
Babis MichaelParticipantOr generally replacing all other Hash algos to xxHash in all units.
Babis MichaelParticipantDah! Reverting back to kbmMW locking … I dunno if this a TMonitor issue or kbmMW!
Babis MichaelParticipantWell Reject and Delete StalledMessages is true by default, anyhow i’ve added Reject and Stall Queues to monitor. Let’s see!
Can’t wait to try the native messaging transport! 🙂
Thank you
Babis MichaelParticipantHello,
1) Well replaced TThread.Queues with Scheduler.RunNow (SyncQueued) but it resulted in AV due the missing capture of variables. Seems Delphi is only capturing for TThread classes. I’ve used the Withxxxx in the past but it’s more complex compared letting the compiler capturing the variables. IOW more code
2) Sure but it more easier and nicer for the coder to write “ExecuteAsync or AsyncExecute” rather Scheduler.RunNow(procedure begin MyScheduledEvent.Execute end);
3) I meant for Pool threads (not vcl). Eg we can set a parameter for the thread priority to apply it before execute and after the termination it to reset to normal thread priority. Anyhow i can’t find a reason why it can’t be done cause it doesn’t conflict with other threads nor the pool itself.Thank you for the quick responses 🙂
Babis MichaelParticipantThank you 🙂
It would be nice to add a demo of processors if it’s possible!
Babis MichaelParticipantIt seems messages stuck in InBound message queue and increasing over time!
Babis MichaelParticipantIndy Messaging! (Using messages and services)
Babis MichaelParticipantThe client actually waits a response from the server in the function TkbmMWEvent.WaitFor … sleep(n); …. but never get its … although the server works without problens! Seems like something is filling up the connections pool but never releases them back from the server side ?
Thank you
Babis MichaelParticipantHello,
Make an account on https://portal.components4developers.com/ and download it
Babis MichaelParticipantExcellent news! Now if you can make the client transports also i would get rid indy completely! 🙂
Thank you
Babis MichaelParticipantI need to disable KBMMW_SUPPORT_FASTMRWSLOCK after i enabled KBMMW_SUPPORT_MONITORLOCK. I dunno if this is normal.
Babis MichaelParticipantAnyone tried to email him ? I did nothing …
Babis MichaelParticipantbtw it seems that locking is broken ?
Replacing the events call with TThread.Queue calls solved my freeze problems …
Thank you
Babis MichaelParticipantBeen weeks i start to concern …
May 15, 2022 at 02:42 in reply to: Remote Desktop Demo doesn’t work if it is compiled in kbmMW 5_14, 5_15 #56475
Babis MichaelParticipantNope it doesn’t work on me either with the latest version. (No screen)
Babis MichaelParticipantKim where are you ?
We miss you buddy! 🙂
April 19, 2022 at 11:55 in reply to: AuthorizationManager.Logout(const ALoginToken:string) doesn’t fill the ctx! #56431
Babis MichaelParticipantNew code to avoid AV:
ctx.Token:=ALoginToken;
FLock.BeginWrite;
try
l:=FLogins.Get(ALoginToken); // Newif Assigned(l) then // New
begin
ctx.Token:=l.Token;
ctx.ActorName:=l.Actor.Name;
ctx.Role:=l.Role;
ctx.Login:=l;
end;DoOnLogout(ctx);
ctx.TraceMessage:=’Logout: LoginToken=’+ctx.Token;
DoOnTrace(ctx);FLogins.Delete(l.Actor);
finally
FLock.EndWrite;
end;
Babis MichaelParticipantKim has an internal test i think that’s why he discarded TMonitor from kbmMW in prior releases due bugs of TMonitor.
Both Delphi 11 and 11.1 have fixes for threading.
Babis MichaelParticipantIs it better ?
April 9, 2022 at 02:31 in reply to: AuthorizationManager.Logout(const ALoginToken:string) doesn’t fill the ctx! #56410
Babis MichaelParticipantUP
Babis MichaelParticipantUP
Babis MichaelParticipantStill getting the TkbmMWInnerThread leak with 5.19
-
This reply was modified 4 years, 6 months ago by
Babis Michael.
Babis MichaelParticipantI found a better solution!
Since our user is already logged in we shouldn’t call DoOnLoginSuccess(ctx); because it’s already called the first time!ctx.TraceMessage:=’Login: Actor already logged in. Actor ‘+ctx.Actor.Name+’, Role=’+ctx.Role.Name+’, At(UTC)=’+DateTimeToStr(Result.LastAuthorized);
//DoOnLoginSuccess(ctx); <– Remove me!-
This reply was modified 4 years, 6 months ago by
Babis Michael.
Babis MichaelParticipantHello Kim,
Checked that and no!The “Trace” of duplicate login:
30/03/2022 09:31| 635450D7EE5A422991BB89EDA6132A6C TRACE: MyUser:33088) Login: Logged in. Actor=MyUser:33088, Role=USER, Location=127.0.0.1:33088 At(UTC)=30/3/2022 6:31:56 πμ
30/03/2022 09:47| 635450D7EE5A422991BB89EDA6132A6C TRACE: MyUser:33088) Logout: LoginToken=635450D7EE5A422991BB89EDA6132A6C
30/03/2022 09:47| 404D861FAB464DBD9D832D1B150AD166 TRACE: MyUser:53421) Login: Logged in. Actor=MyUser:53421, Role=USER, Location=127.0.0.1:53421 At(UTC)=30/3/2022 6:47:43 πμ
30/03/2022 10:06| 404D861FAB464DBD9D832D1B150AD166 TRACE: MyUser:53421) Logout: LoginToken=404D861FAB464DBD9D832D1B150AD166
30/03/2022 10:08| A41785AAF86E4B6CA4B24DA82ACBA9E6 TRACE: MyUser:54034) Login: Logged in. Actor=MyUser:54034, Role=USER, Location=127.0.0.1:54034 At(UTC)=30/3/2022 7:08:02 πμ
30/03/2022 10:08| TRACE: MyUser:54034) Login: Actor already logged in. Actor MyUser:54034, Role=USER, At(UTC)=30/3/2022 7:08:02 πμ // <— HERE!!! It attempts for the 2nd time to login but it’s already logged as you can see above
30/03/2022 10:08| A41785AAF86E4B6CA4B24DA82ACBA9E6 TRACE: MyUser:54034) Logout: LoginToken=A41785AAF86E4B6CA4B24DA82ACBA9E6
30/03/2022 10:08| 7B606826CA9E4F3B84BA89CEDC590971 TRACE: MyUser:54036) Login: Logged in. Actor=MyUser:54036, Role=USER, Location=127.0.0.1:54036 At(UTC)=30/3/2022 7:08:03 πμIf the user is already logged in it will still call “OnLoginSucces” so can you add a flags to “ctx” to know that the user is already logged ?
eg:ctx.AlreadyLogged := True; // <– add this new variable
ctx.Message:=’Already logged in’;
ctx.TraceMessage:=’Login: Actor already logged in. Actor ‘+ctx.Actor.Name+’, Role=’+ctx.Role.Name+’, At(UTC)=’+DateTimeToStr(Result.LastAuthorized);
DoOnLoginSuccess(ctx);Thank you
-
This reply was modified 4 years, 6 months ago by
Babis Michael.
Babis MichaelParticipant<3
Babis MichaelParticipantI guess the Messaging components not any time soon right ? 🙁
Babis MichaelParticipantYou know that we want faster forum responses! 🙂
March 29, 2022 at 04:07 in reply to: AuthorizationManager.Logout(const ALoginToken:string) doesn’t fill the ctx! #56355
Babis MichaelParticipantHello!
No it doesn’t not! It’s empty and never fills!
As you can see in the code it only assigns the “Token” compared to Logout(const AActor:TkbmMWAuthorizationActor);procedure TkbmMWAuthorizationManager.Logout(const ALoginToken:string);
…
ctx:=TkbmMWAuthorizationContext.Create;
try
ctx.Token:=ALoginToken; //Only this!!!
FLock.BeginWrite;
try
DoOnLogout(ctx);
….procedure TkbmMWAuthorizationManager.Logout(const AActor:TkbmMWAuthorizationActor);
….
ctx.Token:=l.Token;
ctx.ActorName:=AActor.Name;
ctx.Role:=l.Role;
ctx.Login:=l;
DoOnLogout(ctx);
….The ctx information is needed for login2 and logout2 and trace2 of AuthorizationManager!
So in case that GarbageCollection Logout out the user i use the CTX to retrieve his informations. (eg the Actorname).Thank you
-
This reply was modified 4 years, 6 months ago by
Babis Michael.
-
This reply was modified 4 years, 6 months ago by
Babis Michael.
Babis MichaelParticipantNo, unfortunately he replies once a week or two …
February 27, 2022 at 00:50 in reply to: AuthorizationManager.Logout(const ALoginToken:string) doesn’t fill the ctx! #56281
Babis MichaelParticipantbtw, GarbageCollect calls the TkbmMWAuthorizationManager.Logout(const ALoginToken:string);
Babis MichaelParticipantIt seems it was my fault so skip this! 🙂
Babis MichaelParticipantDid that and the same leak occurs. Is it possible that somehow the Event is crashing or something causing the scheduler handle not be released ?
Thank you
Babis MichaelParticipantThanks 🙂
Babis MichaelParticipantFrom my side or kbmMW ?
Babis MichaelParticipantI’m using Indy TCP Messaging with kbmMWClientQueries.
I had to increase it because i was getting: PooledDataset : ObtainConnection : Timeout/error waiting for connection.
Before 5.06.20 July 11 2018 which included that “AutoActivate” on TkbmMWCustomConnectionPool it worked.Thank you
Babis MichaelParticipanteg.
Request “MyRequestName1” done in 100 msecs
Request “MyRequestName2” done in 150 msecs
Request “MyRequestName3” timeout
Request “MyRequestName4” done in 300 msecs-
This reply was modified 4 years, 9 months ago by
Babis Michael.
Babis MichaelParticipantKim ?
Babis MichaelParticipantUP
Babis MichaelParticipantHello,
I do clear the token if i detect disconnection from the server because if i do not do that the Server’s AuthorizationManagerLogin will not fire when the server restarts.
Example:
Run the Server
Run the Client
Client connects and Server’s AuthorizationManagerLogin will fire (Client.Token will get a value)
Close Server
Run Server
Client will connect but AuthorizationManagerLogin will not fire.Thank you
Babis MichaelParticipantKim,
For some reason i can not see my benchmark posts i can see only your posts.
Anyway, you can use “defines” to finetune according to the CPU architecture as i did in the old FastCode if you wish! 🙂
btw, Ryzen 5800x is 8 core 16 thread CPU .
Babis MichaelParticipantRyzen 5800x
Read thread 7 finished.
Read thread 8 finished.
Read thread 15 finished.
Read thread 13 finished.
Read thread 5 finished.
Read thread 6 finished.
Read thread 14 finished.
Read thread 16 finished.
Read thread 12 finished.
Read thread 9 finished.
Read thread 1 finished.
Read thread 17 finished.
Read thread 11 finished.
Read thread 4 finished.
Read thread 10 finished.
Read thread 18 finished.
Read thread 3 finished.
Read thread 2 finished.
Read thread 19 finished.
Read thread 20 finished.
Write thread 2 finished.
Write thread 13 finished.
Write thread 1 finished.
Write thread 8 finished.
Write thread 18 finished.
Write thread 19 finished.
Write thread 10 finished.
Write thread 4 finished.
Write thread 11 finished.
Write thread 12 finished.
Write thread 3 finished.
Write thread 6 finished.
Write thread 14 finished.
Write thread 16 finished.
Write thread 5 finished.
Write thread 9 finished.
Write thread 17 finished.
Write thread 15 finished.
Write thread 7 finished.
Write thread 20 finished.
Using: TSlimReaderWriter
Time: 640
——————————————–
Read thread 5 finished.
Read thread 6 finished.
Read thread 14 finished.
Read thread 8 finished.
Read thread 13 finished.
Read thread 4 finished.
Read thread 7 finished.
Read thread 15 finished.
Read thread 16 finished.
Read thread 20 finished.
Read thread 12 finished.
Read thread 10 finished.
Read thread 18 finished.
Read thread 17 finished.
Read thread 9 finished.
Read thread 2 finished.
Read thread 1 finished.
Read thread 3 finished.
Read thread 11 finished.
Write thread 9 finished.
Write thread 5 finished.
Read thread 19 finished.
Write thread 8 finished.
Write thread 7 finished.
Write thread 13 finished.
Write thread 17 finished.
Write thread 14 finished.
Write thread 2 finished.
Write thread 4 finished.
Write thread 12 finished.
Write thread 3 finished.
Write thread 16 finished.
Write thread 18 finished.
Write thread 19 finished.
Write thread 20 finished.
Write thread 6 finished.
Write thread 10 finished.
Write thread 11 finished.
Write thread 15 finished.
Write thread 1 finished.
Using: TMultiReadExclusiveWriteSynchronizer
Time: 1375
——————————————–
Write thread 11 finished.
Write thread 17 finished.
Write thread 18 finished.
Write thread 20 finished.
Write thread 16 finished.
Write thread 19 finished.
Write thread 12 finished.
Write thread 10 finished.
Write thread 7 finished.
Write thread 1 finished.
Write thread 9 finished.
Write thread 13 finished.
Write thread 4 finished.
Write thread 2 finished.
Write thread 6 finished.
Read thread 6 finished.
Write thread 3 finished.
Read thread 14 finished.
Write thread 8 finished.
Read thread 16 finished.
Read thread 13 finished.
Read thread 5 finished.
Write thread 14 finished.
Read thread 12 finished.
Read thread 19 finished.
Read thread 7 finished.
Read thread 4 finished.
Read thread 11 finished.
Read thread 3 finished.
Write thread 5 finished.
Read thread 8 finished.
Read thread 15 finished.
Read thread 1 finished.
Read thread 9 finished.
Read thread 2 finished.
Read thread 18 finished.
Read thread 20 finished.
Read thread 17 finished.
Read thread 10 finished.
Write thread 15 finished.
Using: TCriticalSection
Time: 1844
——————————————–
Read thread 8 finished.
Read thread 15 finished.
Read thread 16 finished.
Read thread 7 finished.
Read thread 13 finished.
Read thread 6 finished.
Read thread 14 finished.
Read thread 5 finished.
Read thread 19 finished.
Read thread 12 finished.
Read thread 11 finished.
Read thread 20 finished.
Write thread 10 finished.
Write thread 19 finished.
Write thread 17 finished.
Read thread 2 finished.
Write thread 18 finished.
Write thread 3 finished.
Write thread 20 finished.
Write thread 5 finished.
Write thread 11 finished.
Read thread 17 finished.
Write thread 12 finished.
Read thread 1 finished.
Write thread 13 finished.
Read thread 9 finished.
Write thread 4 finished.
Read thread 4 finished.
Write thread 1 finished.
Write thread 6 finished.
Write thread 2 finished.
Read thread 18 finished.
Read thread 10 finished.
Write thread 9 finished.
Write thread 15 finished.
Write thread 7 finished.
Write thread 8 finished.
Read thread 3 finished.
Write thread 16 finished.
Write thread 14 finished.
Using: TMonitor
Time: 453
——————————————–
Read thread 5 finished.
Read thread 14 finished.
Read thread 13 finished.
Read thread 6 finished.
Read thread 7 finished.
Read thread 8 finished.
Read thread 12 finished.
Read thread 15 finished.
Read thread 3 finished.
Read thread 11 finished.
Read thread 17 finished.
Read thread 10 finished.
Read thread 9 finished.
Read thread 20 finished.
Read thread 16 finished.
Read thread 18 finished.
Read thread 4 finished.
Write thread 13 finished.
Write thread 4 finished.
Read thread 19 finished.
Read thread 1 finished.
Read thread 2 finished.
Write thread 8 finished.
Write thread 6 finished.
Write thread 14 finished.
Write thread 19 finished.
Write thread 15 finished.
Write thread 10 finished.
Write thread 7 finished.
Write thread 2 finished.
Write thread 20 finished.
Write thread 1 finished.
Write thread 9 finished.
Write thread 17 finished.
Write thread 3 finished.
Write thread 5 finished.
Write thread 11 finished.
Write thread 18 finished.
Write thread 12 finished.
Write thread 16 finished.
Using: TkbmMWLock
Time: 1062
——————————————–
Read thread 15 finished.
Read thread 8 finished.
Read thread 13 finished.
Read thread 16 finished.
Read thread 7 finished.
Read thread 5 finished.
Read thread 6 finished.
Read thread 14 finished.
Read thread 19 finished.
Read thread 11 finished.
Read thread 3 finished.
Read thread 9 finished.
Read thread 20 finished.
Read thread 17 finished.
Read thread 1 finished.
Read thread 10 finished.
Read thread 12 finished.
Read thread 2 finished.
Read thread 4 finished.
Read thread 18 finished.
Write thread 9 finished.
Write thread 7 finished.
Write thread 18 finished.
Write thread 4 finished.
Write thread 15 finished.
Write thread 17 finished.
Write thread 19 finished.
Write thread 1 finished.
Write thread 16 finished.
Write thread 20 finished.
Write thread 11 finished.
Write thread 13 finished.
Write thread 8 finished.
Write thread 5 finished.
Write thread 12 finished.
Write thread 14 finished.
Write thread 6 finished.
Write thread 3 finished.
Write thread 2 finished.
Write thread 10 finished.
Using: TLighterMREW
Time: 578
——————————————–
Babis MichaelParticipantRyzen 5800x TMonitor is the fastest ?
Read thread 7 finished.
Read thread 8 finished.
Read thread 15 finished.
Read thread 13 finished.
Read thread 5 finished.
Read thread 6 finished.
Read thread 14 finished.
Read thread 16 finished.
Read thread 12 finished.
Read thread 9 finished.
Read thread 1 finished.
Read thread 17 finished.
Read thread 11 finished.
Read thread 4 finished.
Read thread 10 finished.
Read thread 18 finished.
Read thread 3 finished.
Read thread 2 finished.
Read thread 19 finished.
Read thread 20 finished.
Write thread 2 finished.
Write thread 13 finished.
Write thread 1 finished.
Write thread 8 finished.
Write thread 18 finished.
Write thread 19 finished.
Write thread 10 finished.
Write thread 4 finished.
Write thread 11 finished.
Write thread 12 finished.
Write thread 3 finished.
Write thread 6 finished.
Write thread 14 finished.
Write thread 16 finished.
Write thread 5 finished.
Write thread 9 finished.
Write thread 17 finished.
Write thread 15 finished.
Write thread 7 finished.
Write thread 20 finished.
Using: TSlimReaderWriter
Time: 640
——————————————–
Read thread 5 finished.
Read thread 6 finished.
Read thread 14 finished.
Read thread 8 finished.
Read thread 13 finished.
Read thread 4 finished.
Read thread 7 finished.
Read thread 15 finished.
Read thread 16 finished.
Read thread 20 finished.
Read thread 12 finished.
Read thread 10 finished.
Read thread 18 finished.
Read thread 17 finished.
Read thread 9 finished.
Read thread 2 finished.
Read thread 1 finished.
Read thread 3 finished.
Read thread 11 finished.
Write thread 9 finished.
Write thread 5 finished.
Read thread 19 finished.
Write thread 8 finished.
Write thread 7 finished.
Write thread 13 finished.
Write thread 17 finished.
Write thread 14 finished.
Write thread 2 finished.
Write thread 4 finished.
Write thread 12 finished.
Write thread 3 finished.
Write thread 16 finished.
Write thread 18 finished.
Write thread 19 finished.
Write thread 20 finished.
Write thread 6 finished.
Write thread 10 finished.
Write thread 11 finished.
Write thread 15 finished.
Write thread 1 finished.
Using: TMultiReadExclusiveWriteSynchronizer
Time: 1375
——————————————–
Write thread 11 finished.
Write thread 17 finished.
Write thread 18 finished.
Write thread 20 finished.
Write thread 16 finished.
Write thread 19 finished.
Write thread 12 finished.
Write thread 10 finished.
Write thread 7 finished.
Write thread 1 finished.
Write thread 9 finished.
Write thread 13 finished.
Write thread 4 finished.
Write thread 2 finished.
Write thread 6 finished.
Read thread 6 finished.
Write thread 3 finished.
Read thread 14 finished.
Write thread 8 finished.
Read thread 16 finished.
Read thread 13 finished.
Read thread 5 finished.
Write thread 14 finished.
Read thread 12 finished.
Read thread 19 finished.
Read thread 7 finished.
Read thread 4 finished.
Read thread 11 finished.
Read thread 3 finished.
Write thread 5 finished.
Read thread 8 finished.
Read thread 15 finished.
Read thread 1 finished.
Read thread 9 finished.
Read thread 2 finished.
Read thread 18 finished.
Read thread 20 finished.
Read thread 17 finished.
Read thread 10 finished.
Write thread 15 finished.
Using: TCriticalSection
Time: 1844
——————————————–
Read thread 8 finished.
Read thread 15 finished.
Read thread 16 finished.
Read thread 7 finished.
Read thread 13 finished.
Read thread 6 finished.
Read thread 14 finished.
Read thread 5 finished.
Read thread 19 finished.
Read thread 12 finished.
Read thread 11 finished.
Read thread 20 finished.
Write thread 10 finished.
Write thread 19 finished.
Write thread 17 finished.
Read thread 2 finished.
Write thread 18 finished.
Write thread 3 finished.
Write thread 20 finished.
Write thread 5 finished.
Write thread 11 finished.
Read thread 17 finished.
Write thread 12 finished.
Read thread 1 finished.
Write thread 13 finished.
Read thread 9 finished.
Write thread 4 finished.
Read thread 4 finished.
Write thread 1 finished.
Write thread 6 finished.
Write thread 2 finished.
Read thread 18 finished.
Read thread 10 finished.
Write thread 9 finished.
Write thread 15 finished.
Write thread 7 finished.
Write thread 8 finished.
Read thread 3 finished.
Write thread 16 finished.
Write thread 14 finished.
Using: TMonitor
Time: 453
——————————————–
Read thread 5 finished.
Read thread 14 finished.
Read thread 13 finished.
Read thread 6 finished.
Read thread 7 finished.
Read thread 8 finished.
Read thread 12 finished.
Read thread 15 finished.
Read thread 3 finished.
Read thread 11 finished.
Read thread 17 finished.
Read thread 10 finished.
Read thread 9 finished.
Read thread 20 finished.
Read thread 16 finished.
Read thread 18 finished.
Read thread 4 finished.
Write thread 13 finished.
Write thread 4 finished.
Read thread 19 finished.
Read thread 1 finished.
Read thread 2 finished.
Write thread 8 finished.
Write thread 6 finished.
Write thread 14 finished.
Write thread 19 finished.
Write thread 15 finished.
Write thread 10 finished.
Write thread 7 finished.
Write thread 2 finished.
Write thread 20 finished.
Write thread 1 finished.
Write thread 9 finished.
Write thread 17 finished.
Write thread 3 finished.
Write thread 5 finished.
Write thread 11 finished.
Write thread 18 finished.
Write thread 12 finished.
Write thread 16 finished.
Using: TkbmMWLock
Time: 1062
——————————————–
Read thread 15 finished.
Read thread 8 finished.
Read thread 13 finished.
Read thread 16 finished.
Read thread 7 finished.
Read thread 5 finished.
Read thread 6 finished.
Read thread 14 finished.
Read thread 19 finished.
Read thread 11 finished.
Read thread 3 finished.
Read thread 9 finished.
Read thread 20 finished.
Read thread 17 finished.
Read thread 1 finished.
Read thread 10 finished.
Read thread 12 finished.
Read thread 2 finished.
Read thread 4 finished.
Read thread 18 finished.
Write thread 9 finished.
Write thread 7 finished.
Write thread 18 finished.
Write thread 4 finished.
Write thread 15 finished.
Write thread 17 finished.
Write thread 19 finished.
Write thread 1 finished.
Write thread 16 finished.
Write thread 20 finished.
Write thread 11 finished.
Write thread 13 finished.
Write thread 8 finished.
Write thread 5 finished.
Write thread 12 finished.
Write thread 14 finished.
Write thread 6 finished.
Write thread 3 finished.
Write thread 2 finished.
Write thread 10 finished.
Using: TLighterMREW
Time: 578
——————————————–
Babis MichaelParticipantDear Kim,
I can totally understand and accept since i’m a single developer too but i do not want to loose customers because i do not respond.
In my life i learnt with the soft and the hard way that “Support” is the 1st thing to make customers happy and keeping them. If they can’t reach me they look solutions and/or alternative elsewhere and they did. (I’m not the only guy developing or fixing computers in my town)
Do not get me wrong, the product is awesome by itself but it had and has some critical bugs which it needed to be fixed in order a project to proceed. Speaking for my self i spend a lot of hours and sometime days for bug caused by kbmMW and not from my project (and you know how difficult is to trace a bug in a multi-threaded application) and on the other half i was waiting weeks for a response.
I do not compare you with DevExpress which they respond the same day but a lot of Open Source projects on Github respond way faster in their bugreports.
Since i have invested in kbmMW i do not want to leave and go into another framework because i know you a very awesome developer and supporter of Delphi ecosystem but please find a solution for quick support as other project have in here. (I understand e-mail is a priority but i do not have $156 since my project are for my own use and not commercial so far)
I will renew my subscription in the coming couple months because i believe that you’ll find a solution to this!
Thank you 🙂
-
This reply was modified 5 years, 8 months ago by
Babis Michael.
Babis MichaelParticipantHello,
To be relayed fails. Debugging the code found that for unknown reason it fails to decrypt the relayed message.
I’ll try to find some free time to make you an example.Thank you
Babis MichaelParticipantHello Kim,
Client!
If client transport connection pool (Indy) then it will use Indy’s Disconnect method in the end, without options, which means it will attempt to disconnect gracefully (notifying the peer), which will hang until timeout if not responded to per the TCP/IP standard.
Well the if client internet or server is down for whatever reason there is no point to wait …
I have however added a DisconnectGracefully boolean property (default true) for next release for all client side Indy transports. It can be set to false before a Disconnect or connection pool kill connections, to force non graceful connection shutdown.
So the killconnections will have an extra parameter ?
Currently i do this after i detect a disconnection or timeout:Client.Disconnect;
ConnectionPool.KillConnections;
InQueue.Clear;
OutQueue.Clear;Thank you
Babis MichaelParticipantmoctes,
From what i saw he’s usually answering to the forum once between 1 or 2 weeks (sometimes 3 weeks too).
Kim, please improve the support on the forums!Thank you
Babis MichaelParticipantHello,
I think i solved the problem! There were a couple machines with the same actorname so it caused the AV on the delete actor! Since i changed the duplicate actor name the AV seems to be gone when deleting the actor!
Babis MichaelParticipantHello,
Nope, BeginWrite/EndWrite have the same result. Access violation!
I think the wrong locks should cause a deadlock and not an Access violation! <g>
I guess something is trying to acess something that it isn’t there any more after calling deleteactor but i haven’t figure out what!
Babis MichaelParticipantBelow is the correct code:
authmgr.Lock.BeginRead;
try
vlogin := authmgr.logins.Get(….) <– AV hereif assigned(vlogin) then
begin
authmgr.logout(vlogin,logintoken); //actor is logged so log him out
authmgr.deleteactor(actor); // actor is logged out so delete him
end;finally
authmgr.Lock.EndRead;
end;btw, shouldn’t the “DeleteActor” logout the user too ?
Thank you
Babis MichaelParticipantHello,
Nope! if i delete the actor AV will occur! Removing DeleteActor no AV.try
authmgr.logins.Get(….) <– AV here
authmgr.logout(logintoken); //actor is logged so log him out
authmgr.deleteactor(actor); // actor is logged out so delete him
finally
authmgr.Lock.EndRead;
end;Thank you
-
This reply was modified 2 years, 6 months ago by
-
AuthorPosts
