You are not logged in.
Pages: 1
Hi All,
This is my first post. Thanks for the great Job! ![]()
I've found an issue when using TSynDaemon in the latest mORMot2 release.
... looking at, Project Project05HttpDaemon in ...\ex\ThirdPartyDemos\martin-doyle\05-HttpDaemonORM\src as an example ...
I believe there is a bug in mORMot2 when building for 64bit and starting the project as a service.
.\Project05HttpDaemon.exe /install - OK
When starting the service, using windows services dialog, I'm getting an error:
-----------------------------
Windows could not start the Project05HttpDaemon service on
Local Computer.
Error 1067: The process terminated unexpectedly.
-----------------------------
Log File :
...
20220308 10482210 ! info SetThreadName 243c=Main
20220308 10482210 ! info Daemon started, listening on port 11111
20220308 10482210 " EXCOS EAccessViolation (c0000005) [] at 41265f
Using :
Delphi 10.4 Update 2
Win 10 pro
(It is working fine when using 16 Dec 2021 release and/or 32bit in current release)
Any thoughts?
Last edited by augusto (2022-03-09 09:27:04)
Offline
Thanks,
27158 in System.pas
while P[Result] <> #0 do
log file:
20220308 15395239 " EXCOS EAccessViolation (c0000005) [] at 41265f System.pas @PWCharLen (27158)
Offline
The problem seems to be the ServiceProc procedure in mormot.core.os.windows.inc:
procedure ServiceProc(ArgCount: cardinal; Args: PPChar); stdcall;
var
i: PtrInt;
begin
if not Assigned(ServiceSingle) then
exit;
SetLength(ServiceSingle.fArgsList, ArgCount - 1);
for i := 0 to ArgCount - 2 do //<- problem here
begin
Inc(Args);
ServiceSingle.fArgsList[i] := Args^;
end;Because i is a 64-bit int and ArgCount is a cardinal, if ArgCount is less than 2 then the for loop termination value wraps around to a very high number and causes it to try to process arguments that don't exist.
Offline
You are right.
Should be fixed by https://github.com/synopse/mORMot2/commit/8043c5de
and https://github.com/synopse/mORMot2/commit/8c5b973e
Sorry for the issue.
Offline
That's great!
Thanks
Offline
Hi ab,
i get the same issue with 64bits (Windows), the service install but it stuck at starting... status not running..., but it works at 32bits(windows)
even with latest master branch source.
Thanks ![]()
mormot 2.0.4222
Windows 10 64Bit
Delphi 11.2
Last edited by zakaria (2022-10-21 10:47:48)
Offline
Do you have any exception raised in this case?
Does https://github.com/synopse/mORMot2/commit/e7aae08b help ?
Offline
i updated the sources to https://github.com/synopse/mORMot2/commit/e7aae08b
but it still stuck at starting.. status, not getting running... status.
Offline
I tried it the weekend and I noticed that it creates an exception when trying to create the service
mormot.core.windows.inc
function TServiceController.Start(const Args: array of PChar): boolean;
begin
if length(Args) = 0 then
result := StartService(fHandle, 0, nil)
else
result := StartService(fHandle, length(Args), @Args[0]);
end;tried admin account, same problem
Last edited by dcoun (2022-10-24 17:05:20)
Offline
Please try with https://github.com/synopse/mORMot2/commit/b6bca670
On my side, I don't have any problem on Win64.
If the problem persists on your side, please try to replace the main block of Project05HttpDaemon as
begin
LogFamily := SQLite3Log.Family;
LogFamily.Level := LOG_VERBOSE;
LogFamily.PerThreadLog := ptIdentifiedInOnFile;
LogFamily.EchoToConsole := LOG_VERBOSE;
LogFamily.CustomFileName := IntToHex(GetTickCount64, 8);
WindowsServiceLog := SQLite3Log.DoLog;
SQLite3Log.Add.Log(sllInfo, 'Daemon exe run %', [paramstr(1)]);
SampleDaemon := TSampleDaemon.Create(
TSampleDaemonSettings, Executable.ProgramFilePath, '', '');
try
LogFamily.Level := LOG_VERBOSE;
LogFamily.EchoToConsole := LOG_VERBOSE;
SampleDaemon.CommandLine;
finally
SQLite3Log.Add.Log(sllInfo, 'Daemon exe leave');
end;It should create several log files, with verbose information.
Offline
Offline
@dcoun
This is weird because I am not able to reproduce the problem here.
I will look into your logs in detail.
Edit: Please try with https://github.com/synopse/mORMot2/commit/6d71a0a4
Edit 2: I tried with Alexandria 11.1 on Win64 and I have no problem with Project05HttpDaemon.dpr source code.
Two questions:
1) I think the log of /start is missing in the gist. Can you add it?
2) Did you make any other change to Project05HttpDaemon source ?
Offline
Clean from github, last commit + the code you requested above
Alexandria 11.2 patch1
Only added win64 target
https://gist.github.com/dkounal/63adc5a … 01c26c29a9
Last edited by dcoun (2022-10-26 08:00:10)
Offline
Offline
I was able to reproduce the problem on some Windows 11 specific configuration, whereas in older Windows version, there was no issue.
There was a problem with a handle defined as 32-bit instead of THandle (=64-bit on Win64).
It should be fixed now with https://github.com/synopse/mORMot2/commit/66bbc6db
Sorry for the delay in fixing this.
Offline
Thank you @ab, it works now
Offline
The problem was already existing on mORMot 1.
See https://synopse.info/fossil/info/7c53aeed8d
It is weird that it has not been reported before.
Offline
Hi ab, i tried the last commit and it Works as expected, Thanks ![]()
Offline
Hi ab,
i have some issues when i installed a windows service, it give me this error when i try to start it
Error 1053 [ERROR_SERVICE_REQUEST_TIMEOUT] occured with [/start] (Start) on Service 'MySampleService'mormot 2.4418,D11.2, windows 64 bits
Thanks ![]()
Offline
regressionly, the log file containt just one line<
09/12/2022 07:55:40.288 Last error 1 mormot.core.os.TServiceController(028242b04f30) Start(MySampleService) failed "ERROR_SERVICE_REQUEST_TIMEOUT" (1053) Offline
Pages: 1