How to report bugs in Ruby¶
This guide needs proofreading. 日本語版(Japanese version): HowToReportJa.
Simple steps¶
IMPORTANT: If the bug is security-related (security hole, vulnerability, etc.), Don't report it here. Please mail security@ruby-lang.org (Closed Mailing List)
- Try the latest version
- If you aren't already using the latest version, try installing a newer stable release. See Downloading Ruby
- Prepare the following things
- Reproducing steps; reproducing code is needed
- Result of `ruby -v`
- What you expected
- What happened (If you have a error log, don't omit it.)
- If Ruby crashed on OS X, you should have a crashlog under ~/Library/Logs/CrashReporter or /Library/Logs/CrashReporter. You should paste or attach it if available.
- Open the following page and click "New Issue".
- If you're reporting a bug in Ruby 1.8 ONLY: Ruby 1.8
- If you're reporting a bug in Ruby 1.9 ONLY: [[Ruby 1.9:]]
- If you're reporting a bug in both Ruby 1.9 and Ruby 1.8: [[Ruby 1.9:]], and write like "this bug can be reproduced in Ruby 1.8 as well."
- Fill the form, then register it.
- Preferred language: "English" or "Japanese"; Which language is your report written in?
- Tracker: Usually select "Bug" or "Feature".
- Subject: Write a summary of bug (or problem) in about 60 characters.
- Description: Write the things in (2)
- Status and Priority: Leave these alone.
- ruby -v: Paste `ruby -v` result.
- Assignee, Category, Target version, Start date, Due date, Estimated time, % Done: Leave these alone.
- Wait for reply
- If ticket doesn't have any replies after 10 days, you can send a reminder.
- Please reply to feedback requests. If a bug report doesn't get any feedback, it'll eventually get rejected.
More detailed steps for reporting¶
- Do some searching
- Has the problem already been reported by someone? (Search in Google or Redmine)
- Test the problem is reproducible in the trunk or maintenance branch
- Is it already fixed?
- Prepare the following things
- Reproducing steps (Smallest reproducing code)
- The minimum amount of code possible is recommended.
- If using a gem in reproducing code, write the "gem install" command in the reproduction steps.
- Only supplying a log, or something like "On an xx test" won't lead to any action by developers.
- ruby -v
- What happened?
- Don't omit running log or error log.
- if Ruby crashed in OS X, you should have crashlog under ~/Library/Logs/CrashReporter or /Library/Logs/CrashReporter. You should paste or attach it if you have one.
- What did you expect?, and why?
- Example: It is written on RDoc, It works as might have been expected on an older version, etc.
- What is the severity of the bug?
- Example of a severe bug: A regression, segfault or build failure on a supported platform, or a bug that breaks a widely used gem.
- Example of a less severe bug: A lack of consistency in an API, a bug that only occurs in a corner case, or a mild performance degredation.
- Compiler version and compiler name
- Backtrace on debugger
- "gem list" and "gem env" if the reproducing steps includes gem
- ./configure options
- Reproducing steps (Smallest reproducing code)
- Open form and fill it (See "Simple steps.")
- Wait for reply
Make better reports¶
Only on ruby
- How to get trunk; See Repository guide. If you can't use svn, download snapshot.
- How to take backtrace; Run gdb by gdb --args ruby foo.rb, Then type run, And type bt after ruby crashed.
- Check that it's not an RVM bug.
- Mention how you installed ruby. Did you install it from source, from a distribution package (which distribution?), ruby-installer,.. ?
- If you installed Ruby using RVM try replicating the bug with Ruby installed by other means.
- We used to get a lot of reports which were caused by RVM, not Ruby.
- Write unit test on report; Refer under test/ directory
- If you have written a patch, run make update-rubyspec ; make test-rubyspec ; make check and check tests passed; See DeveloperHowto on detail.
Generally
- Is it really a bug?
- Reference your claims.
- Refer to RDoc or some document to check specification
- If you aren't sure, ask in IRC or on the mailing list
- Check List of IRC and mailing lists and join them.
- Check if it is already reported by searching
- Report one thing on one report
- Write required things concisely.
- Check that the report has enough information to reproduce the bug.
After it is fixed¶
- Check it's fixed on next release.
- Check it's fixed on preview release and RC release.
Points of this guide¶
- This guide is used for making communication smoother between bug reporter and developers.
- Bug reporter isn't needed to follow this guide always. But most important things are required for bug reporting.
- Any reports won't be rejected if report doesn't follow this guide. But if report needs additional information, developer or someone requires following this guide.
- This guide isn't always right. You can fix this guide when you think it isn't right. Discussing it on mailing-list ruby-core (English) or ruby-dev (Japanese) is recommended.