[Lazarus] TThread.CurrentThread fails on Linux

Sven Barth pascaldragon at googlemail.com
Mon Sep 16 23:47:14 CEST 2013


On 16.09.2013 23:13, Mario R. Carro wrote:
> Hello all.
>
> In it's current form (r23227) CurrentThreadVar it's not initialized
> before calling Execute in the TThread implementation for Linux (Unix).
>
> Due to this the calls to TThread.CurrentThread always returns references
> to TExternalThread instances, guessing that the current thread is not a
> FPC thread (due to CurrentThreadVar being nil), even for actual TThread
> threads.
>
> Adding the line:
>
>      CurrentThreadVar := LThread;
>
> somewhere before calling Execute in ThreadFunc in rtl/unix/tthread.inc
> solves this problem.

Why the hell does the Unix implementation use a different thread 
function which does the same in the end?! O.o
Please create a bug report.

> Also: the TExternalThread instances created by TThread.CurrentThread are
> never freed, and so effectively leaked, isn't it?

They are freed at the end of the program.

Regards,
Sven




More information about the Lazarus mailing list