gitlab.haskell.org Open in urlscan Pro
2604:1380:61:2300::1  Public Scan

Submitted URL: https://www.haskell.org/ghc/reportabug
Effective URL: https://gitlab.haskell.org/ghc/ghc/-/wikis/report-a-bug
Submission Tags: falconsandbox
Submission: On November 22 via api from US — Scanned from DE

Form analysis 2 forms found in the DOM

<form tabindex="-1" class="b-dropdown-form gl-p-0">
  <div class="gl-display-flex gl-align-items-stretch">
    <div data-testid="menu-sidebar" class="gl-w-grid-size-30 gl-flex-shrink-0 gl-bg-gray-10 gl-p-3 gl-w-full">
      <div class="gl-display-flex gl-align-items-stretch gl-flex-direction-column">
        <div data-testid="menu-section" class=""><a aria-label="Projects" data-qa-selector="menu_item_link" data-qa-title="Projects" href="/explore" class="btn top-nav-menu-item gl-display-block gl-w-full btn-default btn-md gl-button btn-default-tertiary gl-shadow-none! gl-font-weight-bold! active" data-testid="menu-item"><!----> <!---->  <span class="gl-button-text"><span class="gl-display-flex"><svg data-testid="project-icon" role="img" aria-hidden="true" class="gl-icon s16 gl-mr-3!"><use href="/assets/icons-319de3b47bd085e8b73de84bed6ed3eb7fb318aadf14d14ff781ba9a32129b45.svg#project"></use></svg> 
      Projects
      <!----></span></span></a><a aria-label="Groups" data-qa-selector="menu_item_link" data-qa-title="Groups" href="/explore/groups" class="btn top-nav-menu-item gl-display-block gl-w-full btn-default btn-md gl-button btn-default-tertiary gl-mt-1" data-testid="menu-item"><!----> <!---->  <span class="gl-button-text"><span class="gl-display-flex"><svg data-testid="group-icon" role="img" aria-hidden="true" class="gl-icon s16 gl-mr-3!"><use href="/assets/icons-319de3b47bd085e8b73de84bed6ed3eb7fb318aadf14d14ff781ba9a32129b45.svg#group"></use></svg> 
      Groups
      <!----></span></span></a><a aria-label="Snippets" data-qa-selector="menu_item_link" data-qa-title="Snippets" href="/explore/snippets" class="btn top-nav-menu-item gl-display-block gl-w-full btn-default btn-md gl-button btn-default-tertiary gl-mt-1" data-testid="menu-item"><!----> <!---->  <span class="gl-button-text"><span class="gl-display-flex"><svg data-testid="snippet-icon" role="img" aria-hidden="true" class="gl-icon s16 gl-mr-3!"><use href="/assets/icons-319de3b47bd085e8b73de84bed6ed3eb7fb318aadf14d14ff781ba9a32129b45.svg#snippet"></use></svg> 
      Snippets
      <!----></span></span></a></div>
        <div data-testid="menu-section" class="gl-pt-3 gl-border-1 gl-border-t-solid gl-border-gray-50 gl-mt-3"><a aria-label="Help" data-qa-selector="menu_item_link" data-qa-title="Help" href="/help" class="btn top-nav-menu-item gl-display-block gl-w-full btn-default btn-md gl-button btn-default-tertiary" data-testid="menu-item"><!----> <!---->  <span class="gl-button-text"><span class="gl-display-flex"><svg data-testid="question-o-icon" role="img" aria-hidden="true" class="gl-icon s16 gl-mr-3!"><use href="/assets/icons-319de3b47bd085e8b73de84bed6ed3eb7fb318aadf14d14ff781ba9a32129b45.svg#question-o"></use></svg> 
      Help
      <!----></span></span></a></div>
      </div>
    </div>
    <div data-testid="menu-subview" data-qa-selector="menu_subview_container" class="gl-w-grid-size-40 gl-overflow-hidden gl-p-3" style="display: none;"></div>
  </div>
</form>

GET /search

<form class="form-inline form-control" action="/search" accept-charset="UTF-8" method="get">
  <div class="search-input-container">
    <div class="search-input-wrap">
      <div class="dropdown" data-url="/search/autocomplete">
        <input type="search" name="search" id="search" placeholder="Search GitLab" class="search-input dropdown-menu-toggle no-outline js-search-dashboard-options" spellcheck="false" autocomplete="off" data-issues-path="/dashboard/issues"
          data-mr-path="/dashboard/merge_requests" data-qa-selector="search_term_field" aria-label="Search GitLab">
        <button class="hidden js-dropdown-search-toggle" data-toggle="dropdown" type="button"></button>
        <div class="dropdown-menu dropdown-select" data-testid="dashboard-search-options">
          <div class="dropdown-content">
            <ul>
              <li class="dropdown-menu-empty-item">
                <a>
Loading...
</a>
              </li>
            </ul>
          </div>
          <div class="dropdown-loading">
            <div class="gl-spinner-container"><span class="gl-spinner gl-spinner-orange gl-spinner-md gl-mt-7" aria-label="Loading"></span></div>
          </div>
        </div>
        <svg class="s16 search-icon" data-testid="search-icon">
          <use href="/assets/icons-319de3b47bd085e8b73de84bed6ed3eb7fb318aadf14d14ff781ba9a32129b45.svg#search"></use>
        </svg>
        <svg class="s16 clear-icon js-clear-input" data-testid="close-icon">
          <use href="/assets/icons-319de3b47bd085e8b73de84bed6ed3eb7fb318aadf14d14ff781ba9a32129b45.svg#close"></use>
        </svg>
      </div>
    </div>
  </div>
  <input type="hidden" name="group_id" id="group_id" value="2" class="js-search-group-options" data-group-path="ghc" data-name="Glasgow Haskell Compiler" data-issues-path="/groups/ghc/-/issues" data-mr-path="/groups/ghc/-/merge_requests">
  <input type="hidden" name="project_id" id="search_project_id" value="1" class="js-search-project-options" data-project-path="ghc" data-name="GHC" data-issues-path="/ghc/ghc/-/issues" data-mr-path="/ghc/ghc/-/merge_requests"
    data-issues-disabled="false">
  <input type="hidden" name="scope" id="scope" value="wiki_blobs">
  <input type="hidden" name="search_code" id="search_code" value="false">
  <input type="hidden" name="snippets" id="snippets" value="false">
  <input type="hidden" name="repository_ref" id="repository_ref">
  <input type="hidden" name="nav_source" id="nav_source" value="navbar">
  <div class="search-autocomplete-opts hide" data-autocomplete-path="/search/autocomplete" data-autocomplete-project-id="1"></div>
</form>

Text Content

Skip to content


GITLAB

 * Menu
   * Projects Groups Snippets
     Help
     

Projects Groups Snippets
 *  * Loading...
   
   
   
 * 
 * Help
    * Help
    * Support
    * Community forum
    * Keyboard shortcuts ?
    * 
    * Submit feedback
    * 

 * Sign in / Register

Toggle navigation Menu
 * GHC
 * Project information
   * Project information
   * 
   * Activity
   * Labels
   * Members
 * Repository
   * Repository
   * 
   * Files
   * Commits
   * Branches
   * Tags
   * Contributors
   * Graph
   * Compare
   * Locked Files
 * Issues 4,642
   * Issues 4,642
   * 
   * List
   * Boards
   * Service Desk
   * Milestones
   * Iterations
 * Merge requests 440
   * Merge requests 440
 * Requirements
   * Requirements
 * CI/CD
   * CI/CD
   * 
   * Pipelines
   * Jobs
   * Schedules
   * Test Cases
 * Deployments
   * Deployments
   * 
   * Environments
   * Releases
 * Monitor
   * Monitor
   * 
   * Incidents
 * Analytics
   * Analytics
   * 
   * CI/CD
   * Code review
   * Insights
   * Issue
   * Repository
   * Value stream
 * Wiki
   * Wiki
 * Snippets
   * Snippets
 * Activity
 * Graph
 * Create a new issue
 * Jobs
 * Commits
 * Issue Boards

Collapse sidebar Close sidebar
Open sidebar
 * Glasgow Haskell Compiler
 * GHC
 * Wiki


 * REPORT A BUG

Last edited by Ben Gamari 2 weeks ago
Page history New page


REPORT A BUG




REPORTING BUGS IN GHC

--------------------------------------------------------------------------------

See also Issue conventions

--------------------------------------------------------------------------------

GHC is a changing system so there are sure to be bugs in it.

To report a bug:

 * Register an account on this GitLab instance
 * Create a new bug, and enter your bug report. Make a new ticket for your bug
   unless you are 100% sure there is a ticket for your exact problem.

If you believe that your bug may have security implications please refer to
GHC's Security Disclosure Policy.


HOW DO I TELL IF I SHOULD REPORT MY BUG?

 * Is it a bug at all?. Take a look at "What to do when something goes wrong"
   from the GHC User's Guide, which will give you some guidance as to whether
   the behaviour you're seeing is really a bug or not.

 * Duplicate bug reports. Please search for existing tickets on the bug tracker
   (search box in top right hand corner) or Google. If your problem has already
   been reported, it saves time to have all the manifestations of the same bug
   gathered together. If you get an error message from GHC, a good search key is
   usually the non-program-specific part of the error message.
   
   If you do find an existing ticket that seems to describe the same problem,
   then
   
   * Add a comment that explains how it manifests for you, and add your
     description of how to reproduce it (see below)
   * Subscribe to notifications for the ticket. We will try to prioritise bugs
     that affect a lot of people.

 * RTS bugs. However, if you encounter a crash from the runtime system, then
   don't bother searching for existing tickets - just create a new ticket. These
   indicate a general RTS failure of some kind, and can arise due to a wide
   range of causes, so it is easier for us to track each failure in a separate
   ticket.
   
   > Runtime system errors usually manifest as one of the following error
   > messages:
   > 
   > internal error: evacuate: strange closure type ...
   > internal error: scavenge: unimplemented/strange closure type ...
   > internal error: update_fwd: unknown/strange object ...
   > internal error: stg_ap_v_ret

 * If in doubt, just report your bug.


WHAT TO PUT IN A BUG REPORT

The name of the bug-reporting game is: facts, facts, facts. Don't omit them
because "Oh, they won't be interested…".

The absolutely key thing is that we must be able to reproduce the bug. 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:

 * 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.
 * Zero dependencies. If we have to run cabal install, we can't put it in the
   testsuite as is. Dependencies also make it substantially harder to determine
   exactly where a bug was introduced, as it may be difficult or impossible to
   compile those dependencies at an arbitrary GHC commit. If you don't have time
   to eliminate all dependencies, or if you're unable to do so, you must include
   version numbers or git commit hashes for each remaining dependency. Failing
   to do this makes it extremely difficult to reproduce the problem; we will
   have to try to guess likely version numbers or commits based on ticket entry
   dates, which is both painful and unreliable, especially since library
   maintainers will often add workarounds for the very issues reported here.

One way to cut down programs is to replace library functions with definitions
like

  displayWidget :: This -> IO That
  displayWidget = undefined

and thereby avoid the necessity for the supporting library.

Here is a check-list of things to cover in your description:

 1. The source code of the program that shows the bug. You can give the code
    inline, or attach a file, or attach a tarball.
 2. (Only if you think the bug is platform dependent): what kind of machine are
    you running on, and exactly what version of the operating system are you
    using? (on a Unix system, uname -a or cat /etc/motd will show the desired
    information.) In the bug tracker, this information can be given in the
    "Architecture" and "Operating system" fields.
 3. What version of GCC are you using? gcc -v will tell you.
 4. Run the sequence of compiles/runs that caused the offending behaviour,
    cut-and-paste the whole session into the bug report. We'd prefer to see the
    whole thing.
 5. Add the -v flag when running GHC, so we can see exactly what was run, what
    versions of things you have, etc.
 6. Add the -dcore-lint flag when running GHC. This adds some significant
    internal consistency-checking, which often nails bugs early.
 7. What is the program behaviour that is wrong, in your opinion?

If you are a Hero and track down the problem in the compilation-system sources,
please send us patches.

Clone repository Edit sidebar

GHC Home
GHC User's Guide

JOINING IN

Newcomers info
Mailing Lists & IRC
The GHC Team

DOCUMENTATION

GHC Status Info
Working conventions
Building Guide
Debugging
Commentary

WIKI

Title Index
Recent Changes




MENU

Projects Groups Snippets
Help