How A Runaway Thief Shut Down Amsterdam’s Train Traffic By Exposing A Simple Software Bug

David Legrant
3 min readFeb 1, 2021

Most software has bugs, big or small. But not many bugs are as impactful as this one simple oversight…

Photo by Gwendal Cottin on Unsplash

It was August of 2018. A thief was running away from law enforcement at Schiphol Airport in Amsterdam, towards the underground railway station. As he ran on the tracks into a tunnel, he accidentally exposed a software bug that ruined the evening of about 70,000 travelers in the Amsterdam area.

As the thief ran onto the tracks, all train traffic has to be stopped to prevent a collision. Normally, this would cause a small delay, and after some time all trains can continue with their regular schedule, albeit with a small delay.

But not at Schiphol’s train station. At this station, the arrival platform where a train should stop is decided just before the train arrives. This system was implemented to save costs, as this allowed the tunnel towards the railway station to be smaller. Normally this system works just fine, and all trains get assigned a platform as soon as they pass a certain point in this tunnel.

However, when the thief entered this tunnel as well and the trains were stopped, one train happened to stop on this exact point in the tunnel, causing the system to think that trains were continuously arriving, and assigning these trains to platforms. After this had happened around 32,000 times, the system overflowed and broke down.

To prevent these kinds of malfunctions, a backup system was already in place. This wasn’t the first time a malfunction was about to disrupt the entire train schedule in a large area. However, this backup system was running on the same code, causing it to break down as well.

Photo by Chris Yang on Unsplash

And so it happened that one thief triggered a rare software bug that broke down the entire system that manages the train traffic around Amsterdam. Around 40 trains arrive and leave every 20 minutes in Amsterdam, causing this malfunction to have a ripple effect throughout the entire urban area around Amsterdam and leaving 70,000 travelers stranded.

Although not a pleasant experience for these travelers, this story shows the human side of software engineering. No matter how much work you put into testing software and considering every possible scenario when writing your code, the perfect storm of unforeseen circumstances might send your code into a downwards spiral you could’ve never expected.

But don’t worry. As long as your bugs don’t ruin the evening of more than 70,000 people, you should be fine. Embrace them, learn from them, and become a better developer because of them.

--

--