Why do bugs come back?

Deleted member 38366

D
Old Bugs typically make a comeback whenever a Dev is forced to utilize and recycle otherwise obsolete Code. Commonly due to excessive Time Pressure exerted by Management.
There's been quite a few examples in the past and a few once-fixed ones remain in service "bugged" until today (despite being Bug-Reported respectively but ignored).
 
Because software development is complex and difficult.
Or could it be ....
q1.jpg
 

verminstar

Banned
I know naff all about code, but I know others who do it fer a living and I keep having it compared to my cars sound system. Over the years as more customising is done, the wiring gets way too complex and it messes with other stuff cos now ye have to upgrade the battery to a heavier duty that means it causes problems with the battery bay on the nearside of the car. This section was customized years ago to have an aftermarket HID kit installed, so now we gotta make the amount of space available...more...somehow...might have to rethink this actually...

Theres three amps wired up which means three different power cables going to the one source, not including the control wires going into the back of the head unit and the xbox installed under the passenger seat...I know Im sad but however...we all have our little vices in life, thats mine.

Now, the problem being that the wiring is now so complicated in the car that when I wire up the tweeters in the back of the car, one of the subs stops working, but the amp is still powered up...oh and my wipers came on. So we have gone from wiring tweeters...to the window wipers...theres a whole saturday of fun finding the cause, fixing the cause, and breaking 2 or 3 other things that make ye think ye should start charging fer the service...only ye cant charge yerself...trust me I tried gave me a terrible headache afterwards...

Breaking stuff is inevitable...give it any real life analogy ye want, it all boils down to...brown stuff happens aned herein one has a wide range of stress relieving solutions available. My personal favorite is getting an inflatable rabbit and taking my frustrations out on him/her/it but there are other, more mature means like just accepting that thats how games are...always have been and most likely always will be. Frankly, its a merit to the devs when the whole thing runs with only trivial stuff going wrong considering how much was changed...but that wouldnt be no fun on this forum ^
 
I'm guessing you've never worked in coding or programming. Variables strings, linked lists, definitions, etc so funny things that often seem unrelated to other things being changed. Especially once the code is compiled. It's often like this:

http://web.mit.edu/adorai/www/seuss-technical-writing.html

Or this:

https://i.imgur.com/PMXHem2_d.jpg?maxwidth=640&shape=thumb&fidelity=medium

Ha ha, so this.

I once accused a mate of hacking my account and fixing my programme coz I had no idea why it suddenly started working.
 
This post explains it very well.

Their testing is sub-par. They clearly only do manual play-testing, and to retro-fit automated testing into the project at this stage would take a lot of time and money.
Time and money that's probably not worth the investment when compared to projected returns.
 
Skynet..

because noone is so stupid to bring back the same bugs again and again and again and again
 
Last edited:
Why is that?

trying to be informative, some possible scenarios from most to less frequent:

- incomplete fix: the fix only resolved one side effect or instance of the core issue, while other states or execution paths may trigger the same effect. causes might be not thorough enough analysis of the issue, haste, or temporary quick fixes that get forgotten, all possibly aggravated by excessive code complexity or lack of familiarity with the code or system.

- code coupling: changes in different but related code after the fix reproduce the side effect. this is by far the most dangerous scenario and evidences bad code component design, probably due to poor observance of fundamental principles like encapsulation, non redundancy and single responsibility

- problem in source control and branching. a bug fix might get overwritten by an older version of the code. this is actually rare and should not be possible since source control tools automatically disallow it, but it still can be forced during a complex code merge (with manual, incomplete conflict resolution), which could mean branches separated for too long or overall poor work group organization or code management.

i can't think of any other relevant cause just yet. just to add, the fact that these bugs get into release (or even production) evidences lack of regression testing.
 
I had a huge wasps nest in the attic years ago. Took three attempts for the exterminators to kill it. Had to put down cyanide powder in the end. It was HUGE.

Some bugs are harder than others to get rid of.
 
Why is it that a bug can be fixed in one patch, and then a few updates later it "comes back"? If it's fixed it should be fixed, right? I understand why there could always be NEW bugs, but not why old bugs can just reappear at any time. And the devs have to be told about it every time they come back, and sometimes it takes a concerted push from the community to get these bugs fixed a second or third time.

It seems especially weird when it comes to things which appear to be straightforward state toggles:
FA-off not staying.
The fiasco with throttle up/throttle zero at end of hyperspace jump.
Right now Escape Pods have reverted back to being "Illegal Salvage"
The Evacuation Passenger Missions are requiring faction rep again.
Dark Side of planets have started lighting up again.

Why is that?
Cut and paste?

My theory is that when writing new patches or extensions to the game, they cut and paste from the old programme. Thus the old bugs return.
 
Sure all of that is perfectly reasonable but again you'd think that this would mostly produce NEW bugs rather than things like "suddenly escape pods are illegal again."

I guess what I'm trying to get a grasp on is how it's possible for something like "escape pods are illegal" vs "escape pods are not illegal" to be a non-permanent change? Do the devs actually have to maintain constant vigilance over the status of escape pods (and everything else) from now until the day the servers are turned off, because these things can spontaneously change on their own at any time? Will the hitbox on the Chieftain cockpit canopy suddenly become oversized again? Will mining missions spontaneously return to issuing the same material rewards that they're asking you to turn in?

Likewise when they had the fix for Evacuation Passenger missions. It was recognized that these emergency evacuation missions should be available to everyone regardless of your faction standing, so the faction rep requirements were removed. But now they're back. Doesn't a *person* have to deliberately change something in order to make this happen? Does the code erase itself?

I've played plenty of games with bugs that later get patched out, which in turn introduce new bugs, etc. But Elite is the only game I've ever played where old, already fixed bugs *come back*

I should emphasize that this isn't intended to be a criticism of Frontier or a rant post or anything like that. It's more about bewilderment than anything else.

My guess is Frontier has a problem with branch revision control. Meaning there are lots of people working on sections of the code at any time, which eventually all get merged back into the main code. However, if everyone's code sections are of various revision levels, some newer and some older, then some fixes done by other teams can be overwritten by old code when it all gets merged. Also, if someone goes back to old code thinking its okay to use it can also reintroduce unfixed code back into the main source, thereby raising old problems from the dead.

None of us can know for certain what is going on, but we certainly can see the results, and the frequency with which fixed bugs come back is definitely a recurring issue.
 
Why is it that a bug can be fixed in one patch, and then a few updates later it "comes back"? If it's fixed it should be fixed, right? I understand why there could always be NEW bugs, but not why old bugs can just reappear at any time. And the devs have to be told about it every time they come back, and sometimes it takes a concerted push from the community to get these bugs fixed a second or third time.

It seems especially weird when it comes to things which appear to be straightforward state toggles:
FA-off not staying.
The fiasco with throttle up/throttle zero at end of hyperspace jump.
Right now Escape Pods have reverted back to being "Illegal Salvage"
The Evacuation Passenger Missions are requiring faction rep again.
Dark Side of planets have started lighting up again.

Why is that?

If I would guess it is that teams work on different parts of the game at different times, but of course need a snapshot to work from. I hope I am wrong, but it seems that sometimes new functionality code gets inserted into their main branch where the old code might overwrite bugfixes done after the snap shot was taken.

This is pure speculation, and of course this shouldn't happen with good version control, but the frequency with which regressions occur in ED suggests I may be correct.

My guess is Frontier has a problem with branch revision control. Meaning there are lots of people working on sections of the code at any time, which eventually all get merged back into the main code. However, if everyone's code sections are of various revision levels, some newer and some older, then some fixes done by other teams can be overwritten by old code when it all gets merged. Also, if someone goes back to old code thinking its okay to use it can also reintroduce unfixed code back into the main source, thereby raising old problems from the dead.

None of us can know for certain what is going on, but we certainly can see the results, and the frequency with which fixed bugs come back is definitely a recurring issue.

I guess I should have read till the end of the thread before commenting :D
 
Sure all of that is perfectly reasonable but again you'd think that this would mostly produce NEW bugs rather than things like "suddenly escape pods are illegal again."

I guess what I'm trying to get a grasp on is how it's possible for something like "escape pods are illegal" vs "escape pods are not illegal" to be a non-permanent change? Do the devs actually have to maintain constant vigilance over the status of escape pods (and everything else) from now until the day the servers are turned off, because these things can spontaneously change on their own at any time? Will the hitbox on the Chieftain cockpit canopy suddenly become oversized again? Will mining missions spontaneously return to issuing the same material rewards that they're asking you to turn in?

Likewise when they had the fix for Evacuation Passenger missions. It was recognized that these emergency evacuation missions should be available to everyone regardless of your faction standing, so the faction rep requirements were removed. But now they're back. Doesn't a *person* have to deliberately change something in order to make this happen? Does the code erase itself?

I've played plenty of games with bugs that later get patched out, which in turn introduce new bugs, etc. But Elite is the only game I've ever played where old, already fixed bugs *come back*

I should emphasize that this isn't intended to be a criticism of Frontier or a rant post or anything like that. It's more about bewilderment than anything else.

In the case of Escape Pod Legal Status...

Database tables. If you've ever worked with something like SQL databases... well, then you already get it and I don't need to explain it.
If you haven't, these things can very easily turn into nightmares. A single faulty query can have this sort of effect. I can't pretend to know how the Cobra Engine actually works, under the hood, but I'd wager that things like "Loot" - cargo canisters and Escape Pods are pulled from database tables by queries. If a query is run to pull X number of results from a particular table, and there could potentially be hundreds or even thousands of these tables, and that query says "Search LootTable for ThisClassOfShip for ThisManyItems for NPCPirate and MarkCargoIllegal" - then if that particular loot table contains an Escape Pod, it suddenly becomes an Illegal Escape Pod.

Or Tables simply exist, perhaps a "LegalLoot" and "IllegalLoot" table, and Occupied Escape Pod is an item on an IllegalLoot table, yep, you guess it, IllegalLoot.

Verifying the results of queries across multiple tables is both time-consuming and can be challenging, even for the best DBA's.

And, of course, there's always the possibility that individual loot tables could be built by queries, then queried to generate results... hopefully you can see how this can become very complicated very quickly, and how easy it can be for something like this to happen.

And this is just one of several situations I can think of off the top of my head, without knowing how the Cobra engine actually operates, based on my own experiences in game modding and in the real world of work. And no, I'm not a DBA (DataBase Administrator) but I've worked with them plenty.
 
- Terrible version/revision control
- Insufficient quality control
- Incompetence

Fixed bugs normally shouldn't come back, it is a poor sign if that happens frequently (carelessness).
I have rarely seen a professional software that suffers so much from re-appearing bugs as ED.
 
Last edited:
I'm guessing you've never worked in coding or programming. Variables strings, linked lists, definitions, etc so funny things that often seem unrelated to other things being changed. Especially once the code is compiled. It's often like this:

http://web.mit.edu/adorai/www/seuss-technical-writing.html

Or this:

https://i.imgur.com/PMXHem2_d.jpg?maxwidth=640&shape=thumb&fidelity=medium

That strikes me as a very honest meme when it comes to coding a complex piece of software. :D
 
Because often the actual root cause of a bug cannot found in a timely fashion and the solution is to bypass the troublesome code with a workaround.

However, a later change to something entirely unrelated may open up a new logic path that uses the troublesome code again.
 
This post explains it very well.

Their testing is sub-par. They clearly only do manual play-testing, and to retro-fit automated testing into the project at this stage would take a lot of time and money.
Automated testing of some of the features and bugs of Elite Dangerous would be extremely difficult just because of what it *is*.

Unit tests are easy to write if the code is structured to support them. They help to stop bugs in the behaviour of individual functions. Given the sort of bugs we don't see in live builds, Frontier probably have a ton of these.

Functional tests are harder to write. They help stop bugs in the behaviour of individual features. In this context, a feature would be (at its biggest) "a pulse laser" or "the ability for a ship to roll" rather than anything we might think of as a feature. They're basically a test that you've put the unit-tested functions together in a sensible way so that the end result of calling a high-level function is a set of calls to various low-level functions which does the job. We don't often see bugs make the live builds that these would prevent, but there's a few now and then.

Acceptance tests are the hardest to write. They help stop bugs in the behaviour of the application as a whole. These check that a particular design goal or use case is met - e.g. "it is possible to undock a ship from a station". Most of my test-writing time is spent on these, in the apps I write. They're very powerful, because they can test the behaviour of the application as state changes.

So, for example:
- unitTest "testShipExplode" confirms that this function sets ship->exploding to true.
- functionalTest "firePulseLaser" confirms that the weapon can fire, various objects like the laser beam graphic get instantiated correctly, capacitor levels reduce, etc.
- acceptanceTest "weaponsTest17" confirms that firing a pulse laser on a target until it runs out of hull causes the target to explode (and not, say, the firing ship) ... and that the third time in a row the pulse laser fires you don't suddenly get massive recoil ... and so on

Acceptance tests are extremely difficult to automate for a game like Elite Dangerous because acceptance tests care about (non-minimal) state. So to write them you have to set up a known application state, then carry out a known series of steps, then see if the resulting state matches the desired state in the important aspects.

Let's take the recent comms menu bug that was introduced in 3.0.1 and fixed in 3.0.3 for an example.

All the unit tests for "displayBitOfCommsMenu" will have passed. So will the functional ones - there were lots of situations in which it worked. The bug occurred only after a particular - fairly common in real gameplay, as it happened - sequence of state manipulations. Most theoretical acceptance tests would also have passed. To catch this bug automatically you'd need an acceptance test which:
- added two player ships to an instance
- had one of them leave the instance
- had that one then check its comms panel and perform various actions on it
- have the test interpret the result of that sequence of actions against a known good result
...in a test environment that's running most if not all of the code, so effectively running (perhaps in a headless mode) two game clients and a set of game servers.

That's not impossible to automate, but it's really difficult. And that's an easy acceptance test. Consider what a proper automated test that a massacre mission is possible would need to do:
- find mission (the mission board can be pre-seeded to have one, since other tests will theoretically be checking generation, but it can't have an artificially low count)
- take the mission
- launch, fly to the right system, kill a bunch of stuff, fly back, dock
- hand in the mission
...remember that absolutely everything that occurs on this must be either completely non-random, or with randomness that doesn't break the test, over hundreds of thousands of game-loop cycles.

So most acceptance tests - for any application - are not automated. And that means rather than them completing in seconds per test, someone has to sit down, set up the initial situation, run through the steps of the test, and assess the result. And that rapidly gets both expensive and time-consuming the more such tests you have ... would the players be happy with months between the end of beta and live as the full test suite is run through?
 
Back
Top Bottom