Hi Sven,

many thanks for your quick response and solution!

I tried the new FPC sources (Revision 33878) and ran in a segmentation fault.
In classes.inc line 345 the SizeOf gets the length from the pointer but I think
the length of the structure is needed:

    currently: FillChar(syncentry^, SizeOf(syncentry), 0);

    suggestion: FillChar(syncentry^, SizeOf(TThreadQueueEntry), 0);

Because of that, the uninitialized structure member "Next" will lead to a
segmentation fault afterwards.
I tried the suggestion and everything works fine (no SIGSEGV, no memory leak).
Can you please review my suggestion?

Best regards,
Stefan



-----Ursprüngliche Nachricht-----
Von: Lazarus [mailto:[email protected]] Im Auftrag von Sven
Barth
Gesendet: Dienstag, 31. Mai 2016 22:22
An: [email protected]
Betreff: Re: [Lazarus] Memory leak with Synchronize on external threads

I've committed a fix in FPC revision 33863 and if all goes well it should be
merged to 3.0.1 as well, thus becoming part of 3.0.2.
A check with Delphi has shown that the WakeMainThread event gets Nil as Sender
argument with an external thread, so I can avoid the use of CurrentThread which
triggered the memory usage.
Please note that this is however not a leak as CurrentThread will create a
TExternalThread instance for a thread that hasn't been created by TThread (and
for which no instance exists yet) and this instance must
(sadly) be kept around until the program terminates.

Regards,
Sven


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus-ide.org/listinfo/lazarus

<<attachment: winmail.dat>>

-- 
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to