|
I was working on a minor UI update. I need to add a "close" button to an alert. It's 30 seconds work, but the alert wasn't showing so I couldn't test the button. I fire up the debugger and start tracing why the alert wasn't showing.
Funnily enough it was because the "show alert" flag wasn't being set. Which was because the query string for the "show alert" trigger was malformed. Which meant a "Do I show the alert" function had the wrong input.
Except it was totally and utterly the wrong "Do I show the alert" function. The function being called was in code that was obsolete and wholly replaced by a new component. Which opened up an entire new level of bugs and issues and testing and my afternoon completely shot.
Because I couldn't test a single bit of CSS properly.
I'm just curious as to what innocuous seeming bugs you've worked on that let loose the Kraken of bugs for you to deal with.
cheers
Chris Maunder
|
|
|
|
|
The Kraken and I are on a first name basis and regularly go for coffee.
"Time flies like an arrow. Fruit flies like a banana."
|
|
|
|
|
The source of the majority of the problems I see daily is the mentality that 1) we don’t have enough unit tests, so rather than refactor and force QA/myself to retest all affected code paths, I’ll create a *new copy* of existing code and 2) there’s no way to know when my code changes actually cause dead code, so don’t ever worry about cleaning up.
|
|
|
|
|
(1) is a major problem almost everywhere. (2) is difficult in the absence of serious code coverage, for which all those unit tests are a prerequisite--unless you simply mean types, data, and functions that aren't even used. Most static analysis tools don't identify the latter, which suggests that the people responsible for the tool's specifications have no experience as architects.
|
|
|
|
|
|
my head already hurts. That stuff is evil.
Charlie Gilley
<italic>Stuck in a dysfunctional matrix from which I must escape...
"Where liberty dwells, there is my country." B. Franklin, 1783
“They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759
|
|
|
|
|
Not so much with bugs, but new feature requests. I had a request to change a combo box (single select) to a multi-select checked list box for a search application. Seemed simple enough until I started down this rabbit hole of missing functionality and archaic code. What should have taken me 30 minutes or so took me 4 days.
"When you are dead, you won't even know that you are dead. It's a pain only felt by others; same thing when you are stupid."
Ignorant - An individual without knowledge, but is willing to learn.
Stupid - An individual without knowledge and is incapable of learning.
Idiot - An individual without knowledge and allows social media to do the thinking for them.
modified 19-Nov-21 21:01pm.
|
|
|
|
|
I have received a perf issue that a machine was unusable due to a schtasks.exe consuming all CPU. When looking at the MiniDump I did only see garbage stack traces. Ok send me a full dump but the stacks were still ending in heap allocated memory which is strange for a process not having dynamic code generation.
When checking which code the many threads did execute I found highly optimized AVX2 assembly and unusal assembly instructions such as aesenc and related. These instructions are only known to guys creating cryptographic algos with the Intel AES-NI instructions to speed up AES encryption.
After counting the possibilities I did suspect that a Trojan was just encrypting that machine.
That turned from a perf issue to a really serious problem.
With Windbg and the mex extension I could save the exe to disk which my AV Scanner would after a few seconds delete because it has detected malicious software. This helped to find out what it actually was. In this case it was a Monero miner.
Ok it was not encrypting the disk but still a bad issue which needs to some cleaning of that machine.
My colleagues still ask me to write a book about such stuff.
|
|
|
|
|
Created an Excel addin that dealt with spreadsheets in the great Sharepoint in the sky. The spreadsheets were sync'd with the users system as in onedrive. If the addin tried to open one of the spreadsheets it had created (to edit), it got a file not found. Opening it straight with Excel worked fine. After more hours than I like to admit, tearing out the sparse remains of my hair, and burying a dead chicken in the yard, I created a symlink to the folder and it opened OK that way. Made no sense to me but that worked. My bug or a Windows feature? Who cares, it worked. This was several years ago, I have been tempted to go back and see if it still does the same thing now. Not broke, don't mess with it, thar be Krakens in there maties.
>64
If you can keep your head while those about you are losing theirs, perhaps you don't understand the situation.
|
|
|
|
|
This is why people always want to rewrite versus maintain!
I think every team needs to dedicate 1 month/sprint per year for cleaning up dead code like that.
|
|
|
|
|
I had a UI bug for what, like a month?
a P.O. html table where the rightmost column is to be a font-awesome printer
to print a bar code for the item on that row but only if the received column is non-zero otherwise gray out the printer icon Easy peasy right?
The code that is responsible loops through the rows and if Received is > 0 set the opacity of the printer icon to .2 or 1.
But it wouldn't work. the opacity would set for the first row but not the subsequent ones and not because of any fault in the loop but the javascript wouldn't set the opacity to 1 for rows it tried to on.
I tried everything I could think of to try and get the code to show me what
could be wrong but no.
Then I hit upon a so reply to a person who was having trouble with their htmlcollection as I was and the reply said the the getElementByClassName()
would return a live collection and that the op should try querySelectorAll()
I've used both arbitrarily without care as to why but yeah that fixed it.
I would still have been yet taunting me from the issue list had I not seen that. It sucked to look at it and here it was "So, not fixed yet huh Ron..."
It felt so good to set the bug as fixed.
I saw someone's sig I think it was here that said,
"It's easy once you know how".
Yeah.
Onward and upward.
|
|
|
|
|
Yesterday I found some code making the assumption (for an option instrument[^] ) which was assuming that a strike price of zero was the same as a NULL in that field.
It categorically is not - but finding all the impacts of changing it, and any data saved with the wrong value or impacted by it, is going to take weeks.
Tiny assumption -> huge mess.
|
|
|
|
|
I recently changed a tiny bit about a progress/throbber sub-window and now the program opens another task bar entry.
I "love" maintaining a horrible spaghetti mess of inherited code...
|
|
|
|
|
Several days ago I spent a couple of days trying to track down why a popup didn't. Finally resorting to contacting tech support, they pointed out that I was missing a closing curly brace in the java script!
(I use DevEX tools. The documentation IMO is terrible, but the tech support is the best I have ever dealt with in a 48 year career.)
The sad part is I wasn't working on anyone else's legacy code. It is all mine.
Zaphod.
|
|
|
|
|
This happens to me frequently, but most often with small home repairs.
Go to change a washer, find the whole faucet needs replacing. Go to replace that and find another hidden problem ...
|
|
|
|
|
I work on an ETL process taking data from a source database into a reporting database. We offer a custom column table where the client can specify that certain data from the source be placed in certain columns in the reporting table. The ETL process USED to create a temporary table to collect the source data and then run a SQL statement with a PIVOT clause to put the data into the custom columns. A certain client claimed they hadn't been getting any new custom records for a while. It took several attempts by a couple of devs to figure out what was happening. It finally fell to me to take a turn.
Since we couldn't see what the SQL with the PIVOT was doing because we didn't have access to the temp table as they vanish after the session, I pushed to change the temp table to become a regular persistent table. Once that was approved and pushed out, I was able to run the SQL statement and the statement DIDN'T produce any records to be inserted into the custom table. Poking around and trying different things figured out that it was failing because the list of custom columns stored for the client was like "Custom_1, Custom_2, Custom_3' but the actual columns were names custom_1, custom_2, custom_3.
Something changed in an update to SQL Server such that the PIVOT statement had become case sensitive so Custom_1 no longer matched custom_1. Adding a tolower() in the SQL statement solved the problem.
I’ve given up trying to be calm. However, I am open to feeling slightly less agitated.
|
|
|
|
|
In 1983 I wrote a program for a local weekly magazine that tracked the number of issue sales by each sales location. It would calculate how many of that week's issue each store would get based on recent returns and other history.
The computer was a Canon AS-100 an 8088 that ran CP/M-86. No hard drive, just two 8" floppies. This was either before I knew of dBase II or it wasn't available on this non IBM compatible PC. I wrote the program in a decent dialect of BASIC.
My first issue was that the file copy program (PIP) had a problem copying a large files. It would corrupt the destination file by recopying an earlier section of the file instead of getting fresh data.
The working data file got damaged and it turned out that all their backups were corrupted by PIP.
The work around was to use CopyDisk for a full disk copy until it was patched.
I spent an entire weekend reentering their data so we didn't loose the customer.
The other problem was my own. I wrote database routines, without formal training, in BASIC, that had an obscure error. The customer index would get corrupted, but it took awhile for the corruption to become evident. Eventually a customer entry would not be found.
The fix was to re-index the file. But being a dumb rookie, it took about 12 hours each time. I wrote it with individual floppy disk accesses for each record. Probably using sieve sort. Still didn't find the corruption bug.
To shorten the time, I later split the job so I read from one disk and wrote to a second. This took the time down to about 10 hours. The index corruption bug was still hiding.
In our office we got a machine with a 10 MB hard drive. By this time the PIP issue was fixed and I would take a copy of the corrupted data, copy it to the hard disk and run the disk intensive re-index. Now it only took 2 hours. But I still hadn't found the bug.
Then I got the bright idea of loading all of the key index related fields into a large array in memory.
I rewrote the utility to reindex against every thing in RAM. So much faster, it only took about 20 minutes I think. Had I been more experienced, I would have done this method first rather than beating on the disk IO.
The magazine was sold to a larger publisher and eventually they were going to put the data onto their IBM S/36 or some such. I had to travel farther and no longer had an office key. I still remember sitting in their office on a Saturday morning going over my code one more time and finding the errant comparison that was rarely called. The index never crashed again, and they retired the system about 6 months later.
It was painful, but I learned an awful lot over those 2 years.
|
|
|
|
|
You mean every can of worms has a bigger can of worms inside it? WOW!
|
|
|
|
|
Not a programming issue, but years ago while I ran the helpdesk for the Office of the Undersecretary of Defense for Acquisitions and Technology (OUSDAT) and I received a call from an Army LtCol. His complaint was that the Solitaire card bounce (Windows 3.11 for Workgroups) wasn't working. Sure enough, the cards would randomly teleport around the screen. After three weeks of troubleshooting I discovered that we needed to block the top 16 bytes of real mode memory in himem.sys.
Doesn't sound like much, but we had over 1,000 of these machines, all identical. So I instructed my staff that on any call, for any reason, they were to make this change. Inside a month the number of reported system crashes and mysterious BSODs dropped from several a week to nearly zero.
|
|
|
|
|
That's as good as the story a Russian coworker had.
In Russia he was working in a computer room with many machines. The high muckety-muck wanted to see the facility but every time he would come to inspect the machines would suddenly shut down. Imagine Soviet Russia and that happening every time the boss came to look in. They finally figured out what was happening. The muckety-muck was a larger man, overweight, and he would just stand in the doorway of the room. They finally figured out that the wiring for the power to the room ran under the doorway so when he stood there it caused a fault in the wiring.
I’ve given up trying to be calm. However, I am open to feeling slightly less agitated.
|
|
|
|
|
It's not a Kraken, its a Hydra.
"Time flies like an arrow. Fruit flies like a banana."
|
|
|
|
|
Is a Top Secret bakery on a knead-to-dough basis?
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
That one's only half baked.
|
|
|
|
|
At least it was spelt correctly!
|
|
|
|
|
You have a Rye sense of humor.
The less you need, the more you have.
Even a blind squirrel gets a nut...occasionally.
JaxCoder.com
|
|
|
|