lima-vm/lima · error
failed to delete driver instance: %w
Error message
failed to delete driver instance: %w
What it means
unregister in pkg/instance/delete.go successfully created the driver, but limaDriver.Delete(ctx) failed while tearing down driver-managed resources (disks, network interfaces, ssh config). The instance directory is kept so the operation can be retried.
Source
Thrown at pkg/instance/delete.go:46
if err := unregister(ctx, inst); err != nil {
return fmt.Errorf("failed to unregister %#q: %w", inst.Dir, err)
}
}
if err := os.RemoveAll(inst.Dir); err != nil {
return fmt.Errorf("failed to remove %#q: %w", inst.Dir, err)
}
return nil
}
func unregister(ctx context.Context, inst *limatype.Instance) error {
limaDriver, err := driverutil.CreateConfiguredDriver(ctx, inst, 0)
if err != nil {
return fmt.Errorf("failed to create driver instance: %w", err)
}
if err := limaDriver.Delete(ctx); err != nil {
return fmt.Errorf("failed to delete driver instance: %w", err)
}
server.Stop(inst.Dir, true)
return nil
}
View on GitHub (pinned to dd909d0973)
Solutions
- Read the wrapped driver error to see which resource teardown failed.
- Ensure no process uses the VM's disk (check qemu/vz/WSL processes) and retry `limactl delete`.
- Stop forcibly first: `limactl stop -f <instance>` then delete.
- If resources are already gone, manually remove the instance dir (`rm -rf ~/.lima/<instance>`).
Example fix
// before limactl delete myvm // after limactl stop -f myvm && limactl delete myvm
Defensive patterns
Strategy: retry
Validate before calling
// ensure nothing holds the disk image before delete
if locked, _ := fileLocked(filepath.Join(inst.Dir, "basedisk")); locked {
return errors.New("disk in use; stop the VM first")
} Try / catch
err := instance.Delete(ctx, inst, false)
if err != nil && strings.Contains(err.Error(), "failed to delete driver instance") {
time.Sleep(2 * time.Second)
err = instance.Delete(ctx, inst, false) // retry once for transient locks
}
return err Prevention
- Stop the instance (or force-stop) before delete
- Check for orphaned qemu/vz/WSL processes holding the disk
- Avoid running concurrent deletes on the same instance
When it happens
Trigger: unregister(ctx, inst) calls limaDriver.Delete(ctx) at delete.go:45 and it returns an error — e.g. qcow2/disk file already gone or locked, vzvirt network device busy, or hypervisor API rejecting the delete.
Common situations: Disk image mounted or in use by another process, leftover network interfaces from a crashed VM, running delete twice concurrently, or WSL2/HVF backend reporting stale resources.
Related errors
- failed to unregister %#q: %w
- failed to create driver instance: %w
- failed to get boot scripts: %w
- invalid boot script filename %#q: must be in format 'boot.<O
- unimplemented by the krunkit driver
AI-assisted analysis of lima-vm/lima@dd909d0973 (2026-09-01).
Data as JSON: /api/errors/0accd59b1a379ae5.
Report an issue: GitHub.