P
P
Pavel K2015-04-12 01:47:16
PHP
Pavel K, 2015-04-12 01:47:16

What are the saddest / most curious bugs in your practice (or which you know about)?

Now I read about therac-25 and about 11 thousand variables at the Tayota gas pedal, I remembered my epic bug - all the young men who were born on the 29th of any month were not called up by our native military enlistment office in the entire region N (I didn’t register the month in the condition)
And which ones did you have bugs? Or throw links for reading with debriefing :)

Answer the question

In order to leave comments, you need to log in

8 answer(s)
A
AndreyDmitriev, 2015-04-16
@AndreyDmitriev

I work in the field of industrial systems programming, so bugs rarely get to production (although there were quite funny ones on the verge of "mysticism", but they are unlikely to be of interest to the general public - there are a lot of tedious technical details).
Well, nevertheless, here are three stories from my practice.
History first. How cars are recalled.
It was minus twelve years ago.
I programmed the automatic non-destructive testing system. Freshly cast engine parts were moving along the conveyor, the robot took them from the conveyor, X-rays were scanned and the system performed a pass/fail rejection, then the robot laid them back on the conveyor for good ones or sent them for remelting. Computer speeds weren't what they are today, so the system consisted of five computers, four of which worked in a cluster to provide real-time machine vision. Each one ran a special software. I was a young and hot guy, I changed interfaces like gloves, and when implementing the next requirements of the customer, the software was updated. That, how the system will work in the presence of obsolete versions in the cluster did not check at all as unnecessary - after all, I went to the factory and personally performed a complete software update on all systems with all related tests. The installer on the internal server has also been updated, the old version has been removed. However, I did not know that a few weeks earlier, the purchasing department decided to arbitrarily "improve and simplify" the process of supplying computers - if earlier our service department received a "bare" computer and installed the software at our enterprise, sending the computer to the customer after checks, now the computer supplier received an image of the system from the purchasing department, rolled it onto a computer and sent it directly to the factory, bypassing our service department. Well, you understand - there was a long-outdated version of the software in the image. At some point, one of the computers failed - information about this was received by the service, which sent it to the purchasing department, and he, in turn, to the computer supplier, who simply put a new computer in the factory and the customer personally installed it in the rack (there we implemented "hot swap"). The call from the chief engineer caught up with me on Friday after a working day - he said that after analyzing the statistical data for the last couple of weeks, he found out that one of the systems had reduced the rejection rate from four to three percent and asked to control this matter. I connected to the system from home, downloaded the logs and quickly found out that one of the computers in the cluster did not reject a single picture at all in two weeks, the result of its work was always interpreted as "good". Approximately twenty thousand parts passed through the system during this time. Further, after checking the versions and compatibility, it became clear where the legs grow from. I performed a software update on a defective computer. I slept very badly on the weekend - I dreamed that I open a fresh newspaper and read about how the very famous concern XXX recalls twenty thousand cars due to possible defects in the cylinder head. On Monday, however, it turned out that potentially defective parts had not yet been sent for assembly and were in stock - some of them were allowed to be re-tested, and some were simply sent for remelting. The story ended happily, but taught a lot. as I open a fresh newspaper and read about how the very famous concern XXX is recalling twenty thousand cars due to possible defects in the cylinder head. On Monday, however, it turned out that potentially defective parts had not yet been sent for assembly and were in stock - some of them were allowed to be re-tested, and some were simply sent for remelting. The story ended happily, but taught a lot. as I open a fresh newspaper and read about how the very famous concern XXX is recalling twenty thousand cars due to possible defects in the cylinder head. On Monday, however, it turned out that potentially defective parts had not yet been sent for assembly and were in stock - some of them were allowed to be re-tested, and some were simply sent for remelting. The story ended happily, but taught a lot.
The second story. Three robots and a bottle of whiskey.
It was about ten years ago. I then programmed a funny ring conveyor at a foundry - imagine an octagon with a diameter of three meters, on each edge of which there are parts. One robot puts parts on it after sawing off the tides, then the octagon rotates, the second robot takes parts from it for checking, the octagon turns again, after checking the robot puts parts on it, it turns again, then the third robot removes parts from it for further processing or meltdowns. The highlight was to minimize downtime - if the robot had to lay out the part, it had to fit an empty edge, and if it picked up, then the edge with the part. All three robots work asynchronously. The "conveyor" itself It was a rather flimsy construction of aluminum profiles. The robots have an effort of several hundred kilograms, and at some point the robot laid the part on the edge, on which the part was already there - and the whole line stood up for a day, because the conveyor was completely mangled. We went to the factory, repaired the conveyor and checked the entire exchange protocol - there were no errors, but we added in some places a "double handshake" and several additional sensors for the presence of a part. A couple of months later, it happened again - this time the conveyor had not yet taken its position, and the robot laid out the part between the ribs and the conveyor was shattered. Again a business trip, new sensors, new checks ... It happened spontaneously, about once a quarter ... The conveyor itself was somewhat reminiscent of a tape measure - lucky / unlucky. A couple more months go by and I get ya mean
"... After the last software update, I argued with the director for a case of beer - he said that it would happen again, and I argued that Mr. Dmitriev is a very capable Russian programmer, able to find and fix a malfunction. And I lost. Now this happened again, and I lost a box of wine. Still, I want to bet again - now on a bottle of good whiskey, because I still believe in you - come and fix or at least find this damn malfunction."
In general, I was more than confident in my code - there the number of checks and "handshakes" went off scale, the entire conveyor was hung with sensors like a Christmas tree, in addition, with each incident, the code was refactored and licked again and again - I would have such code and could roll into a nuclear power plant. But I also depended on the code of the uploading robot and was completely sure that the robot sometimes uploads details without my permission at all. The subcontractor rolled the barrel in my direction, claiming that I set the appropriate permission bits and the robot reacted correctly. It was impossible to pin him to the wall with logs, so I did the following - I went to a nearby hardware store, bought a household video surveillance system there, connected the signals from the cameras to the free inputs of the frame grabber and started writing in the "black box" not only sensor signals and control signals, but also a video of what was happening on the conveyor. The problem was found quickly - the subcontractor programmed the "race condition" in one place, and in an unfortunate combination of circumstances, beyond my control, the multi-ton robot spontaneously laid out the details without demand, which made the structure unusable. The chief engineer did win his whiskey, and the subcontractor paid everyone for dinner at the tavern.
History the third. "Victory".
This was about twenty years ago. I worked then in the computer center of a very large St. Petersburg printing house. One evening, a customer came with a file made in a pagemaker (if anyone remembers), and asked to put this case on tape, and by morning. The order was urgent - they decided to print gift editions for veterans for the Victory Day. I had to stay on the night shift. The layout designer was a young girl with no work experience at all. Of course, she didn’t think of bringing the fonts, the layout was spreading, I had to control every page, and by morning I was almost gone. Finally, the work was almost finished - only the cover remained. There was only one word on the cover: VICTORY. I sent it to the printer, and something like "ĖĀĤĈĐĶ" came out. "The font has flown" - I said, sent the damaged film to the trash can, and brought out a new film, picking up a chopped typeface that was suitable in size and style. "Can I take this with me?" - the girl asked me, twisting the film pulled out of the wastebasket in her hands. "Yes, it's not a question," I said - I don't feel sorry for marriage. She placed the defective film on top of the pack and flew away. I got a light $%&*yul for the night shift without notifying my superiors, and I forgot to think about it.
A few weeks later, the director of the printing house calls me. Technologists, proofreaders are sitting at the table, and there is a pack of books. The director took one of the books from the pack, pushed it towards me and simply asked, "What is this?!" On the red velvet cover, embossed in gold, were the letters "ĖĀĤĈĐĶ". I started to laugh. I imagined how a printing worker casts a stamp with wonderful letters, how a hot stamping operator examines the cover, but nevertheless continues to release ... More than half of the deluxe edition was released until they stopped. "The font fell off," was all I could squeeze out of myself, remembering how the young creature pulls out the ill-fated film from the wastebasket and puts it on top of the finished pack of films. "What do you mean the font has flown off?!" growled the director. Uncle is already aged, he could not imagine how a compositor, even in his most drunken stupor, will take the first six letters that come across from the display set of the seventy-second size and blow them onto the cover. "Listen, is it Greek or Latin?" - the technologist asked - "we could beat this case somehow" ... In short, since there was no time to reprint the circulation, we decided to fix the bug by simply making a dust jacket with the "correct" letters. So if you have a red velvet book in a dust jacket at home - unfold and look - maybe your grandma or grandpa got the same copy with krakozyabry.

A
AlexLIn, 2015-04-12
@AlexLIn

Selective Service System in America, mixed up the years from 1893 to 1897 from 1993 to 1997.
And called up ~ 14,000 dead to serve in the army.
If they don't write a reply within a couple of days, they face a $250,000 fine and 5 years in prison.

M
monah_tuk, 2015-04-12
@monah_tuk

Not mine, but in my practice : htrd.su/wiki/zhurnal/2013/09/18/zabavnyj_bag
The ThreadX scheduler stopped and, accordingly, only one thread continued to run, or when it came to a cooperative transfer of control. Problem: The memory-mapped register of the timer control register does not immediately return, when read, a new value after writing. Plus, one register was used for two timers, respectively, to set up the second one, you need to subtract the value, correct it and write it back so that the parameters of the first one are not overwritten. The scheduler extinguished its timer for the time of resheduling, and then activated it. But it happened that after activation it was not immediately updated, and by this moment our code had time to subtract the register, with the extinguished value, activated its timer and wrote. As a result, the scheduler timer turned off. There was no race in the literal sense: scheduler access from interrupt, and our code is run directly by it after activation. The situation was aggravated by the fact that the system could work for some time due to cooperative multitasking (for example, when blocking on a mutex, an additional code is called that checks if a thread is ready and starts it, the scheduler is not needed here, similarly when calling other system procedures, such as sleep(), waiting for a thread, etc.), but it often went out at an unpredictable moment. It's embedded ;-) waiting for a thread, etc.), but it often went out at an unpredictable moment. It's embedded ;-) waiting for a thread, etc.), but it often went out at an unpredictable moment. It's embedded ;-)

F
FanatPHP, 2015-04-12
@FanatPHP

Here are links to two excellent, exquisite, I would say, cases
Sequential Approximation
SQL query depends on the color of the html table

U
uvelichitel, 2015-04-12
@uvelichitel

Well everyone knows K&R Quicksort should beleft - (left - right) / 2

Y
Yeah, 2015-04-16
@Yeah

I didn't set nullable for the column in mysql, because of which the country_id IS NULL condition was not met and in some cases (not 100%) Google Adwords Conversions tracking disappeared. In turn, since the conversions fell below the threshold, Google Adwords slashed traffic. It was Friday, before the New Year's corporate party. The corporate party was no longer as fun as it seemed at first :)

V
Vitaly, 2015-04-16
@Wohlstand

A very stupid and annoying bug in the installer of my engine: instead of adding to the end, the installer overwrote the PATH variable, because of which many people started having terrible glitches on their computers because of this, accidentally found how the installer was tested on a friend’s computer, then noticed that xcopy doesn't work. (Fortunately, it's not so easy to mess things up on the line, so there were no problems in Linux and Mac builds.)

B
barsunduk footmade, 2015-04-16
@barsunduk

sawing a novel for a competition. final scene. Dedok met in the steppe symbolizes goodness, from which everyone has lost the habit over the centuries. puts our heroes in the car. happy end. the grandfather dissolves (like he got behind the wheel), the car leaves with all the heroes. so, in the line "hide ded with dissolve" one letter "d" was missing. "hide de" - as a result, the grandfather did not dissolve. and watched with fucking eyes as the fire victims he picked up left in his car. go nuts motivation and happy ending. I'm laughing, grandfather is standing ...

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question