C & C++ Errors
Segfaults, linker errors, memory corruption and template deduction failures.
Understanding C++ errors
C++ errors fall into two very different worlds. Compile and link errors (undefined reference, multiple definition, template substitution failure) are deterministic and are almost always about declarations, the One Definition Rule, or link order. Runtime memory errors (segfaults, double free, use-after-free) are non-deterministic and should never be debugged by reading code alone; a sanitizer will find in seconds what code review misses for days.
How to debug C++ errors
- Rebuild with sanitizers before anything else:
-fsanitize=address,undefined -fno-omit-frame-pointer -g. AddressSanitizer reports the exact allocation and free sites for use-after-free and double-free. - For undefined-reference errors, check link order, remembering that with GNU ld libraries must come after the objects that use them, and check for a C/C++ linkage mismatch that needs
extern "C". - Use
nm -C libfoo.a | grep symbolto confirm the symbol is actually present and to see the demangled signature. A signature that differs by aconstis a different symbol. - Enable core dumps (
ulimit -c unlimited) and open them in gdb withgdb ./binary core, thenbt full. A stack trace beats speculation. - For template errors, read the message from the bottom up. The final line is usually the real constraint that failed; everything above is instantiation context.
Tools worth reaching for
-fsanitize=address,undefinedvalgrindgdb / lldbnm -Cldd
All 20 C++ errors
- C++: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.32' not found NewThe binary was built with a newer GCC than the machine it is running on, and it needs a libstdc++ symbol version the…
- C++: error: 'format' is not a member of 'std' Newstd::format is C++20 and lives in , which needs both the C++20 flag and a recent enough standard library: GCC 13…
- C++: error: 'uint8_t' does not name a type NewThe file uses fixed-width integer types without including , and only ever compiled because another standard header…
- C++: error: invalid use of incomplete type 'class Foo' NewThe compiler has seen a forward declaration of Foo but not its definition, and this line needs the full layout…
- C++: error: use of deleted function NewThe code tries to call a function that has been explicitly deleted, and nine times out of ten that function is a copy…
- C++: pure virtual method called, terminate called without an active exception NewA pure virtual function was called through an object whose derived part does not exist at that moment. It almost…
- C++: relocation R_X86_64_32S can not be used when making a shared object NewA shared library must be loadable at any address, so every object in it needs position independent code. The object…
- C++: runtime error: signed integer overflow (UBSan) NewSigned integer overflow is undefined behaviour in C and C++. The program may appear to work for years and then…
- C++: Segmentation fault (core dumped)Program attempted to access memory it doesn't own (e.g., dereferencing null pointer, buffer overflow, or stack…
- C++: terminate called after throwing an instance of 'std::bad_alloc' NewAn allocation asked for more memory than the allocator could provide, nothing caught the exception, and the runtime…
- C++: undefined reference to `vtable for X' NewThis is not a missing call to the named function. The compiler emits a class's vtable alongside the definition of its…
- CMake Error: Compatibility with CMake < 3.5 has been removed from CMake. NewCMake 4.0 dropped support for projects that declare cmake_minimum_required below 3.5. The code is unchanged; your…
- CMake Error: Could not find a package configuration file provided by X Newfind_package looked for a config file the library installs, XConfig.cmake or x-config.cmake, and no directory it…
- double free or corruptionHeap memory was freed twice, corrupting the memory allocator. Often caused by manual delete on already-freed memory or…
- heap-use-after-freeAccessing memory after it has been freed. Detected by AddressSanitizer. Causes undefined behaviour and potential…
- LeakSanitizer: detected memory leaks NewLeakSanitizer runs when the process exits and reports heap blocks that nothing points to any more. It is on by default…
- multiple definition of 'symbol'The same symbol is defined in multiple translation units. Usually caused by defining functions/variables in headers…
- stack-buffer-overflowA write exceeded the bounds of a stack-allocated buffer. Detected by AddressSanitizer or causing a crash/segfault.
- template argument deduction/substitution failedThe compiler could not deduce template arguments from the function call or the substituted types are invalid (SFINAE).
- undefined reference to 'function'The linker cannot find the definition of a function or variable that was declared. The source file may not be compiled…
Other categories
- AI 35Rate limits, context windows, GPU memory and model-serving failures.
- Ansible 18Unreachable hosts, become passwords, undefined variables and Jinja2 failures.
- API 20Auth headers, payload limits, versioning, idempotency and webhook signatures.
- Apple 20Command line tools, dyld, Homebrew permissions, notarisation and Keychain.
- Auth 20OIDC, SAML, Auth0, Okta, Keycloak, passkeys and MFA failures.
- BigData 17Spark, Kafka, Airflow, Snowflake, Flink and Databricks failures.
- C# 18NuGet restore, null references, EF Core migrations, async deadlocks and Blazor…
- Caching 20Cache stampedes, stale content, Varnish and CloudFront failures.
- CI/CD 18GitHub Actions, GitLab CI, Jenkins, CircleCI: permissions, runners and…
- Client 21CORS, mixed content, module resolution, memory limits and framework runtime…
- Cloud 25IAM permissions, quotas, service limits and credential failures.
- Dart 20Null safety, pub version solving and build toolchain problems.
- Database 41Connections, deadlocks, constraints, replication and memory limits.
- DNS 20NXDOMAIN, SERVFAIL, timeouts, propagation and delegation problems.
- Docker 27Daemon connectivity, disk space, image pulls, ports and architecture mismatches.
- Elixir 18GenServer timeouts, supervision failures and Mix compilation problems.
- Email 20Delivery failures, relay denial, authentication, SPF, DKIM and DMARC.
- Frontend 23Hydration mismatches, bundler resolution, layout shift and font loading.
- Git 20Merge conflicts, rejected pushes, detached HEAD, LFS and repository corruption.
- Go 19Nil map assignment, concurrent map access, context cancellation and deadlocks.
- GraphQL 19Validation, depth limits, N+1 queries and fragment problems.
- gRPC 17Status codes, deadlines, message limits, TLS and HTTP/2 transport failures.
- HTTP 494xx client errors, 5xx server errors, redirects, headers and protocol problems.
- ICMP 23Destination unreachable, time exceeded, fragmentation needed and redirects.
- Ingress 20404 default backend, missing TLS secrets, IngressClass and path matching.
- Java 19Class loading, dependency resolution, connection pools and JVM version…
- JavaScript 42npm resolution, async pitfalls, hydration, memory limits and runtime type…
- Kubernetes 34CrashLoopBackOff, ImagePullBackOff, OOMKilled, RBAC, scheduling and storage.
- Logging 18Log4j, Logback, Fluentd, Logstash and CloudWatch ingestion problems.
- MessageQueue 20Kafka, RabbitMQ, SQS, NATS and Celery: lag, rebalancing and poison messages.
- Mobile 20Gradle, CocoaPods, Xcode signing, Metro bundler and toolchain mismatches.
- Monitoring 18Prometheus scrapes, Grafana data sources, OpenTelemetry exporters and agent…
- Network 35Refused connections, timeouts, resets, MTU problems and port exhaustion.
- Performance 19GC pauses, thread pool starvation and event loop blocking.
- PHP 20Memory limits, execution timeouts, autoloading, Composer and PDO connections.
- Proxy 20nginx, Envoy, HAProxy, Traefik, Caddy and Cloudflare upstream failures.
- Python 35Imports, virtual environments, encoding, concurrency and dependency conflicts.
- Regex 17Catastrophic backtracking, back references, escaping and engine differences.
- Ruby 20Bundler, migrations, native extensions, encoding and asset compilation.
- Rust 19Borrow checker, ownership moves, trait bounds and lifetime mismatches.
- Scala 17Dependency resolution, binary compatibility and type inference failures.
- Security 25JWT validation, CSRF, OAuth grants, SELinux, SSH host keys and CSP.
- Serverless 20Lambda timeouts, package size limits, VPC networking and cold starts.
- Shell 19Command not found, permissions, quoting, expansion and Makefile syntax.
- Storage 19S3 permissions, NFS mounts, quotas, signed URLs and volume attachment.
- Svelte 20Store subscriptions, load functions and server/client boundaries.
- System 26Disk space, systemd units, file descriptors, OOM killer and scheduled jobs.
- Terraform 18State locks, provider auth, drift, dependency cycles and plan-time unknowns.
- Testing 18Jest, pytest, JUnit, Cypress and Playwright: fixtures, snapshots and timeouts.
- TLS 24Untrusted authorities, expiry, hostname mismatch, chains and cipher negotiation.
- TypeScript 19Assignability, missing declarations, strict null checks and generic constraints.
- Virtualization 20VirtualBox, VMware, Hyper-V, WSL, KVM and hypervisor conflicts.
- Web3 17Gas estimation, nonce management and reverted transactions.
- WebAssembly 17Compile errors, memory bounds and host binding mismatches.
- WebServer 20nginx, Apache, IIS and Caddy: binding, permissions, rewrites and TLS.
- Windows 20Installer failures, missing runtimes, update errors and permission problems.