Hacker News

Top stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. Cloudflare Quick Tunnels(cloudflare.com ↗)
    72comments
  2. An Empirical Study of Harness Design for Coding Agents(arxiv.org ↗)
    32comments
  3. North Korean nuclear test sets off years of earthquakes(science.org ↗)
    44comments
  4. I vibed a proof of Conway's conjecture(overreacted.io ↗)
    80comments
  5. OpenJev(openjev.com ↗)
    197comments
  6. Show HN: Microsoft Office running with Wine on Linux with no virtualization(github.com/tombert ↗)
    7comments
  7. GrassLobster: AI Agentic Generation of Parametric Geometry Workflows(miro.vision ↗)
    discuss
  8. C++26: Trivial infinite loops are no longer undefined behaviour(sandordargo.com ↗)
    72comments
  9. Show HN: Cactus Needle 3: 8-29MB automation models can match DeepSeek V4 Flash(cactuscompute.com ↗)
    1comments
  10. Mathematicians Build Long-Awaited Graph Sandwich(quantamagazine.org ↗)
    discuss
  11. I don't like passkeys(hawksley.dev ↗)
    447comments
  12. A heap overflow and SSO misconfiguration to compromise OpenAI internal repos(hacktron.ai ↗)
    175comments
  13. US Treasuries Have Become Unappetizing for Foreign Central Banks and Governments(wolfstreet.com ↗)
    9comments
  14. The Shadows Lurking in the Equations – Underwater Islands(gods.art ↗)
    8comments
  15. Cekura (YC F24) Is Hiring(ycombinator.com ↗)
    discuss
  16. NATS publishes preliminary report on technical incident of 8 September(nats.aero ↗)
    17comments
  17. Jemalloc 5.4.0(github.com/jemalloc ↗)
    69comments
  18. Build Faster Feedback Loops Using Qualitative User Research(nseldeib.com ↗)
    discuss
  19. The scourge of x86 emulation(fex-emu.com ↗)
    65comments
  20. Warren Buffett Steps Down as Berkshire Chairman, Names Son to Replace Him(nytimes.com ↗)
    136comments
  21. Bonsai 2 27B: Near-Lossless Compression in a 9x Smaller Footprint(prismml.com ↗)
    172comments
  22. Show HN: Scry, programmable internet search w/ congestion pricing(scry.io ↗)
    discuss
  23. AI is an elite crime spree(thebignewsletter.com ↗)
    9comments
  24. Second Circuit Allows Government to Search Electronic Devices at the Border(knightcolumbia.org ↗)
    28comments
  25. Qwen 3.8 Omni Flash(qwen.ai ↗)
    107comments
  26. Microsoft exec called AI scraping 'the largest theft of labor in human history'(techcrunch.com ↗)
    588comments
  27. How to Write with an LLM(sockpuppet.org ↗)
    177comments
  28. BeanShell3 in Development(beanshell.github.io ↗)
    8comments
  29. Pre-Greek: The lost language hidden within Ancient Greek(linguisticdiscovery.com ↗)
    58comments
  30. When the fractional part of a float fixes your shader(crocidb.com ↗)
    16comments

NATS publishes preliminary report on technical incident of 8 September

30 pointsby 3h agonats.aero
17 comments
1h agoHN ↗

Note: NATS the UK airspace manager, not NATS the pubsub system.

58m agoHN ↗

And here I was surprised they would use NATS in their implementation to assign squawk codes.

1h agoHN ↗

The incident was triggered by a valid manual request for a squawk code. This manual request was made correctly and there was nothing abnormal or invalid about the associated flight plan.

While this request was being processed, the NAS received a message for a higher priority activity to be undertaken which resulted in the squawk code allocation being paused while the system processed the higher priority message. Switching between different activities in response to prioritised requests is a normal function of the system; however, when the processing of the squawk allocation request resumed, the software defect meant it did not resume correctly and the resulting output was corrupted.

The reason this scenario has not occurred before is because:

1. The defect existed in a specific subsection of code within a software module, with an exposure window estimated as approximately one millisecond.

2. For the fault to occur, a higher-priority request had to arrive during that exact millisecond while the original request was part-way through updating a value.

3. Had the higher-priority request arrived even one millisecond earlier or later, the update would have completed normally.

Post-incident investigation has identified that when processing of the squawk allocation request resumed, the data associated with it had been corrupted and affected some subsequent flight data updates.

51m agoHN ↗

3. Had the higher-priority request arrived even one millisecond earlier or later, the update would have completed normally.

Well, that's comforting to know.

BBC: "Flight chaos caused by software defect in space of a millisecond, report says"

Sky: "'Millisecond' software error caused air traffic outage that grounded thousands of flights"

The Guardian: "Flight chaos for hundreds of thousands was caused in ‘millisecond’ by software error"

Sounds like pure bad luck.

42m agoHN ↗

Testing isn't an effective way to catch most race conditions. Code reviews, static analysis, and rigorous enforcement of concurrent coding standards is usually a better approach.

32m agoHN ↗

Perhaps something like what TigerBeetle does: deterministic simulation testing.

39m agoHN ↗

Or maybe even just reviewing logic that is subject to pre-emption.

Maybe I'm being too harsh.. on the plus side the system has at least failed hard every time there's been a fault. Nobody has died. But it's been 3 times now in the past couple of years, and two of those times resulted in over 2000 flights cancelled and days of backlog, and misery for hundreds of thousands. It's really not acceptable.

29m agoHN ↗

the system has at least failed hard every time there's been a fault

You don't know that.

21m agoHN ↗

Safety critical systems demand formal verification. This wasn't bad luck, this was poor craft.

30m agoHN ↗

Therac-25 called and wants its bug back.

Seriously, for 2026 this is pure amateur hour with no excuse.

4m agoHN ↗

Very interesting. I spent a large part of my career in aerospace and never considered this failure mode before. It makes me wonder: how long is the pathological code allocation time? A few seconds, at most? We're talking about flight identification codes that are normally assigned upon takeoff and change at most a handful of times during a flight.

I assume the "manual request" is an aircraft squawking 7700 or similar, but why does the system need to interrupt an in-flight allocation in the first place? Any controllers here have insight?

One would think it would be sufficient to do something like

    if(!highPriorityQueue.empty() {
        highPriortyQueue.processOne();
    } else if(!lowPriorityQueue.empty()) {
        lowPriorityQueue.processOne();
    }

or whatever, but they're not and I'm curious why.

1h agoHN ↗

Interesting! Looks like a race condition (with a 1ms window) during squawk allocation (the process that gives each aircraft a 4 digit identifier for ATC purposes) caused data corruption. They present that window as being small but 1ms is a decent chunk of time in our work lol

54m agoHN ↗

More specifically: it sounds like something which was supposed to be an atomic operation was split into two by the preempting task, with corruption happening because that task also interacted with the same piece of (now-temporarily-invalid) data.

59m agoHN ↗

Would be interesting if the report actually got into the details. The curiously specific "approx. 1ms window" sounds like an off-the-shelf memory race condition in combination with a preempting thread, for which 1ms is an absolute eternity and Guaranteed To Happen By Tuesday This Week™. But the "database corruption" sounds like database IDs being generated from timestamps with 1ms granularity.

30m agoHN ↗

They might have to switch to ULID or similar.