[Lazarus] Memory leak with Synchronize on external threads

Sven Barth pascaldragon at googlemail.com
Sun Jun 5 00:29:59 CEST 2016


Am 02.06.2016 15:03 schrieb "Stefan Schalk" <schalk.stefan at googlemail.com>:
>
>
>    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?

You're indeed right. Fixed that.

Though this whole fix won't be part of 3.0.2 anymore as it got discovered
(and fixed) too late.

As a workaround try to avoid calling Synchronize from a new external thread
each time. If it is the same thread then memory usage won't increase after
the first call.

Regards,
Sven
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20160605/3756d860/attachment-0002.html>


More information about the Lazarus mailing list