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.

the
  • 703
  • 11
    Gremlins. Clearly something is immanent in the code and keeps getting reborn. – John Lawler Sep 12 '14 at 13:56
  • I usually use the term insidious, but that's an adjective and not an answer to the noun synonym for a reoccurring bug. – stephenbayer Sep 12 '14 at 15:25
  • If it occurs again, it was never really fixed (or was reintroduced). – Tim S. Sep 12 '14 at 15:28
  • 2
    but it can be understood that there are bugs that are difficult to pin down, so you believe that a solution will fix it, but doesn't. The bug report is closed, and it might even work for a while, and then somewhat mysteriously happens again, so then another solution is proposed. The OP is looking for a word to describe that type of bug, and these situations do exist since the world isn't perfect. (even though it was "never really fixed") – stephenbayer Sep 12 '14 at 15:32
  • 24
    *Unfixed*... – Hugo Sep 12 '14 at 15:48
  • 1
    FYI, I think you mean "test driven development." – Kyle Strand Sep 12 '14 at 17:08
  • 3
    *reopened*. – jxh Sep 12 '14 at 17:18
  • 2
    mistake, misunderstand, or misinterpret? If the software bug occurs again, then was it really ever fixed? "The problem is we don't understand the problem." http://uxmag.com/articles/you-are-solving-the-wrong-problem – Sun Sep 12 '14 at 18:24
  • 8
    If the bug is still there then, by definition, it wasn't fixed. – David Richerby Sep 12 '14 at 20:54
  • 4
    At that point, we generally call it a feature. – JohnP Sep 12 '14 at 21:12
  • has this not been linked here yet? http://blog.codinghorror.com/new-programming-jargon/ – gloomy.penguin Sep 13 '14 at 02:01
  • Perhaps such things should be called a Phoenix Bug – Anton Sep 13 '14 at 07:16
  • 1
    I wouldn't really describe that as bikeshedding, it's more like, "XY problem" or similar. The issue you allude to is similar (but not identical) to this issue .. http://english.stackexchange.com/questions/193787/single-word-or-good-words-phrase-for-confusingly-asked-question-where-meaning – Fattie Sep 15 '14 at 10:55
  • thanks for asking this, my mind was stuck too and Google didn't help as you said (too many irrelevant results) – George Birbilis May 08 '18 at 13:47
  • I suspect many programmers would call it "that m&%#@! f#^*!@& bug!!" – Hot Licks Jun 03 '20 at 18:10

7 Answers7

129

You're looking for "regression".

Dan Bron
  • 28,335
  • 17
  • 99
  • 138
  • 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 Sep 12 '14 at 13:38
  • 20
    I think of regression as meaning a bug that was introduced as part of new changes (matching e.g. http://en.wikipedia.org/wiki/Regression_testing and http://en.wikipedia.org/wiki/Software_regression), which is not quite the word the OP is looking for. http://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. Sep 12 '14 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 Sep 12 '14 at 16:12
  • @KasperSouren I would contend that the difference between "regression" and "recurring bugs" is not just "fluff"--you may already understand the difference, but if not, do some more reading on the subject!! Regression testing is an extremely important concept. (Possibly more importantly, true TDD tests share aspects of unit tests, regression tests, and acceptance tests, but are ultimately slightly different from all three.) – Kyle Strand Sep 12 '14 at 17:12
  • 1
    @TimS. I don't "regression" is the right word for this context either. "Regression bugs occur whenever software functionality that previously worked as desired stops working, or no longer works as planned. Typically regression bugs occur as an unintended consequence of program changes." http://www.research.ibm.com/haifa/Workshops/verification2007/present/Dor_Nir_web.pdf -- – Sun Sep 12 '14 at 18:25
  • 1
    The context is 1/. that the OP fixes a bug, 2/. he then creates a regression test when submitting this bug fix. 3/. Then the OP or another make another change, 4/. at that point the regressions test should be run and then they should highlight if the bug has "re-entered" the code base and is expressed by the regression test failing. I would call it a "re-entrant" bug, but the process to stop this is called regression test, once there is a bug, and you fix it, make sure it's fixed for all time. – MichaelStoner Sep 12 '14 at 19:18
  • 2
    For all the commenters who are troubled by "regression", let me offer "relapse" ;) – Dan Bron Sep 12 '14 at 19:31
  • 1
    @MichaelStoner calling it reentrant would risk confusion with the idea of reentrant functions, as in, 'the function is meant to be reentrant, but the test demonstrates that it is not.' – atk Sep 13 '14 at 05:54
  • 1
    @atk yes, that's correct. It's regression tests should reduce reoccurring bugs – MichaelStoner Sep 13 '14 at 07:00
  • 1
    "Happy to add that regression was definitely the word I was looking for" it may have been the word you were looking for, but it is utterly incorrect. As @Vilmar says "the OP was probably looking for this word without knowing its actual meaning" – Fattie Sep 13 '14 at 10:46
  • @Dan I guess your answer is literally correct in that the OP was "looking for..." "regression". I feel you could have avoided much pointless commenting by everyone, if you'd added a couple words preamble or examble, such as "You're looking for the word 'regression', but you have the meaning mixed-up a little." Cheers – Fattie Sep 13 '14 at 10:56
  • 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. – Kevin Krumwiede Sep 13 '14 at 16:19
  • @JoeBlow The article on software regression isn't great, but one that it links to is better: Regression testing. While the question is a bit muddled in that the bug isn't quite regression, it's the kind of bug that's caught by a regression test. It's the behavior of the software that has regressed. – Joshua Taylor Sep 15 '14 at 04: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...

Vilmar
  • 3,643
  • 2
    "Recurring bug fixes" is ambiguous. Is it the bug that recurs, or is it the fix? – Walter Mitty Sep 12 '14 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 Sep 13 '14 at 04:56
  • 1
    @WalterMitty Lol. Well you can't have a bug fix without a bug, so saying recurring bug fixes implies recurring bugs. – michaelsnowden Sep 13 '14 at 16:51
20

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

200_success
  • 6,958
  • 2
    Regression doesn't mean the same thing to a statistician and to a child psychologist. – Walter Mitty Sep 13 '14 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 Sep 15 '14 at 10:09
  • Fair enough. "regression" is short for "bug regression". Works for me. – Walter Mitty Sep 15 '14 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.

user3389773
  • 117
  • 2
  • 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. – GreenAsJade Sep 13 '14 at 07: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 Sep 14 '14 at 08: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 Sep 15 '14 at 04: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". – Joshua Taylor Sep 15 '14 at 04: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. – Walter Mitty Sep 15 '14 at 10:53
  • One not too uncommon alternative is that the bug was fixed but an other developer's update to the repository inserts an older version of the code where the bug exists. – Skadlig Sep 26 '17 at 05:49
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

Erik Kowal
  • 26,806
  • 3
    This is a true statement, but not an answer to the question. – GreenAsJade Sep 13 '14 at 07: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 Sep 15 '14 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. – stephenbayer Sep 15 '14 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. – Steve Jessop Sep 15 '14 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. Aug 01 '16 at 01: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.

Fattie
  • 10,520
  • 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". – Reversed Engineer Sep 13 '14 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. – Walter Mitty Sep 13 '14 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." – Joshua Taylor Sep 15 '14 at 04: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. – Joshua Taylor Sep 15 '14 at 04:28
  • 2
    When you get rid of horrifically useless wikipedia pages, they seem to pop up again in a few days. ;) – Walter Mitty Sep 15 '14 at 10:51
  • lol on that Walter :) – Fattie Sep 15 '14 at 10:52
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.

O.M.Y.
  • 872