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.
A Reddit post warned Cursor IDE users about a misleading error message claiming their account was locked due to multiple logins. The message, appearing for some users even when they were only logged in on one device, falsely stated that their account was disabled and prompted them to contact support. This erroneous "lockout policy" led to confusion and user cancellations, as people believed they were genuinely blocked from using the IDE. The Cursor team acknowledged the issue, clarifying that no such lockout policy exists and attributing the problem to a bug. They assured users that their accounts were safe and worked to resolve the misleading error.
HN commenters were largely critical of Cursor's handling of the situation. Several pointed out the poor communication, with the "single device" restriction not being clearly conveyed and the error message misleadingly suggesting a lockout due to suspicious activity. Some saw this as a classic example of premature optimization, arguing that preventing multiple logins offered minimal benefit while alienating users. Others speculated about the technical reasons behind the restriction, suggesting it might be related to the complexity of maintaining shared state in Cursor's collaborative features. The overall sentiment was that this incident damaged Cursor's reputation and highlighted a lack of user empathy in their decision-making process.
Reverse engineering of Shenmue's source code revealed that the sun's position in the game is calculated using a simplified formula that doesn't account for axial tilt or the equation of time. This results in the sun rising and setting slightly earlier than it should in the game's real-world counterpart of Yokosuka, Japan, across all in-game dates. While noticeable, this discrepancy doesn't significantly impact gameplay and may have been a deliberate simplification for performance reasons on the Dreamcast. The author speculates whether it qualifies as a "bug" given its likely intentional nature and minimal effect on the overall experience.
Hacker News users discuss whether the perceived sun position error in Shenmue is actually a bug or a deliberate design choice. Some commenters suggest it's a performance optimization, avoiding complex calculations for marginally improved visuals. Others argue it's simply a bug, pointing to inconsistencies with the in-game clock and world design. Several discuss the challenges of reverse engineering older games, particularly with limited documentation, and the difficulty of definitively labeling something a bug without access to the original source code and developer intentions. The discussion also touches on the nostalgic appeal of Shenmue and the dedication of its fan community in dissecting the game's intricacies.
A recent Clang optimization introduced in version 17 regressed performance when compiling code containing large switch statements within inlined functions. This regression manifested as significantly increased compile times, sometimes by orders of magnitude, and occasionally resulted in internal compiler errors. The issue stems from Clang's attempt to optimize switch lowering by transforming it into a series of conditional moves based on jump tables. This optimization, while beneficial in some cases, interacts poorly with inlining, exploding the complexity of the generated intermediate representation (IR) when a function with a large switch is inlined multiple times. This ultimately overwhelms the compiler's later optimization passes. A workaround involves disabling the problematic optimization via a compiler flag (-mllvm -switch-to-lookup-table-threshold=0) until a proper fix is implemented in a future Clang release.
The Hacker News comments discuss a performance regression in Clang involving large switch statements and inlining. Several commenters confirm experiencing similar issues, particularly when compiling large codebases. Some suggest the regression might be related to changes in the inlining heuristics or the way Clang handles jump tables. One commenter points out that using a constexpr
hash table for large switches can be a faster alternative. Another suggests profiling and selective inlining as a workaround. The lack of clear identification of the root cause and the potential impact on compile times and performance are highlighted as concerning. Some users express frustration with the frequency of such regressions in Clang.
Some websites display boxes instead of flag emojis in Chrome on Windows due to a font substitution issue. Windows uses its own Segoe UI Emoji font for most emoji, but defaults to a lower-quality bitmap font called "Segoe UI Symbol" specifically for flag emojis. This bitmap font lacks the necessary glyphs for many flag combinations, resulting in the missing emoji. Websites can force Chrome to use the correct, vector-based Segoe UI Emoji font by explicitly specifying it in their CSS, ensuring flags render properly.
Commenters on Hacker News largely discuss the technical details behind the issue, focusing on the surprising interaction between Chrome, Windows, and the specific way flags are rendered using two combined code points. Several point out the complexity and unexpected behaviors that arise from combining characters, particularly when dealing with different systems and fonts. Some users express frustration with the inconsistency and lack of clear documentation around emoji rendering. A few commenters offer potential workarounds or solutions, including using a fallback font or pre-rendering the flags as images. Others delve into the history and evolution of emoji standards and the challenges of maintaining compatibility across platforms. A compelling comment thread explores the tradeoffs between using the combined code points for flags versus using dedicated single code points, highlighting the performance implications and rendering complexities. Another interesting discussion revolves around the role of fonts and the challenges of designing fonts that support a rapidly expanding set of emojis.
Pixel 4a owners who haven't updated their phones are now stuck with a buggy December 2022 battery update as Google has removed older firmware versions from its servers. This means users can no longer downgrade to escape the battery drain and random shutdown issues introduced by the update. While Google has acknowledged the problem and promised a fix, there's no ETA, leaving affected users with no immediate solution. Essentially, Pixel 4a owners are forced to endure the battery problems until Google releases the corrected update.
HN commenters generally express frustration and disappointment with Google's handling of the Pixel 4a battery issue. Several users report experiencing the battery drain problem after the update, with some claiming significantly reduced battery life. Some criticize Google's lack of communication and the removal of older firmware, making it impossible to revert to a working version. Others discuss potential workarounds, including custom ROMs like LineageOS, but acknowledge the risks and technical knowledge required. A few commenters mention the declining quality control of Pixel phones and question Google's commitment to supporting older devices. The overall sentiment is negative, with many expressing regret over purchasing a Pixel phone and a loss of trust in Google's hardware division.
A quirk in the Motorola 68030 processor inadvertently enabled the Mac Classic II to boot despite its ROM lacking proper 32-bit addressing support. The Classic II's ROM mistakenly used a "MOVEA" instruction with a 32-bit address, which should have caused a failure on the 24-bit address bus. However, the 68030, when configured for a 24-bit bus, ignores the upper byte of the 32-bit address in this specific instruction. This unintentional compatibility allowed the flawed ROM to function, making the Classic II's boot process seemingly normal despite the underlying programming error.
Hacker News commenters on the Mac Classic II boot anomaly generally express fascination with the technical details and the serendipitous nature of the discovery. Several commenters delve into the specifics of 680x0 instruction sets and how an invalid instruction could inadvertently lead to a successful boot, speculating about memory initialization and undocumented behavior. Some share anecdotes about similar unexpected behaviors encountered during their own retrocomputing explorations. A few commenters also highlight the importance of such stories in preserving computer history and understanding the quirks of older hardware. The overall sentiment reflects appreciation for the ingenuity and occasional happy accidents that shaped early computing.
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.