In reply to MICRO_91:
This is because you have constructed it twice, in the base uvm_driver::new() and in user_driver::new(). Once you construct a class derived from uvm_component, there’s no way to delete it because it gets linked into the UVM testbench hierarchy.
What you should do just create another pull_port and leave the existing one unconnected. The reason min_size of uvm_seq_item_pull_port chosen to be 0 is so that it can be left unconnected.
IMHO, it would be better not to use uvm_driver in the first place. The uvm_component class (which all ports/exports are derived from) creates a lot of overhead even if never used. However, you lose the connivence of grouping all your drivers by uvm_driver which many IDEs and debugging tools let you do.