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>
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel