58

What's the word for a software bug that reoccurs after being fixed?

I'm embarking on some test-driven development (TDD) for a project, and I want to use the right term but have forgotten the word.

It's not reversion, but I think it sounds similar.

Though I've used it many times I can't recollect the term right now, and Google isn't helping me.

Addition 1: The bug is imaginary in this case. It only reappears once, after I fixed, because of a new change I introduce. I'm not talking about something that that keeps on popping up.

Addition 2: The correct answer popped up 7 minutes after asking. The amount of bikeshedding the keeps on coming after that is hilarious.

15
  • 11
    Gremlins. Clearly something is immanent in the code and keeps getting reborn. Commented Sep 12, 2014 at 13:56
  • 24
    Unfixed...
    – Hugo
    Commented Sep 12, 2014 at 15:48
  • 3
    reopened.
    – jxh
    Commented Sep 12, 2014 at 17:18
  • 8
    If the bug is still there then, by definition, it wasn't fixed. Commented Sep 12, 2014 at 20:54
  • 4
    At that point, we generally call it a feature.
    – JohnP
    Commented Sep 12, 2014 at 21:12

7 Answers 7

129

You're looking for "regression".

13
  • 15
    Regression refers not uniquely to bugs that occur again after fixing. Though the OP was probably looking for this word without knowing its actual meaning.
    – Vilmar
    Commented Sep 12, 2014 at 13:38
  • 20
    I think of regression as meaning a bug that was introduced as part of new changes (matching e.g. en.wikipedia.org/wiki/Regression_testing and en.wikipedia.org/wiki/Software_regression), which is not quite the word the OP is looking for. en.wiktionary.org/wiki/regression does define it as the OP's word (almost the same terms, even!), though, so there are multiple definitions.
    – Tim S.
    Commented Sep 12, 2014 at 15:34
  • 2
    Happy to add that regression was definitely the word I was looking for. Also very cool that this answer came within 7 minutes after posting. All the rest is mere fluff. Nice fluff though, especially mandelbug.
    – the
    Commented Sep 12, 2014 at 16:12
  • 2
    For all the commenters who are troubled by "regression", let me offer "relapse" ;)
    – Dan Bron
    Commented Sep 12, 2014 at 19:31
  • 4
    The meaning is not mixed up. One common meaning of the word "regression" is exactly what the OP asked for. Definitions like "a bug that was introduced as part of new changes" are simply alternate, related meanings. Commented Sep 13, 2014 at 16:19
27

Such bugs may simply be called recurring bugs. There are even papers on such bugs:

Previous research confirms the existence of recurring bug fixes in software systems...

3
  • 2
    "Recurring bug fixes" is ambiguous. Is it the bug that recurs, or is it the fix? Commented Sep 12, 2014 at 20:35
  • 1
    @WalterMitty: Syntactically it is "recurring {bug fix}" (with recurring modifying bug fix, rather than recurring bug modifying fix), but semantically the ambiguity is not that great anyway, since a bug fix can only recur if the bug did, and a bug cannot really "recur", per se, if it isn't fixed in between. Almost the only real difference is that *"{recurring bug} fix" might not imply that the same fix was used each time the bug recurred.
    – ruakh
    Commented Sep 13, 2014 at 4:56
  • 1
    @WalterMitty Lol. Well you can't have a bug fix without a bug, so saying recurring bug fixes implies recurring bugs. Commented Sep 13, 2014 at 16:51
20

The bug was reintroduced by a subsequent change, resulting in a regression.

3
  • 2
    Regression doesn't mean the same thing to a statistician and to a child psychologist. Commented Sep 13, 2014 at 10:24
  • 1
    @WalterMitty which does not invalidate the answer in any way, just two different uses for the same word, plenty of examples of that. If talking about a bug regression the context is 100% clear.
    – nico
    Commented Sep 15, 2014 at 10:09
  • Fair enough. "regression" is short for "bug regression". Works for me. Commented Sep 15, 2014 at 10:54
10

UNFIXED.

And that is not the same as regression error. If you try to fix something, deploy it, and it turns out not to be fixed, then it was never fixed! period.

Regression error is when the fix attempt BROKE SOMETHING ELSE THAT PREVIOUSLY WORKED, hence that "something" has regressed.

6
  • I don't think you read the question (or maybe it was edited?) ... the question clearly indicates that the bug was fixed and then recurs. Commented Sep 13, 2014 at 7:19
  • 1
    Well, if it was really fixed then it wouldn't occur again. It was being fixed, someone has tried to fix it, even though he or she had fixed it, but eventually the bug hasn't been fixed.
    – dzieciou
    Commented Sep 14, 2014 at 8:14
  • I say this is the answer for the version of the question I see. If you tried to fix it but just recently found a new set of circumstances that causes the same issue, it was either an unfixed bug or an attempt at fixing a bug that did not fix the issue.
    – ps2goat
    Commented Sep 15, 2014 at 4:06
  • Someone wrote the faulty code the first time and that lead to some particular symptom. That particular code got fixed. Then someone writes some more code which contains a new bug, but which causes the same symptom. The behavior of the software has regressed. The idea is that the regression test that was created with the original bug fix catches this regression in behavior. See regression testing: "it is … good coding practice, when a bug is located and fixed, to record a test that exposes the bug and re-run that test regularly". Commented Sep 15, 2014 at 4:21
  • It's also possible to come up with a fix that conceals the symptom, but doesn't really fix the underlying problem. When that is done, the symptom is likely to show up again, in a slightly different context. Commented Sep 15, 2014 at 10:53
7

A mandelbug (named after Benoît Mandelbrot's fractal) is a bug whose causes are so complex that it defies repair, or makes its behavior appear chaotic or even non-deterministic.

Reference: http://en.wikipedia.org/wiki/Heisenbug

5
  • 3
    This is a true statement, but not an answer to the question. Commented Sep 13, 2014 at 7:18
  • 1
    It is very interesting that you link to an article that says that Heisenbug is the common term for this. Even in its title.
    – oerkelens
    Commented Sep 15, 2014 at 12:46
  • I've hear the term Mandelbug more commonly in my experience and is a better example of what the OP was asking for. Heisenbug, I feel, refers to a bug that can not easily be tracked down, where the Mandelbug has so many permutations, that a fix in one place causes similar breakage in other places. Commented Sep 15, 2014 at 15:07
  • 1
    @oerkelens: no, the article defines "Heisenbug" and "Mandelbug" to be different things. It's just that for whatever reason they're part of a single article. Commented Sep 15, 2014 at 16:34
  • @SteveJessop - Having examined Wikipedia's protocols as part of my research I can tell you that the reason the two topics are part of a single article is because they have rules that prevent any subject from having its own article unless certain criteria are met, but allow closely related topics to be subjects within an existing page that has already met those criteria. Read this for a trip down the rabbit hole but be warned you probably will wish you had taken the blue pill. :)
    – O.M.Y.
    Commented Aug 1, 2016 at 1:52
6

The answer to the actual question as asked:

(1) When you've thought you fixed a bug, but you had not fixed it: there is no particular slang or term for this..

You would simply say it is unfixed, reopened, or "not yet fixed".

(2) The word on the tip of your tongue was apparently "regression".

NOTE: "regression" has utterly no connection to what the question asks. It has no connection, in any way, to issue (1).

Footnote: the two wikipedia pages are/were completely useless. They have since been fixed to some extent.

6
  • 1
    +1 @JoeBlow, agreed. It's easy for a monkey "software engineer" to flag it as fixed when it isn't, especially when they don't have thorough test coverage or even use unit testing at all. In this case it did not "regress", i.e. 'revert to an earlier ... behavioral level' (Merriam-Webster) but rather, was never fixed. "Re-opened" seems to be the best description seeing as it was erroneously marked "fixed". Commented Sep 13, 2014 at 15:11
  • 1
    And, of course, if your code management is sufficiently rotten, you can get the fix removed from the latest code by a phantom code update. Commented Sep 13, 2014 at 21:40
  • 1
    The Wikipedia article on regression testing is better than the one on software regression, and while the bug isn't a regression (it's the behavior of the software that's regressed), it's a regression test that would catch it: "it is considered good coding practice, when a bug is located and fixed, to record a test that exposes the bug and re-run that test regularly after subsequent changes to the program." Commented Sep 15, 2014 at 4:26
  • 2
    Also, from that same article: "Often, a fix for a problem will be “fragile” in that it fixes the problem in the narrow case where it was first observed but not in more general cases which may arise over the lifetime of the software. Frequently, a fix for a problem in one area inadvertently causes a software bug in another area. Finally, it may happen that, when some feature is redesigned, some of the same mistakes that were made in the original implementation of the feature are made in the redesign." Thus why OP thought of "regression", even though the bug itself isn't quite the regression. Commented Sep 15, 2014 at 4:28
  • 2
    When you get rid of horrifically useless wikipedia pages, they seem to pop up again in a few days. ;) Commented Sep 15, 2014 at 10:51
1

One possible alternative, assuming the bug was seemingly fixed until a later change proved otherwise, would be to say the bug has reasserted itself.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .