[fpc-devel] cthreads and fpc.cfg?
Martin Frb
lazarus at mfriebe.de
Wed Jul 19 12:33:58 CEST 2023
On 19/07/2023 10:22, Michael Van Canneyt via fpc-devel wrote:
>
>
> The error is logical. What is not logical is that it pops up now.
>
> By all logic, we should have seen this error pop up as early as 2016.
>
> Why it pops up only now is a mystery that we need to solve...
I don't have all the details, but maybe there is something buried in the
following findings.
The early call to threads happens in
#0 InitCriticalSection (cs=...) at ../inc/thread.inc:229
#1 0x000000000049ae18 in $create () at
../objpas/sysutils/sysencoding.inc:214
#2 0x00000000004a6749 in $SYSUTILS_$$_init$ () at ../unix/sysutils.pp:1903
#3 0x000000000041fc27 in $fpc_initializeunits () at ../inc/system.inc:1134
#4 0x00000000004039be in $main () at fpcmkcfg/fpcmkcfg.pp:585
sysencoding.inc:214
class constructor TEncoding.Create;
hasn't changed recently... (according to git blame)
class constructor TEncoding.Create;
var
E: TStandardEncoding;
begin
for E := Low(FStandardEncodings) to High(FStandardEncodings) do
FStandardEncodings[E] := nil;
{$ifdef FPC_HAS_FEATURE_THREADING}
InitCriticalSection(FLock);
{$endif}
end;
I don't know if FPC_HAS_FEATURE_THREADING has changed?
Also
unix/sysutils.pp 1903
hasn't changed recently...
Initialization
InitExceptions; { Initialize exceptions. OS independent }
InitInternational; { Initialize internationalization settings }
SysConfigDir:='/etc'; { Initialize system config dir }
OnBeep:=@SysBeep;
{$ifdef android}
InitAndroid;
{$endif android}
But the function uses a string
SysConfigDir:='/etc';
Disassembly show it call "create" before InitExceptions
This code must have been inserted by the compiler...
So some recent change in string handling, now inserts calls to encoding
create ?
0x4a6740 <$SYSUTILS_$$_init$>: push %rbp
0x4a6741 <$SYSUTILS_$$_init$+1>: mov %rsp,%rbp
0x4a6744 <$SYSUTILS_$$_init$+4>: call 0x49ade0 <$create>
0x4a6749 <$SYSUTILS_$$_init$+9>: call 0x4a14a0 <InitExceptions>
0x4a674e <$SYSUTILS_$$_init$+14>: call 0x4a56a0 <InitInternational>
More information about the fpc-devel
mailing list