FpDebug: Fix race condition. FScope accesses FScopeList which is changed by thread (dyn array re-alloc by SetLength)

git-svn-id: trunk@65172 -
This commit is contained in:
martin 2021-06-04 01:11:22 +00:00
parent 51ac1efe7a
commit 3644f4a2e2

View File

@ -4281,13 +4281,6 @@ begin
end;
FValid := True;
FComputeNameHashesWorker := TFpThreadWorkerComputeNameHashes.Create(Self);
FComputeNameHashesWorker.AddRef;
FScanAllWorker := TFpThreadWorkerScanAll.Create(Self, FComputeNameHashesWorker);
FScanAllWorker.AddRef;
FOwner.WorkQueue.PushItem(FScanAllWorker);
AttribList.EvalCount := 0;
/// TODO: (dafHasName in Abbrev.flags)
if LocateAttribute(Scope.Entry, DW_AT_name, AttribList, Attrib, Form)
@ -4332,6 +4325,14 @@ begin
if FMinPC = 0 then FMinPC := FMaxPC;
if FMaxPC = 0 then FMAxPC := FMinPC;
// FScope and FScopeList *MUST NOT* be accessed while the worker is running
FComputeNameHashesWorker := TFpThreadWorkerComputeNameHashes.Create(Self);
FComputeNameHashesWorker.AddRef;
FScanAllWorker := TFpThreadWorkerScanAll.Create(Self, FComputeNameHashesWorker);
FScanAllWorker.AddRef;
FOwner.WorkQueue.PushItem(FScanAllWorker);
end;
destructor TDwarfCompilationUnit.Destroy;