Clone in set_config_object

I try to pass a virtual interface from testcase to agent. The virtual interface is wrappered in a class derived from ovm_object. In testcase, I call set_config_object with clone = 1:
set_config_object("*o_adc_agent0*", "o_adc_ch_delay_cfg", o_adc0_ch_delay_cfg, 1);
but a fatal error occured:
# ** Fatal: Illegal virtual interface dereference.

It seems that the virtual interface is not passed successfully. If I use:
set_config_object("*o_adc_agent0*", "o_adc_ch_delay_cfg", o_adc0_ch_delay_cfg, 0);

everything is ok.

I have already overload function clone in the wrapper class: 
function ovm_object clone();
  adc_ch_delay_cfg #(IQ_WIDTH, NODE_NUM) tmp;
  tmp = new("clone_object");
  tmp.ul_ch_delay_vif = this.ul_ch_delay_vif; //copy the virtual interface
  return(tmp);
endfunction
The new clone function is called explicitly.
My OVM version is 2.1.1