Understanding combinational feedback loops
Think about what is combinatorial logic?
Logic gates where the output is defined entirely by the input, there is no state.

Imagine b = XOR of a and b. 

a changes to 1 output changes to 1 loops back xor is now 0, feedback means xor is now 1 etc.

This is an uncontrolled oscillation which will only stop when the input a is set 0 and it will stop in an undetermined state. 

The example above should be able to code as: but any combinatorial logic which reuses an output is a loop.

input a;
reg b;

always @* begin
  b = b ^ a; 
end


or 

input a;
wire b;
assign b = b ^ a;