{"record":{"id":"b277a48fd46d0ad0","repo":"abiosoft/colima","slug":"error-starting-s-w-b277a4","errorCode":null,"errorMessage":"error starting %s: %w","messagePattern":"error starting (.+?): %w","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"environment/vm/lima/daemon.go","lineNumber":131,"sourceCode":"\t\t\t\t}\n\n\t\t\t\tstatus, ok := ctx.Value(statusKey).(daemon.Status)\n\t\t\t\tif !ok {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif !status.Running {\n\t\t\t\t\tlog.Warnln(fmt.Errorf(\"error starting network: %w\", err))\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tfor _, p := range status.Processes {\n\t\t\t\t\t// TODO: handle inotify separate from network\n\t\t\t\t\tif p.Name == inotify.Name {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tif !p.Running {\n\t\t\t\t\t\tctx = context.WithValue(ctx, daemon.CtxKey(p.Name), false)\n\t\t\t\t\t\tlog.Warnln(fmt.Errorf(\"error starting %s: %w\", p.Name, err))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}()\n\t\t}\n\t}\n\n\t// check if inotify is running\n\tif conf.MountINotify {\n\t\tif inotifyEnabled, _ := ctx.Value(ctxKeyInotify).(bool); !inotifyEnabled {\n\t\t\tlog.Warnln(\"error occurred enabling inotify daemon\")\n\t\t}\n\t}\n\n\t// preserve vmnet context\n\tif vmnetEnabled, _ := ctx.Value(ctxKeyVmnet).(bool); vmnetEnabled {\n\t\t// env var for subprocess to detect vmnet\n\t\tl.host = l.host.WithEnv(vmnet.SubProcessEnvVar + \"=1\")\n\t}","sourceCodeStart":113,"sourceCodeEnd":149,"githubUrl":"https://github.com/abiosoft/colima/blob/c3a5f9184d83a197184f897a9f07eb3c01b3bc88/environment/vm/lima/daemon.go#L113-L149","documentation":"A per-process warning emitted while inspecting daemon status after a chain failure: for each daemon process whose Running flag is false (skipping the inotify process, which is handled separately), colima records the failure in ctx (daemon.CtxKey(p.Name) = false) and logs 'error starting <p.Name>'. Typically p.Name is a specific vmnet network (e.g. shared or a custom network), pinpointing which network daemon failed to run.","triggerScenarios":"'colima start --network-address' or with custom networks where the overall daemon runs but one child network process is down: one vmnet network's interface failed (name collision, vmnet entitlement for that network, subnet conflict with host VPN), or the child crashed while others started; the loop marks exactly the failed networks so later steps can skip them.","commonSituations":"Custom named networks in config whose subnets overlap corporate VPN ranges; one of several networks configured but the corresponding vmnet helper config missing; VPN clients grabbing the same 192.168.x range colima's network uses.","solutions":["Identify the failing network name from the message, then check its config: 'colima start --network-address --network name=...,interface=...' options or the networks: section in ~/.colima/_templates/lima/0.yaml / instance config; fix subnet/interface conflicts.","Disconnect VPNs that conflict with the daemon network's subnet and retry 'colima start'.","Restart to retry child spawn: 'colima stop -f && colima start'.","If the named network is optional, remove it from the config to get a clean start, then re-add it correctly.","Verify per-network status: 'colima network ls' / daemon status commands after start."],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":"// validate network names/subnets before start to avoid per-process failures\nfor _, n := range conf.Network.Networks {\n    if n.Name == \"\" {\n        return fmt.Errorf(\"network name required for custom networks\")\n    }\n}","typeGuard":"func failedDaemonProcesses(s daemon.Status) []daemon.Process {\n    var failed []daemon.Process\n    for _, p := range s.Processes {\n        if p.Name == inotify.Name {\n            continue // handled separately\n        }\n        if !p.Running {\n            failed = append(failed, p)\n        }\n    }\n    return failed\n}","tryCatchPattern":"for _, p := range status.Processes {\n    if p.Name == inotify.Name || p.Running {\n        continue\n    }\n    ctx = context.WithValue(ctx, daemon.CtxKey(p.Name), false)\n    log.Warnln(fmt.Errorf(\"error starting %s: %w\", p.Name, err))\n}","preventionTips":["Choose custom network subnets that don't collide with VPN/corporate ranges.","Remove unused custom networks from config before start.","Check 'colima network ls' after start to confirm each network's process state."],"tags":["network","vmnet","daemon","per-process","non-fatal"],"backgroundTag":null,"analyzedSha":"c3a5f9184d83a197184f897a9f07eb3c01b3bc88","analyzedAt":"2026-08-15T18:58:08.334Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}