Difference between revisions of "How do I create a bug report"

From Lazarus wiki
Jump to navigationJump to search
(mention patch)
m (→‎Regression caused by a certain revision: remove reference to defunct git mirror)
(40 intermediate revisions by 11 users not shown)
Line 1: Line 1:
 
{{How do I create a bug report}}
 
{{How do I create a bug report}}
  
You found a bug in Lazarus, or you have a patch for a new feature/improvement and you want to report it to the developers. This page tells you how to do that.
+
This document contains some guidelines for using the FPC / Lazarus [https://gitlab.com/freepascal.org/ bug tracker] as a reporter. This document is written for FPC / Lazarus users who identify bugs, have recommendations, want to submit patches or find other issues and want to report these to the Lazarus development team.
  
The FreePascal bug reporting procedure is similar to the one described here.
+
== Code compilation errors ==
 +
If you have errors when compiling code from latest SVN revision, please contact a proper [http://freepascal.org/maillist.var FPC mailing list] or [http://lists.lazarus-ide.org/listinfo Lazarus mailing list] or better join <b>#fpc</b> or <b>#lazarus-ide</b> IRC channel on irc.freenode.net. Then the problem should be solved more promptly.
  
== Lazarus code compilation errors ==
+
== Logging in / Creating new account ==
If you have errors when compiling code from latest SVN revision, please contact the [http://lists.lazarus.freepascal.org/mailman/listinfo Mailing list] or better join #lazarus-ide IRC channel on irc.freenode.net. Then the problem should be solved more promptly.
+
You need to be logged in to edit or submit bug reports. If you are logged in as guest, you need to log out first (Guests cannot make reports, only watch them). If you already have an account, go to the [https://gitlab.com/users/sign_in login page], otherwise create a new account on the [https://gitlab.com/users/sign_up sign up page].
  
 
== Check if the bug is not already reported ==
 
== Check if the bug is not already reported ==
# Use the search field in [http://bugs.freepascal.org/view_all_bug_page.php View Issues]. Hint: The searching is not smart: e.g. if you have a problem using TEdit.SelStart, search for "SelStart".
+
Use the search field in [https://gitlab.com/groups/freepascal.org/-/issues View Issues]. Hint: The searching is not smart: e.g. if you have a problem using TEdit.SelStart, search for "SelStart".
 
If the issue is already reported:
 
If the issue is already reported:
 
* reopen it, if the bug report has been resolved or closed - use Reopen Issue button
 
* reopen it, if the bug report has been resolved or closed - use Reopen Issue button
 
* add a note, if you have reproduced this bug in a different situation than reported
 
* add a note, if you have reproduced this bug in a different situation than reported
 
* you can set the system to monitor changes in this bug report - use Monitor Issue button
 
* you can set the system to monitor changes in this bug report - use Monitor Issue button
Note: you need to be logged in to perform these operations, see section [[#Logging/Creating new account]].
+
Note: you need to be logged in to perform these operations, see section [[#Logging in / Creating new account]].
 +
 
 +
== What should be submitted via the Bug Tracker? ==
 +
* Bugs: If you identify errors, glitches, or other faults in [[FPC]] or [[Lazarus]]
 +
* Suggestions: If you have identified a better way to do something
 +
* Improvements: If you can make something work better
 +
 
 +
Please note: The Bug Tracker is '''not''' designed to field questions. These should be directed toward the Forums [http://forum.lazarus.freepascal.org/].
 +
 
 +
* For reporting, go to [https://gitlab.com/groups/freepascal.org/lazarus/-/issues Lazarus bug tracker]. You must be logged in, see section [[#Logging in / Creating new account]].
 +
* Go to the [https://gitlab.com/groups/freepascal.org/-/issues/new Report Issue] page. Fill in as much as you can and know. The more specific, the better.  
  
== Enter the bug in the Lazarus Bug Tracker ==
+
=== Bug ===
# Go to [http://bugs.freepascal.org/set_project.php?project_id=1 Lazarus bug tracker]
+
* Important fields are the OS and Product fields and the steps to reproduce this issue. If an issue cannot be reproduced by the developers, they cannot start to fix it! Do not forget to mention your specific architecture/configuration (32 or 64 bit, little or big endian if both are possible on your platform, version of your operating system).
# You need to be logged in, see section [[#Logging/Creating new account]]
+
* If possible, please <b>upload a small test application that shows the bug</b>. This will likely speed up a fix.
# Go to the [http://bugs.freepascal.org/bug_report_advanced_page.php Report Issue] page. Fill in as much as you can and know. The more specific, the better.
+
* If there is some graphical error, it is useful to upload a (partial) screenshot (in png or jpeg, not bmp format).
#* Important fields are the OS and Product fields and the steps to reproduce this issue. If an issue cannot be reproduced by the developers, they cannot start to fix it! Do not forget to mention your specific architecture/configuration (32 or 64 bit, little or big endian if both are possible on your platform, version of your operating system).
+
* If it is a crash, try to create a backtrace. See [[Creating a Backtrace with GDB]] for more info.
#* If possible, please <b>upload a small test application that shows the bug</b>. This will likely speed up a fix.
+
* You can try to reproduce the bug on as many different platforms as you can - it helps to determine if it is widget specific issue.
#* If there is some graphical error, it is useful to upload a (partial) screenshot (in png or jpeg, not bmp format).
+
* If you have a possible solution, you can add a patch - see [[Creating A Patch]], which will speed up the process.
#* If it is a crash, try to create a backtrace. See [[Creating a Backtrace with GDB]] for more info.
+
* You can boost fixing the bug by submitting a bounty, see [[Bounties]].
#* You can try to reproduce the bug on as many different platforms as you can - it helps to determine if it is widget specific issue.
 
#* If you have a possible solution, you can add a patch - see [[Creating A Patch]], which will speed up the process.
 
#* You can boost fixing the bug by submitting a bounty, see [[Bounties]].
 
The following page contains good tips about [http://www.chiark.greenend.org.uk/~sgtatham/bugs.html How to Report Bugs Effectively].
 
  
== Logging in / Creating new account ==
+
=== Regression caused by a certain revision ===
You need to be logged in to edit or submit bug reports. If you are logged in as guest, you need to log out first (Guests cannot make reports, only watch them). If you already have an account, go to the [http://bugs.freepascal.org/login_page.php login page], otherwise create a new account on the [http://bugs.freepascal.org/signup_page.php sign up page].
+
If you can find a revision in main that caused a bug, please include also its Git hash number. The report will usually be assigned to the author of that revision.
 +
You can find a quilty revision by a "bisect" process which is a binary search over the revisions. There are tools to help with that:
 +
* A Git command [https://git-scm.com/docs/git-bisect git bisect]. Git is fast in this operation because all the revision history is local and nothing needs to fetched from a server.
 +
* A Perl script [http://search.cpan.org/dist/App-SVN-Bisect/bin/svn-bisect svn-bisect], available in CPAN. It mimics the "git bisect" command but works on SVN data directly.
 +
 
 +
=== Suggestion ===
 +
Explain your idea. A GUI mockup or an example of another tool using the feature can be helpful.
 +
 
 +
=== Improvement ===
 +
* If you have implemented a new feature in the source code or improved documentation in the XML files, create a patch - see [[Creating A Patch]].
 +
* If you have improved translation in a language .po file, attach the whole .po file (not a diff).
 +
* If you have another resource file, for example an icon, attach it to the report.
  
 
==Attachments==
 
==Attachments==
Line 38: Line 56:
 
* tar.gzip (.tgz/.tar.gz)
 
* tar.gzip (.tgz/.tar.gz)
  
==See also==
+
Other formats like 7zip, Bzip and RAR are ok, too. Nowadays tools for them are easily available.
* [[Tips on writing bug reports]] detailed information on what should be covered in a bug report.
+
 
 +
==Understanding the Report Status==
 +
An issue can have the following states:
 +
* Open, but no assignee(s).
 +
* Open and 1 or more assignees: the issue has been assigned to one or more Lazarus developers, who will try to fix/implement it.
 +
* The issue has a label "Status: Confirmed": a member of the Lazarus team has duplicated the bug or agrees that the feature should be implemented
 +
* The issue has a label "Status: Feedback": the reporter should provide feedback to answer any questions posed by the Lazarus team, or to confirm that the issue is fixed satisfactorily.
 +
* Closed: the assignee has closed (and presumably fixed or dismissed) the issue.
 +
 
 +
== See also ==
 +
 
 +
* [[Tips on writing bug reports]]
 +
* [[Creating A Patch]] If you have modified the source code to implement a solution, this article helps you to add it to your bug report in the most efficient way, so that developers can add it to the main code as fast as possible
 
* [[Database bug reporting]] Specific info and sample programs for database bugs
 
* [[Database bug reporting]] Specific info and sample programs for database bugs
 
+
* [[Moderating the bug tracker]]
{{AutoCategory}}
+
* The following page contains good tips about [http://www.chiark.greenend.org.uk/~sgtatham/bugs.html How to Report Bugs Effectively].
[[category:Debugging]]
 

Revision as of 06:08, 13 January 2022

Afrikaans (af) Deutsch (de) English (en) français (fr) português (pt) русский (ru)

This document contains some guidelines for using the FPC / Lazarus bug tracker as a reporter. This document is written for FPC / Lazarus users who identify bugs, have recommendations, want to submit patches or find other issues and want to report these to the Lazarus development team.

Code compilation errors

If you have errors when compiling code from latest SVN revision, please contact a proper FPC mailing list or Lazarus mailing list or better join #fpc or #lazarus-ide IRC channel on irc.freenode.net. Then the problem should be solved more promptly.

Logging in / Creating new account

You need to be logged in to edit or submit bug reports. If you are logged in as guest, you need to log out first (Guests cannot make reports, only watch them). If you already have an account, go to the login page, otherwise create a new account on the sign up page.

Check if the bug is not already reported

Use the search field in View Issues. Hint: The searching is not smart: e.g. if you have a problem using TEdit.SelStart, search for "SelStart". If the issue is already reported:

  • reopen it, if the bug report has been resolved or closed - use Reopen Issue button
  • add a note, if you have reproduced this bug in a different situation than reported
  • you can set the system to monitor changes in this bug report - use Monitor Issue button

Note: you need to be logged in to perform these operations, see section #Logging in / Creating new account.

What should be submitted via the Bug Tracker?

  • Bugs: If you identify errors, glitches, or other faults in FPC or Lazarus
  • Suggestions: If you have identified a better way to do something
  • Improvements: If you can make something work better

Please note: The Bug Tracker is not designed to field questions. These should be directed toward the Forums [1].

Bug

  • Important fields are the OS and Product fields and the steps to reproduce this issue. If an issue cannot be reproduced by the developers, they cannot start to fix it! Do not forget to mention your specific architecture/configuration (32 or 64 bit, little or big endian if both are possible on your platform, version of your operating system).
  • If possible, please upload a small test application that shows the bug. This will likely speed up a fix.
  • If there is some graphical error, it is useful to upload a (partial) screenshot (in png or jpeg, not bmp format).
  • If it is a crash, try to create a backtrace. See Creating a Backtrace with GDB for more info.
  • You can try to reproduce the bug on as many different platforms as you can - it helps to determine if it is widget specific issue.
  • If you have a possible solution, you can add a patch - see Creating A Patch, which will speed up the process.
  • You can boost fixing the bug by submitting a bounty, see Bounties.

Regression caused by a certain revision

If you can find a revision in main that caused a bug, please include also its Git hash number. The report will usually be assigned to the author of that revision. You can find a quilty revision by a "bisect" process which is a binary search over the revisions. There are tools to help with that:

  • A Git command git bisect. Git is fast in this operation because all the revision history is local and nothing needs to fetched from a server.
  • A Perl script svn-bisect, available in CPAN. It mimics the "git bisect" command but works on SVN data directly.

Suggestion

Explain your idea. A GUI mockup or an example of another tool using the feature can be helpful.

Improvement

  • If you have implemented a new feature in the source code or improved documentation in the XML files, create a patch - see Creating A Patch.
  • If you have improved translation in a language .po file, attach the whole .po file (not a diff).
  • If you have another resource file, for example an icon, attach it to the report.

Attachments

If you add source code or project sample attachments for the bug report (strongly recommended, see Tips on writing bug reports), please compress them using preferably these formats:

  • zip (.zip)
  • gzip (.gz)
  • tar.gzip (.tgz/.tar.gz)

Other formats like 7zip, Bzip and RAR are ok, too. Nowadays tools for them are easily available.

Understanding the Report Status

An issue can have the following states:

  • Open, but no assignee(s).
  • Open and 1 or more assignees: the issue has been assigned to one or more Lazarus developers, who will try to fix/implement it.
  • The issue has a label "Status: Confirmed": a member of the Lazarus team has duplicated the bug or agrees that the feature should be implemented
  • The issue has a label "Status: Feedback": the reporter should provide feedback to answer any questions posed by the Lazarus team, or to confirm that the issue is fixed satisfactorily.
  • Closed: the assignee has closed (and presumably fixed or dismissed) the issue.

See also