After connecting an uninterruptible program, the program no longer works

    After the publication of the article " Grounded Pointers ", a lot of comments were made to it. In particular, it was noted that various devices often come with startlingly poor-quality auxiliary software. This is sometimes quite annoying. However, I'm not going to grumble. I want to tell a funny story on this subject.

    I was still a student and worked as a programmer in one organization. The main activity is numerical modeling. Programs are packages for calculating all kinds of different things, as well as visualizers of the received data.

    Now the story itself. I sit and calmly program. A fellow physicist from the next room comes up to me. Moreover, he has a strange expression and a suspicious unhealthy smile. He makes a serious face and declares: “Our wonderful program“ ABCD ”offers me to contact the developer, and here I am.”

    In general, everything is immediately clear to me. If the program crashes, then it displays a message in the spirit of "Please contact the developer." Since I was one of the developers of ABCD, he came to my liking. But where does this strange smile come from, and why not just a bug in the bugtracker ... However, I don’t particularly think about this topic and go with it.

    The picture is classic. The program with a window about the fall. Eka is unseen. Just don’t think that the program crashes every 5 minutes. But much to be surprised at this situation also makes no sense. I ask - "What did you do?"

    It breaks into a smile and the following dialogue takes place between us:

    - I have a new UPS (I connected an uninterruptible power supply unit). Now the program does not start anymore. Immediately after starting it crashes.

    - Um. What else did you do?

    - Nothing.

    - Ha ha. Well, yes, of course ... Before connecting the UPS, it means it worked, and after not.

    A colleague breaks into an even bigger smile: “Exactly! Look, now I will show the focus. ”

    He turns off the computer. Climbing to the table. Poking around there. Changes the cable going from the UPS to the wire going just from the outlet. Turns on the computer. Launches our program. She works successfully.

    Turns off the computer. He climbs under the table again. Connects the wire from the UPS. Turns on the computer. Smiling nowhere else, launches the program. The program crashes immediately after the start!

    It was a shock. Perhaps I have never been so confused when working with computer technology.

    Of course, then everything became clear. About it will be lower. And the reason for this behavior seems trite.

    However, it was at that moment that I doubted that I understood the principles of computer operation and basic physical laws. The joke about the curvature of bits in the wire at that moment seemed to me not so much a joke.

    Perhaps this was one of the strongest impressions that I received from the computer. I don’t even know what to compare. I felt close feelings when, experimenting with Apogee, BK01 discovered that it can be controlled simply by raising a hand. It is enough to read and process noise from the input / output ports that are not connected to anything (I don’t remember how to call them correctly).

    I don’t know if I could now convey my feelings with words. Try to imagine when a program that you know well is running on a network and isn’t working through a UPS.

    But everything turned out to be simple. This was not magical underpowered by a defective UPS. These were not twisted bits.

    The reason for the magic and my surprise was poor software. Moreover, my colleague was a fellow who at first hid one important detail from me, without giving it any significance.

    Not only was the UPS connected to the computer. Along with it was a disk with software and USB wiring for connecting this uninterruptible computer. The program on the disk allowed you to do all kinds of different things. For example, you could click on its icon in Systray and see the battery charge. It is important that he also installed this program. Just.

    And the consequences were fatal. This wonderful program hanging in Systray knocked out not only our program, but as it turned out a little later, and many other applications. How did she manage to do this? Ha, govnokoder capable and not that!

    Investigations of the cause of the failure revealed that the OpenGL subsystem stopped working. But is it really that our program uses OpenGL so much? Not. Other OpenGL programs have also broken down. For example, Quake stopped working. Or some other kind of "shooter". I don’t remember already. Yes, yes, sometimes after work we killed each other in the virtual world. Students.

    This G-program for the UPS, in order to draw a beautiful round diagram about the percentage of charge, for some reason used OpenGL. And she did it unceremoniously. After launch, it immediately consumed all OpenGL resources. As a result, OpenGL only used this monitoring program, leaving others a cookie. And it doesn’t matter if you looked at her beautiful picture or not. All resources have already been exhausted. What exactly did she do, was forgotten over the years ago. And the general meaning is as follows. She endlessly created some OpenGL objects and did not release them. Instantly, such objects ended, but the program didn’t care. She herself worked fine. But other programs could no longer create any such objects. Instead of descriptors, they received error status.

    If the UPS was turned off, but USB wiring and the program were left, then the error disappeared. Probably, the program saw that there was no uninterruptible power supply and worked somehow differently. This is exactly what my colleague showed me, shaking my sense of the reality of the world.

    The result was a more accurate diagnosis of such errors in our program and the rejection of the “miracle of judgment” to visualize the status of the UPS.

    Here is such software, sometimes supplied in addition to the device.

    Also popular now: