How does UVM Comparator works?

In reply to Reuben:

Your loop uses the same exp_tr variable over and over, passing the same object handle to the comparitor fifo. When you change exp_tr.addr, you change it for all instances stored in the fifo. You need unique handles for each comparitor fifo item.