A 20-year-old bug in Grand Theft Auto: San Andreas, related to how the game handles specific low-level keyboard input, resurfaced in Windows 11 24H2. This bug, originally present in the 2005 release, causes the game to minimize when certain key combinations are pressed, particularly involving the right Windows key. The issue stemmed from DirectInput, a now-deprecated API used for game controllers, and wasn't previously problematic because older versions of Windows handled the spurious messages differently. Windows 11's updated input stack now surfaces these messages to the game, triggering the minimize behavior. A workaround exists by using a third-party DirectInput wrapper or running the game in compatibility mode for Windows 7.
eBPF program portability can be tricky due to differences in kernel versions and configurations. The blog post highlights how seemingly minor variations, such as a missing helper function or a change in struct layout, can cause a program that works perfectly on one kernel to fail on another. It emphasizes the importance of using the bpftool
utility for introspection, allowing developers to compare kernel features and identify discrepancies that might be causing compatibility issues. Additionally, building eBPF programs against the oldest supported kernel and strategically employing the LINUX_VERSION_CODE
macro can enhance portability and minimize unexpected behavior across different kernel versions.
The Hacker News comments discuss potential reasons for eBPF program incompatibility across different kernels, focusing primarily on kernel version discrepancies and configuration variations. Some commenters highlight the rapid evolution of the eBPF ecosystem, leading to frequent breaking changes between kernel releases. Others point to the importance of checking for specific kernel features and configurations (like CONFIG_BPF_JIT
) that might be enabled on one system but not another, especially when using newer eBPF functionalities. The use of CO-RE (Compile Once – Run Everywhere) and its limitations are also brought up, with users encountering problems despite its intent to improve portability. Finally, some suggest practical debugging strategies, such as using bpftool
to inspect program behavior and verify kernel support for required features. A few commenters mention the challenge of staying up-to-date with eBPF's rapid development, emphasizing the need for careful testing across target kernel versions.
Microsoft's older USB mice often included a small USB-to-PS/2 adapter. This adapter wasn't just a passive wiring converter; it contained active circuitry that translated USB signals into PS/2 signals. This allowed the mouse to function on computers with only PS/2 ports, and importantly, enabled support for the "Wake-on-Mouse" feature in some systems, which required a PS/2 connection. The adapter effectively made the USB mouse appear as a PS/2 device to the computer's BIOS, enabling this functionality even on motherboards lacking USB wake support. Therefore, discarding the seemingly insignificant adapter meant losing the potential for wake-on-mouse capabilities.
Hacker News users discuss the intricacies of the Microsoft USB-to-PS/2 adapter, focusing on its active conversion of USB signals to PS/2 rather than simple pin mapping. Several commenters praise the adapter's sophistication, highlighting its ability to handle higher polling rates than standard PS/2 and even emulate multiple PS/2 devices from a single USB port. Some express surprise at learning this detail, having previously assumed passive conversion. Others reminisce about similar PS/2 to serial port adapters, while some debate the technical challenges and cleverness of the implementation. The discussion touches on the historical context of transitioning between these technologies, the complexities of bidirectional communication, and the surprising amount of intelligence packed into this seemingly simple adapter.
The blog post argues that the current approach to software versioning and breaking changes, particularly the emphasis on Semantic Versioning (SemVer), is flawed. It contends that breaking changes are inevitable and often subjective, making strict adherence to SemVer impractical and sometimes misleading. Instead of focusing on meticulously categorizing every change, the author proposes a simpler approach: clearly document all changes, regardless of their perceived impact, and empower users with robust tooling to navigate and manage these changes effectively. This includes tools for automated code modification and comprehensive diffing, enabling developers to adapt to changes smoothly even without perfect backwards compatibility. The core message is that thoughtful documentation and effective tooling are more valuable than rigidly adhering to a potentially arbitrary versioning scheme.
Hacker News users generally agreed with the author's premise that breaking changes are often overemphasized, particularly in the context of libraries. Several commenters highlighted the importance of semantic versioning as a tool for managing change, not a rigid constraint. Some suggested that breaking changes are sometimes necessary for progress and that the cost of avoiding them can outweigh the benefits. A compelling point raised was the distinction between breaking changes for library authors versus application developers, with more leniency afforded to applications. Another commenter offered an alternative perspective, suggesting the "silly" aspect is actually the over-reliance on libraries instead of building simpler solutions in-house. Others noted the prevalence of "dependency hell" caused by frequent updates, even without breaking changes. Finally, the inherent tension between maintaining backwards compatibility and improving software was acknowledged as a complex issue.
The article explores using a 9eSIM SIM card to enable eSIM functionality on devices with only physical SIM slots. The 9eSIM card acts as a bridge, allowing users to provision and switch between multiple eSIM profiles on their device through a companion app, effectively turning a physical SIM slot into an eSIM-capable one. The author details their experience setting up and using the 9eSIM with both Android and Linux, highlighting the benefits of managing multiple eSIM profiles without needing a physically dual-SIM device. While the process isn't entirely seamless, particularly on Linux, the 9eSIM offers a practical workaround for using eSIMs on older or incompatible hardware.
Hacker News users discussed the practicality and security implications of using a 9eSIM to bridge the gap between eSIM-only services and devices with physical SIM slots. Some expressed concerns about the security of adding another layer into the communication chain, questioning the trustworthiness of the 9eSIM provider and the potential for vulnerabilities. Others were skeptical of the use case, pointing out that most devices support either physical SIM or eSIM, not both simultaneously, making the 9eSIM's functionality somewhat niche. The lack of open-source firmware for the 9eSIM also drew criticism, highlighting the difficulty in independently verifying its security. A few commenters saw potential in specific situations, such as using the 9eSIM as a backup or for managing multiple eSIM profiles on a single physical SIM device. Overall, the sentiment was cautiously curious, with many acknowledging the cleverness of the solution but remaining hesitant about its real-world security and usefulness.
Summary of Comments ( 48 )
https://news.ycombinator.com/item?id=43772311
Commenters on Hacker News discuss the GTA San Andreas bug triggered by Windows 11 24H2, mostly focusing on the technical aspects. Several highlight the likely culprit: a change in how Windows handles thread local storage (TLS) callbacks, specifically the order of execution. One compelling comment notes the difficulty in debugging such issues, as the problem might not lie within the game's code itself, but rather in the interaction with the OS, making it hard to pinpoint and fix. Others mention the impressive longevity of the game and express surprise that such a bug could remain hidden for so long, while some jokingly lament the "progress" of Windows updates. A few commenters share their own experiences with similar obscure bugs and the challenges they posed.
The Hacker News post discussing a 20-year-old bug in GTA San Andreas surfacing in Windows 11 24H2 has several comments exploring the technical aspects and implications of the issue.
One commenter highlights the complexity of software interactions, pointing out how a seemingly unrelated change in the operating system can unexpectedly trigger dormant bugs in older applications. They emphasize the difficulty in predicting such issues, especially in large and intricate systems like Windows and a game as complex as GTA San Andreas.
Another comment delves into the specifics of the bug, explaining how the change in Windows 11's handling of specific instructions, particularly related to floating-point operations and denormalized numbers, led to the game's malfunction. This explanation provides a technical understanding of why the bug only surfaced after the Windows update.
Several commenters discuss the challenges faced by developers in maintaining backward compatibility, especially over such long periods. They note that anticipating all possible interactions between a game and future operating system updates is practically impossible. The idea of "bit rot," where software gradually degrades over time due to changes in the surrounding technological environment, is also mentioned.
One commenter mentions a similar experience with another older game, illustrating that this kind of issue isn't unique to GTA San Andreas and highlighting the broader challenge of preserving software functionality across evolving platforms.
There's a discussion about the nature of denormalized numbers and their impact on performance. One commenter questions the practical necessity of handling denormalized numbers in modern hardware and software, suggesting that their support might be more trouble than it's worth in some contexts.
Finally, a few commenters offer potential workarounds for the issue, such as disabling hardware acceleration or using compatibility modes in Windows 11. These suggestions provide practical solutions for users affected by the bug while waiting for a permanent fix.