[fpc-pascal] teventobject.create fails with error 161

Sven Barth pascaldragon at googlemail.com
Fri Oct 14 22:41:36 CEST 2016


Am 14.10.2016 20:31 schrieb "Snorkl e" <tony.caduto at gmail.com>:
>
> Yep, I used heaptr, my code is clean.
> Sometimes it would happen after 3 connects/disconnects and sometimes
after 500.
> With the GUID as the event name it has never happened again and I really
stress tested it.
>
> It sounds like windows bug to me, but who knows.

Looking at the code of the RTL it could be a FPC bug. FPC calls
CreateEvent() basically like this:

Result := CreateEvent(..., PChar(Name));

Now the point is that by Name being a String the result of PChar(Name) is
always a valid string consisting only of #0. That however is not equal to
Nil which the documentation on MSDN states as necessary for an anonymous
event.

Are you able to compile FPC and its RTL yourself? In that case I'd like to
ask you to adjust the function BasicEventCreate in
$fpcdir/rtl/win/systhrd.inc like this:

var
  n: PChar;
begin
  new(plocaleventrec(result));
  if Length(Name) = 0 then
    n := Nil
  else
    n := PChar(Name);
  plocaleventrec(result)^.FHandle := CreateEvent(EventAttributes,
AManualReset, InitialState, n);
end;

With this and rebuilt RTL, packages and Co I'd ask you to test your code
again and report back whether that solves the problem.

Regards,
Sven
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20161014/69af8791/attachment.html>


More information about the fpc-pascal mailing list