[libvirt] ESX error while freeing inherited objects

Ata Bohra ata.husain at hotmail.com
Wed Jan 2 02:35:25 UTC 2013


Hi All,  Freeing of an object having inheritance depth >=2 throws an error such as:" internal error Call to esxVI_<grand_parent>_Free for unexpected type 'Child'.  " For instance: Below code snippet is from esx_vi_generator.input (modified) object VirtualDevice
    Int                                      key                            r    
    Description                              deviceInfo                     o    
    VirtualDeviceBackingInfo                 backing                        o    
    VirtualDeviceConnectInfo                 connectable                    o    
    Int                                      controllerKey                  o    
    Int                                      unitNumber                     o    
end
object VirtualController extends VirtualDevice
    Int                                      busNumber                      r
    Int                                      device                         ol
end
object VirtualIDEController extends VirtualController
end object VirtualDeviceConfigSpec
    VirtualDeviceConfigSpecOperation         operation                      o
    VirtualDeviceConfigSpecFileOperation     fileOperation                  o
    VirtualDevice                            device                         r
end 
object VirtualMachineConfigSpec...
   VirtualDeviceConfigSpec                  deviceChange                   ol..end On free of "VirtualMachineConfigSpec", I hit below error:"libvir: ESX Driver error : internal error Call to esxVI_VirtualDevice_Free for unexpected type 'VirtualIDEController'" But if I remove VirtualController and include its fields directly to VirtualIDEController, error is resolved. Please let me know if I'm missing anything, else, it seems like a bug with generated code.  While debugging the error seems to come from: esx_vi_types.c: /*
 * Macros to implement dynamic dispatched functions
 */#define ESX_VI__TEMPLATE__DISPATCH(_actual_type, _actual_type_name, __type,   \
                                   _dispatch,  _error_return)                 \
    switch (_actual_type) {                                                   \
      _dispatch                                                               \
                                                                              \
      case esxVI_Type_##__type:                                               \
        break;                                                                \
                                                                              \
      default:                                                                \
        virReportError(VIR_ERR_INTERNAL_ERROR,                                \
                       _("Call to %s for unexpected type '%s'"),              \
                       __FUNCTION__, _actual_type_name);                      \
        return _error_return;                                                 \
    }
 Thanks!Ata 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130101/ea7816da/attachment-0001.htm>


More information about the libvir-list mailing list