... | ... | @@ -59,9 +59,13 @@ Here is a check-list of things to cover in your description: |
|
|
1. Add the `-dcore-lint` flag when running GHC. This adds some significant internal consistency-checking, which often nails bugs early.
|
|
|
1. What is the program behaviour that is wrong, in your opinion?
|
|
|
|
|
|
## 3. Minimising the repro case
|
|
|
## 3. The repro case
|
|
|
|
|
|
**The absolutely key thing is that we must be able to reproduce the bug**, the "repro case". Without this, we are virtually helpless; we know there's a problem but we usually can make no progress with fixing it. The easiest way to help us reproduce the bug is to provide us with a program that elicits it:
|
|
|
The absolutely key thing is that we must be able to reproduce the bug, the **repro case** ("repro" from "reproduction"). Without this, we are virtually helpless; we know there's a problem but often we can make no progress with fixing it.
|
|
|
|
|
|
Virtually helpless is not the same as complete helpless. Sometimes the bug manifests in some big code base, and or in a code base that you can't share. *It is still better to report the bug*, even if you can't offer a way to reproduce it. It may form part of a pattern with other bug reports, or someone may come up with good ideas for how you could narrow it down.
|
|
|
|
|
|
But we *really appreciate* effort to produce a repro case if you can:
|
|
|
|
|
|
- **As small as possible**. It costs you real work to "boil down" the bug from a big program to a small one, but the plain truth is that the easier the bug is to reproduce, and the smaller the test program (= smaller debug output), the less time it costs us to fix it. Also, as you are familiar with the code, it is generally easier for you to boil it down than for us to. Please note that instances of certain classes, whether hand-written or derived, can produce a substantial amount of code. In particular, if you can demonstrate the bug without writing or deriving instances of `Show`, `Read`, `Generic`, or `Data`, that is generally preferable. To demonstrate evaluation, prefer `deepseq` to `show`, and write any necessary `NFData` instances by hand.
|
|
|
|
... | ... | |