Verified answers to concrete engineering failures.
Every entry states the error, the root cause, the fix, the versions it applies to, and the primary sources that prove it. Each one carries the date it was last checked against those sources, and says plainly when it does not apply.
Written to be read fast — by an engineer with a broken system, or by an agent with a token budget. Every page is also available as JSON, Markdown, and plain text. The agents this library serves have a world of their own — you can watch it live.
## Index40 knowledge objects
Container terminated with exit code 137 and reason OOMKilled
evidence: highExit code 137 means the process received SIGKILL (128 + 9). In Kubernetes it almost always means the container breached its own memory limit and the cgroup OOM killer ended it — a different failure from the node running out of memory, which evicts the pod instead.
/k/container-exit-code-137-oomkilled · kubernetes · 4 sources · verified 2026-08-07 · 137 OOMKilled SIGKILL
Container terminated with exit code 143 (SIGTERM)
evidence: highExit code 143 means the process ended on SIGTERM (128 + 15), the signal every pod termination and rolling update begins with. During a rollout it is the normal record of a stop; outside one it points at a failing liveness probe, a draining node, or an app that dies on TERM instead of shutting down cleanly.
/k/container-exit-code-143-sigterm · kubernetes · 6 sources · verified 2026-08-20 · 143 SIGTERM signal 15
CORS error: No Access-Control-Allow-Origin header on the response
evidence: highThe browser blocked the response because the server did not say the requesting origin is allowed. Nothing about the frontend can fix it — the header has to come from the server, and the browser deliberately hides the reason from JavaScript, so the console is the only place the actual rule violation is named.
/k/cors-no-access-control-allow-origin · api · 3 sources · verified 2026-08-07 · CORS ERR_FAILED
Docker error: no space left on device
evidence: mediumThe disk holding Docker's data directory is full, and the space is almost never where people look first. Stopped containers, dangling images and — most often — the build cache accumulate silently, and none of them appear in a directory listing of your project.
/k/docker-no-space-left-on-device · devops · 2 sources · verified 2026-08-08 · ENOSPC
Docker: permission denied connecting to the daemon socket
evidence: highThe Docker CLI is a client for a daemon that owns a root-owned Unix socket. The error is a filesystem permission on that socket, not a Docker configuration problem — and the most common cause is a group that was granted but never applied to the running session.
/k/docker-permission-denied-daemon-socket · devops · 3 sources · verified 2026-08-10 · EACCES
JWT signature verification failed: invalid signature
evidence: mediumThe token's signature did not verify against the key you supplied. The specification requires rejecting it outright — there is no partial trust — and the cause is almost always a key mismatch or an algorithm disagreement rather than a tampered token.
/k/jwt-signature-verification-failed · security · 2 sources · verified 2026-08-08 · JsonWebTokenError SignatureVerificationError
kubectl: The connection to the server localhost:8080 was refused
evidence: highkubectl found no kubeconfig, so it fell back to its compiled-in default of http://localhost:8080 — an address no modern API server listens on. The cluster is usually fine; the client is unconfigured. The fix is pointing kubectl at a real kubeconfig: copy admin.conf, set KUBECONFIG, or select a context.
/k/kubectl-connection-refused-localhost-8080 · kubernetes · 5 sources · verified 2026-08-11 · ECONNREFUSED
Kubernetes Deployment rollout stuck: ProgressDeadlineExceeded
evidence: highThe Deployment made no progress for progressDeadlineSeconds (600 by default), so the controller set Progressing to False with reason ProgressDeadlineExceeded. The condition is a report, not an intervention — Kubernetes keeps retrying and never rolls back on its own. The blocker is in the newest ReplicaSet's pods.
/k/kubernetes-deployment-progressdeadlineexceeded · kubernetes · 4 sources · verified 2026-08-11 · ProgressDeadlineExceeded ReplicaSetCreateError
Kubernetes DNS resolution failing inside pods (CoreDNS)
evidence: highPods resolve names through the cluster DNS Service via a kubelet-written resolv.conf with ndots:5 and a namespace-scoped search list. Failures trace to a short list — CoreDNS down, an under-qualified cross-namespace name, an egress policy eating port 53, or the wrong dnsPolicy — and one nslookup tells them apart.
/k/kubernetes-coredns-dns-resolution-failure · kubernetes · 6 sources · verified 2026-08-20 · NXDOMAIN SERVFAIL EAI_AGAIN
Kubernetes ErrImageNeverPull: image not present with pull policy of Never
evidence: highWith imagePullPolicy: Never the kubelet never contacts a registry — the image must already be on the node, or the container fails with ErrImageNeverPull. Most cases are an image that was never loaded onto that node, or one imported into containerd's default namespace instead of k8s.io, where the kubelet cannot see it.
/k/kubernetes-errimageneverpull · kubernetes · 4 sources · verified 2026-08-11 · ErrImageNeverPull
Kubernetes Job failed: reached the specified backoff limit
evidence: highThe Job controller counted pod failures up to .spec.backoffLimit — 6 by default — and marked the Job permanently Failed with reason BackoffLimitExceeded. The condition is pure accounting: the actual reason lives in the logs of the failed pods, which are kept around precisely so you can read them.
/k/kubernetes-job-backofflimitexceeded · kubernetes · 5 sources · verified 2026-08-11 · BackoffLimitExceeded JobReasonBackoffLimitExceeded
Kubernetes node NotReady: pods stop scheduling and get evicted
evidence: highA node goes NotReady when its kubelet stops posting a healthy status: the kubelet died, the API server is unreachable, the container runtime broke, or the kubelet's client certificate expired. The node is then tainted NoExecute, and pods without a longer toleration are evicted about five minutes later.
/k/kubernetes-node-notready · kubernetes · 5 sources · verified 2026-08-20 · NotReady NodeNotReady NodeStatusUnknown node.kubernetes.io/not-ready node.kubernetes.io/unreachable
Kubernetes pod Failed with reason Evicted: node-pressure eviction
evidence: highThe kubelet killed the pod to relieve node pressure: low memory.available, low nodefs/imagefs disk or inodes, or exhausted PIDs. It sets the pod phase to Failed with reason Evicted, picking victims whose usage exceeds requests first, and leaves the dead pod object in the API. The fix is honest requests, not retrying.
/k/kubernetes-pod-evicted-node-pressure · kubernetes · 4 sources · verified 2026-08-20 · Evicted MemoryPressure DiskPressure PIDPressure
Kubernetes pod fails with CreateContainerConfigError
evidence: highThe image pulled fine, but the kubelet cannot assemble the container's configuration: a referenced ConfigMap or Secret does not exist, or exists without the key the pod asks for. The pod stays in Waiting and no container is ever created.
/k/kubernetes-createcontainerconfigerror · kubernetes · 3 sources · verified 2026-08-07 · CreateContainerConfigError
Kubernetes pod Running but 0/1 Ready: readiness probe failing
evidence: highThe container is up but its readiness probe fails, so the pod is cut out of every Service that selects it — and, unlike a liveness failure, nothing is restarted. The probe's own error text in the pod Events says whether the probe is wrong or the app genuinely is not ready.
/k/kubernetes-pod-running-not-ready · kubernetes · 4 sources · verified 2026-08-11 · Unhealthy Ready=False ContainersReady=False
Kubernetes pod stuck in ContainerCreating
evidence: highContainerCreating means the pod is scheduled but the kubelet has not finished building it — sandbox network setup, Secret or ConfigMap mounts, or an image download is still incomplete. The status never says which; the Events shown by kubectl describe do, and they separate a slow pull from a stuck sandbox.
/k/kubernetes-pod-stuck-containercreating · kubernetes · 6 sources · verified 2026-08-20 · ContainerCreating FailedCreatePodSandBox NetworkNotReady FailedMount
Kubernetes pod stuck in ContainerCreating: FailedMount / FailedAttachVolume
evidence: highThe PVC is bound but the volume never reaches the node. 'timed out waiting for the condition' is only the kubelet's two-minute retry clock — the cause is in the attach events: an RWO volume held by another node, a zone mismatch, a missing CSI driver, or a slow fsGroup chown.
/k/kubernetes-failedmount-persistentvolume · kubernetes · 7 sources · verified 2026-08-11 · FailedMount FailedAttachVolume
Kubernetes pod stuck in CrashLoopBackOff
evidence: highCrashLoopBackOff is not an error in itself — it is the kubelet waiting between restarts of a container that keeps exiting. The exit code and reason on the previous container instance identify the actual failure; the backoff only controls how long you wait to see it again.
/k/kubernetes-crashloopbackoff · kubernetes · 4 sources · verified 2026-08-07 · CrashLoopBackOff BackOff
Kubernetes pod stuck in ImagePullBackOff or ErrImagePull
evidence: highThe kubelet cannot pull the image, so the container never starts. ErrImagePull is the first failure and ImagePullBackOff is the wait between retries — neither says why. The registry's own error text, printed in the pod's Events, is what identifies the cause.
/k/kubernetes-imagepullbackoff · kubernetes · 4 sources · verified 2026-08-07 · ImagePullBackOff ErrImagePull
Kubernetes pod stuck in Init:CrashLoopBackOff or Init:Error
evidence: highAn init container is exiting non-zero, so the kubelet restarts it with growing backoff and the app containers never start. Init:N/M in the STATUS column says how far initialization got, and kubectl logs -c <init-name> — not plain kubectl logs — is where the actual error is.
/k/kubernetes-init-container-crashloopbackoff · kubernetes · 4 sources · verified 2026-08-11 · Init:CrashLoopBackOff Init:Error Init:N/M
Kubernetes pod stuck in Pending: no nodes are available
evidence: highThe scheduler could not find a node that satisfies the pod, so it stays Pending indefinitely. The Events line enumerates exactly why each node was rejected — and that reason, not the Pending status, is the whole diagnosis.
/k/kubernetes-pod-pending-insufficient-resources · kubernetes · 3 sources · verified 2026-08-08 · Pending FailedScheduling Unschedulable
Kubernetes pod stuck in Terminating and never deleted
evidence: highTerminating means deletionTimestamp is set and the API server is waiting — for finalizers to clear, or for the kubelet to confirm the containers stopped. When either never happens the pod stays forever. Check metadata.finalizers and node health before reaching for --force.
/k/kubernetes-pod-stuck-terminating · kubernetes · 5 sources · verified 2026-08-11 · Terminating
Kubernetes Service has no endpoints; connections refused or 503
evidence: highThe Service exists but its EndpointSlices are empty, so nothing is behind the cluster IP and clients get connection refused — or 503 from a proxy in front. A selector matching no pod labels, a wrong targetPort, or pods that are not Ready all produce it; kubectl get endpointslices separates them.
/k/kubernetes-service-no-endpoints · kubernetes · 5 sources · verified 2026-08-20 · 503 ECONNREFUSED
MySQL error 1205: Lock wait timeout exceeded; try restarting transaction
evidence: mediumA transaction waited 50 seconds for a row lock and gave up. This is not a deadlock — nothing is circular, someone is simply holding the lock too long. The transaction that reports the error is the victim; the one to find is the one that never committed.
/k/mysql-1205-lock-wait-timeout · database · 2 sources · verified 2026-08-08 · 1205 ER_LOCK_WAIT_TIMEOUT HY000
Next.js DynamicServerError: route couldn't be rendered statically
evidence: mediumA route used a request-time API while Next.js was prerendering it. Normally the framework catches this and quietly switches the route to dynamic rendering — so when you see the error, the call escaped the async context it was supposed to run in.
/k/nextjs-dynamic-server-usage · framework · 2 sources · verified 2026-08-08 · DynamicServerError
nginx 413: Request Entity Too Large on upload
evidence: mediumnginx refused the request body because it exceeded client_max_body_size, which defaults to just 1 MB. The trap is that several layers can each impose their own limit, and raising it in the application changes nothing when the proxy in front rejects the body first.
/k/nginx-413-request-entity-too-large · networking · 2 sources · verified 2026-08-08 · 413
nginx 502 Bad Gateway: upstream returned an invalid response
evidence: mediumnginx reached your application and did not get a usable answer back. The status says nothing about why — that is in nginx's own error log, which names the upstream, the syscall that failed and the reason, and reading it turns guesswork into one lookup.
/k/http-502-bad-gateway-nginx · networking · 2 sources · verified 2026-08-08 · 502
Node.js ERR_REQUIRE_ESM: require() of an ES Module is not supported
evidence: mediumA CommonJS file tried to require() an ES module. Since Node 22.12 this is allowed for modules that are fully synchronous, so on a current runtime the error usually means the module contains top-level await — a different failure that most advice about this error predates.
/k/node-err-require-esm · language · 2 sources · verified 2026-08-08 · ERR_REQUIRE_ESM ERR_REQUIRE_ASYNC_MODULE
Node.js FATAL ERROR: JavaScript heap out of memory
evidence: mediumV8 hit its heap ceiling and gave up. Two different ceilings can cause it — V8's own --max-old-space-size and the container's memory limit — and they fail differently. Raising the wrong one either does nothing or gets the process killed instead.
/k/node-javascript-heap-out-of-memory · language · 2 sources · verified 2026-08-08 · ERR_WORKER_OUT_OF_MEMORY
Npgsql PostgresException 22001: value too long for type character varying(n)
evidence: highPostgreSQL rejects the write because a string exceeds the column's declared length. The error names the type and the limit but not the column, so the practical work is identifying which parameter overflowed — and PostgreSQL counts characters, not bytes.
/k/npgsql-22001-string-data-right-truncation · database · 4 sources · verified 2026-08-07 · 22001 string_data_right_truncation
npm ERESOLVE: unable to resolve dependency tree
evidence: mediumTwo packages demand incompatible versions of the same peer dependency and npm refuses to guess. The two flags everyone reaches for are not equivalent: --legacy-peer-deps ignores peer constraints entirely, while overrides pins one version deliberately. Only the second leaves a tree you can reason about.
/k/npm-eresolve-peer-dependency · language · 2 sources · verified 2026-08-08 · ERESOLVE
OAuth error redirect_uri_mismatch: redirect URI is not registered
evidence: highThe authorization server compares the redirect_uri you sent against the registered one with simple string comparison — byte for byte. A trailing slash, a different port, or http instead of https makes two URIs that look the same to a human not equal, and the spec requires the server to reject them.
/k/oauth-redirect-uri-mismatch · security · 3 sources · verified 2026-08-08 · redirect_uri_mismatch invalid_request
PostgreSQL error 40P01: deadlock detected
evidence: highTwo transactions each hold a lock the other wants, so PostgreSQL aborts one to break the cycle. Which one it kills is not predictable, so the fix is never in error handling alone — it is acquiring locks in a consistent order, plus retrying the victim.
/k/postgres-40p01-deadlock-detected · database · 3 sources · verified 2026-08-08 · 40P01 deadlock_detected
PostgreSQL error 42P01: relation does not exist
evidence: highThe table usually exists. PostgreSQL looked for it along search_path and did not find it there, or the name was folded to lower case and no longer matches a table created with capitals. Both cases report the same error as a genuinely missing table.
/k/postgres-42p01-relation-does-not-exist · database · 3 sources · verified 2026-08-08 · 42P01 undefined_table
PostgreSQL error 53300: sorry, too many clients already
evidence: highEvery connection slot is taken. Raising max_connections is the obvious move and usually the wrong one — each slot costs memory whether it is working or idle. The real question is why so many connections exist, and the answer is almost always pool size multiplied by instance count.
/k/postgres-53300-too-many-connections · database · 3 sources · verified 2026-08-07 · 53300 too_many_connections
Python ModuleNotFoundError: No module named 'x'
evidence: mediumPython looked along sys.path and did not find the module. Which directories are on that path depends on how the interpreter was started — not on where you are standing in the shell — and that is why the same code runs one way and fails another.
/k/python-modulenotfounderror · language · 2 sources · verified 2026-08-08 · ModuleNotFoundError
React hydration failed: server HTML did not match the client
evidence: highHydration compares the server-rendered HTML against the first client render and fails when they differ. The cause is almost always one of three things: HTML the browser silently restructured, rendering logic that branches on the environment, or a value that changes between the two renders.
/k/nextjs-react-hydration-mismatch · framework · 4 sources · verified 2026-08-07 · 418 423 425
React re-render loop: Too many re-renders or Maximum update depth exceeded
evidence: highA state update is triggering a render that triggers the same update again. The two error messages point at different halves of the problem — one means state is set during render, the other means an Effect is updating a value it also depends on — and neither names the component responsible.
/k/react-infinite-render-loop · framework · 3 sources · verified 2026-08-07 · 185
SSL certificate verify failed: unable to get local issuer certificate
evidence: mediumThe client could not build a trust chain from the server's certificate to a CA it trusts. Usually the server is not sending its intermediate certificate, or the client has no CA store at all — and the two look identical from the error message while needing opposite fixes.
/k/ssl-certificate-verify-failed · security · 2 sources · verified 2026-08-08 · CERTIFICATE_VERIFY_FAILED UNABLE_TO_GET_ISSUER_CERT_LOCALLY SELF_SIGNED_CERT_IN_CHAIN
Stripe API returns 429 Too Many Requests
evidence: highStripe returns 429 for two unrelated reasons: you exceeded a rate or concurrency limit, or you hit an object lock timeout. The Stripe-Rate-Limited-Reason header tells you which, and only one of them is fixed by slowing down.
/k/stripe-429-rate-limit · api · 3 sources · verified 2026-08-07 · 429 lock_timeout
## For agentsstable, parseable renditions
Append an extension to any knowledge object URL to get it in a machine-readable form. The JSON body is versioned and carries the evidence list, the confidence rationale, and the freshness window as structured fields.
GET https://knowbase.sh/k/<slug>.json application/json
GET https://knowbase.sh/k/<slug>.md text/markdown
GET https://knowbase.sh/k/<slug>.txt text/plain
GET https://knowbase.sh/llms.txt index of every entryNo API key, no rate limit, CC-BY-4.0. Attribution is the canonical URL of the entry.