A developer recounts the challenge of fixing floating-point math emulation for the VAX port of OpenBSD, detailing how subtle bugs in the kernel's FP software caused hard-to-diagnose failures and required deep understanding of both VAX hardware and the emulator code.
#debugging
22 items
Valgrind version 3.27.0 has been released. This update includes various bug fixes and improvements to the debugging and profiling tool for Linux applications.
The article discusses how vector math libraries can generate optimized code even in debug builds, exploring techniques to maintain performance while preserving debugging capabilities. It examines approaches that allow developers to benefit from vectorization during development without sacrificing debuggability.
Dunetrace is a tool for runtime failure detection in AI agents. It monitors agent execution to identify and report failures as they occur during operation.
Troubleshooting.sh is a tool that allows users to paste any error message and receive a fix with the root cause explained. The service analyzes error logs to provide solutions and explanations for technical issues.
The article argues that the current debugging process in robotics is inefficient and broken. It highlights how developers spend excessive time on repetitive debugging tasks that slow down innovation. The piece suggests that better tools and approaches are needed to improve the robotics development workflow.
The article discusses test case minimization techniques, explaining how to reduce failing test cases to their minimal form for easier debugging. It covers approaches like delta debugging and bisection to isolate the root cause of failures.
A developer created a CLI tool called Trawl to extract amusing and frustrating moments from AI agent session logs. The tool works with Claude Code and Codex, and examples show agents making authentication errors, humorous exchanges, and technical mistakes. Future plans include adding support for more AI platforms and improving anonymization features.
Pinterest engineers discovered CPU bottlenecks caused by "zombie" processes in their systems. These processes were consuming resources without performing useful work, leading to performance issues. The team implemented monitoring and cleanup mechanisms to address the problem.
A developer discovered a 34-year-old pointer bug in EtherSlip, a DOS networking driver. The bug caused memory corruption and crashes when handling ARP packets. The issue was traced to incorrect pointer arithmetic in the ARP packet processing code.
The author encountered streaming issues over a VPN due to packet size limitations. They discovered Fastly's CDN was ignoring ICMP packets that indicated packets were too large for the VPN's MTU. After reporting the issue, Fastly's engineering team fixed the problem.
The article provides debugging tips for hanging Go programs, including using Ctrl+\ (SIGQUIT) to print stack traces and attaching the delve debugger to analyze running processes. It demonstrates these techniques through a real-world example where an rsync receiver was incorrectly expecting uid/gid data.
The article discusses debugging techniques, emphasizing systematic approaches to identify and fix software bugs. It highlights the importance of understanding the problem before attempting solutions.
The article details debugging USB boot issues on the original 2008 OMAP3530 BeagleBoard using a sniffer. It describes fixing the omap_loader tool to work with modern PCs by addressing compatibility problems encountered during kernel development.
The article explains that when a C++ compiler reports an error about code you didn't write, you should investigate who actually wrote that code. This helps in understanding misleading error messages like "illegal use of ->" when no arrow operator appears in your source.
The article explains that a long delay between a thread exiting and WaitForSingleObject returning may occur because the thread hasn't actually fully exited yet. The system may still be performing cleanup operations after the thread's execution has completed.
The article discusses window message 0x0091 being received with unexpected parameters, describing it as trespassing on system messages. It appears on The Old New Thing blog from Microsoft.
The article provides guidance on effectively interpreting error messages, especially those from operating systems and networks. It is adapted from a talk the author gave to colleagues.
The article details the author's historical mistakes in implementing loop detection algorithms for graphs while developing puzzle games. It serves as a cautionary guide about common pitfalls in graph traversal and cycle detection.
Redis developer antirez investigated crash reports involving radix tree memory access errors. The issue was traced to a read overflow bug that had already been fixed months earlier but wasn't properly backported. The investigation revealed valuable lessons about crash reporting, fuzz testing, and assembly-level debugging for system software.
The article explains how to use J-Link RTT (Real Time Transfer) for debugging embedded projects on ARM microcontrollers. It describes this as an alternative to traditional debugging methods like pin toggling or file-system logging, offering a way to send and receive data through semihosting with minimal code.
GDB's JIT interface allows debugging JIT-compiled code by registering debug information. The traditional method requires generating in-memory ELF/Mach-O objects, while a newer custom interface uses specialized readers. Many projects implement these interfaces to enable proper debugging of JIT code.