Uvm_config_db set in the below example correct?

I am getting a message as below when I use +UVM_CONFIG_DB_TRACE:

UVM_INFO @ 0: reporter [CFGDB/SET] Configuration 'uvm_test_top.top_env.sub_env.axi_system_env_h.cfg’ (type class amba_axi_uvm_pkg::amba_axi_system_configuration) set by uvm_test_top.top_env.sub_env = (class amba_axi_uvm_pkg::amba_axi_system_configuration) ?*

My question is whether the uvm_config_db set has been done correctly? I see the question mark at the end of the above print which is causing a doubt or this question mark at the end has no significance?
Also I do get a FATAL_ERROR stating :
UVM_FATAL @ 0: uvm_test_top.top_env.sub_env.axi_system_env_h [end_of_elaboration_phase] Invalid configuration passed. Please pass a valid amba_axi_system_configuration object or derived object

In my sub_env I am declaring the vip configuration and in build_phase doing a uvm_config_db set call.

class custom_amba_axi_system_configuration extends amba_axi_system_configuration;
//----
//---
endclass
//----------------------------------
class sub_env extends top_env;
axi_system_env axi_system_env_h;
custom_amba_axi_system_configuration cfg;
//Build phase
cfg = custom_amba_axi_system_configuration :: type_id:: create("cfg");
uvm_config_db#(amba_axi_system_configuration)::set(this, "axi_system_env_h*", "cfg",cfg);
axi_system_env_h = axi_system_env :: type_id :: create("axi_system_env_h", this);

endclass