Bladeren bron

compiler: when stuck with waiting queue, write items, issue #41386

mattias 1 dag geleden
bovenliggende
commit
e059f7829b
1 gewijzigde bestanden met toevoegingen van 25 en 0 verwijderingen
  1. 25 0
      compiler/ctask.pas

+ 25 - 0
compiler/ctask.pas

@@ -72,6 +72,8 @@ type
     procedure processqueue;
     // add a module to the queue. If a module is already in the queue, we do not add it again.
     procedure addmodule(m : tmodule);
+    // write current queue and what is waiting for what
+    procedure write_queue;
   end;
 
 
@@ -384,8 +386,11 @@ begin
       begin
       t:=list.firsttask;
       if t<>nil then
+        begin
         // no progress possible
+        write_queue;
         InternalError(2025090301);
+        end;
       end;
     end;
 end;
@@ -429,6 +434,26 @@ begin
     end;
 end;
 
+procedure ttask_handler.write_queue;
+var
+  t: ttask_list;
+  firstwaiting: tmodule;
+  cc: Boolean;
+  s: String;
+begin
+  writeln('ttask_handler.write_queue:');
+  t:=list.firsttask;
+  while t<>nil do
+    begin
+    cc:=cancontinue(t,firstwaiting);
+    if firstwaiting<>nil then
+      s:=firstwaiting.realmodulename^
+    else
+      s:='';
+    writeln('queue: ',t.module.realmodulename^,' ',t.module.state,' cancontinue=',cc,' firstwaiting=',s);
+    t:=t.nexttask;
+    end;
+end;
 
 
 end.