In reply to sharatk:
When timeout expeires you might not have any UVM_ERROR. In this case you have a tsructural problem. Your simulation might hang or it runs in an infinite loop. The question for UVM_ERROR is not relevant in this case.
Per definition pre_abort is only execuetd on UVM_EXIT and this depends on your parameter UVM_MAX_QUIT_COUNT.