Calling fork/join_none inside task

Dear Community,

I am calling fork/join_none inside task but it is not working.
This is my code:

class myCcixUvmVirtualSequence_passivePCIeEP extends uvm_sequence;

	task initPcieLink();  	
		$display("\n[initPcieLink] ### Before loop \n");
		deviceState = readReg(PCIE_ST);
		while (deviceState[15:0] != PCIE_Active) begin
			deviceState = epCfg.readReg(PCIE_ST);
			#100;
		    $display("\n[initPcieLink] ### Waiting for device to become ACTIVE \n");
		end
		$display("\n[initPcieLink] ### device is in ACTIVE state \n");
    endtask

 virtual task configSeq(uvm_phase phase); 	      
  	phase.raise_objection(this, "Init PCIE link for CCIX");     

  	initPcieLink();  // prints message "Waiting for device to become ACTIVE "

  endtask  : configSeq

 virtual task pre_body(); 

      // configure the test

       fork
          configSeq(starting_phase);   
       join_none
      $display(" VirtualSeqLib AFTER configSeq"); // <- Here I expect to see the display message in the log
endtask
endclass

So the code always loops on configSeq phase and never goes to $display statement. Looks like a fork/join_none does not working.
Can you please share some your thoughts on such behavioral?

This is simulation log:
[initPcieLink] ### Waiting for device to become ACTIVE
[initPcieLink] ### Waiting for device to become ACTIVE
[initPcieLink] ### Waiting for device to become ACTIVE
[initPcieLink] ### Waiting for device to become ACTIVE
[initPcieLink] ### Waiting for device to become ACTIVE
[initPcieLink] ### Waiting for device to become ACTIVE
[initPcieLink] ### Waiting for device to become ACTIVE
[initPcieLink] ### Waiting for device to become ACTIVE

In reply to haykp:

This makes no sense. The “AFTER” display should come before the “ACTIVE” $display. Are you sure nothing else calls configSeq() or initPcieLink() besides the pre_body()?

In reply to dave_59:

Yes, I just checked. Only 1 task is calling initPcieLink()

In reply to haykp:

And only one task is calling configSeq()?

In reply to dave_59:

Yes, only 1 task calls it.

In reply to haykp:

Can you change the code to

virtual task pre_body(); 
 
      // configure the test
       display(" VirtualSeqLib BEFORE configSeq");
       fork begin
          display(" VirtualSeqLib INSIDE configSeq");
          configSeq(starting_phase); end   
       join_none
      $display(" VirtualSeqLib AFTER configSeq"); 
endtask
endclass

The BEFORE/AFTER should be displayed next to each other. Then the INSIDE should come next before the “Waiting” messages.