Skyler Kaufman | 4443691 | 2011-04-07 15:11:52 -0700 | [diff] [blame^] | 1 | <!-- |
| 2 | Copyright 2010 The Android Open Source Project |
| 3 | |
| 4 | Licensed under the Apache License, Version 2.0 (the "License"); |
| 5 | you may not use this file except in compliance with the License. |
| 6 | You may obtain a copy of the License at |
| 7 | |
| 8 | http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | |
| 10 | Unless required by applicable law or agreed to in writing, software |
| 11 | distributed under the License is distributed on an "AS IS" BASIS, |
| 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | See the License for the specific language governing permissions and |
| 14 | limitations under the License. |
| 15 | --> |
| 16 | |
Skyler Kaufman | 991ae4d | 2011-04-07 12:30:41 -0700 | [diff] [blame] | 17 | # Report Bugs # |
| 18 | |
| 19 | Thanks for your interest in Android! One of the best ways you can help us |
| 20 | improve Android is to let us know about any problems you find with it. |
| 21 | |
| 22 | First, though: if you think you've found a security vulnerability, |
| 23 | *please don't use the forms below*. Using the public forms below may |
| 24 | allow anyone to see your report, which may put users at risk until the bug is |
| 25 | fixed. Instead, please report security bugs to our security team by emailing |
| 26 | <a href="mailto:security@android.com">security@android.com</a>. We believe in |
| 27 | responsible disclosure of security vulnerabilities, and will give you proper |
| 28 | attribution for any issues you report. |
| 29 | |
| 30 | Here's how to report non-security bugs: |
| 31 | |
| 32 | - [Search for your bug](http://code.google.com/p/android/issues/advsearch) to see if anyone has already reported it. |
| 33 | |
| 34 | - If you find your issue and it's important to you, star it! That's how we know which bugs are most important to fix. |
| 35 | |
| 36 | - If no one's reported your bug, file the bug. You can use one of these templates: |
| 37 | |
| 38 | - [Bug in your Device](http://code.google.com/p/android/issues/entry?template=User%20bug%20report) - use this if you are a user reporting a bug in a device you own |
| 39 | |
| 40 | - [Bug in the Software](http://code.google.com/p/android/issues/entry?template=Developer%20bug%20report) - use this if you found a bug in the course of developing an app |
| 41 | |
| 42 | - [Feature Request](http://code.google.com/p/android/issues/entry?template=Feature%20request) - use this for a feature you'd like to see in a future verison |
| 43 | |
| 44 | Please note that we can't guarantee that any particular bug can be fixed in |
| 45 | any particular release. To see what happens to your bug once you report it, |
| 46 | read [Life of a Bug](life-of-a-bug.html). |
| 47 | |
| 48 | In general, please put as much info in bugs as you can. Just a one liner |
| 49 | telling us something isn't working is usually useless, and will probably be |
| 50 | closed without any action. The more detail you provide, the more likely your |
| 51 | issue is to be resolved. Below, there are some examples of a good bug report |
| 52 | and a poor bug report. |
| 53 | |
| 54 | ## A Poor Bug Report ## |
| 55 | Title: Error message |
| 56 | |
| 57 | When running Eclipse I get an "Internal Error" that says "See the .log file for more details". |
| 58 | |
| 59 | Steps to reproduce: |
| 60 | Happens when "Object o = null". Doesn't happen when changed to "Object o". |
| 61 | |
| 62 | Expected results: |
| 63 | I wouldn't get the error message--would work with Object o = null. |
| 64 | |
| 65 | Observed results: |
| 66 | See above. |
| 67 | |
| 68 | This is a poor bug report because it doesn't provide any context for the |
| 69 | issue; is it a problem in the Dalvik virtual machine, the core framework, or |
| 70 | something else? It also doesn't provide any code or hint on how to reproduce |
| 71 | it. In other words, this bug report doesn't provide enough information for |
| 72 | anyone to take action on, so it would be ignored. |
| 73 | |
| 74 | ## A Good Bug Report ## |
| 75 | |
| 76 | Title: Stepping over "Object o = null" causes Eclipse "Internal Error" |
| 77 | |
| 78 | Interesting bug, while using Eclipse 3.3.1.1 with m37a of android and the following code: |
| 79 | |
| 80 | package com.saville.android; |
| 81 | |
| 82 | import android.app.Activity; |
| 83 | import android.os.Bundle; |
| 84 | import android.util.Log; |
| 85 | |
| 86 | public class TestObjectNull extends Activity { |
| 87 | /** Called when the activity is first created. */ |
| 88 | @Override |
| 89 | public void onCreate(Bundle icicle) { |
| 90 | super.onCreate(icicle); |
| 91 | setContentView(R.layout.main); |
| 92 | |
| 93 | Object o = null; |
| 94 | |
| 95 | o = "hi"; |
| 96 | |
| 97 | Log.v(TAG, "o=" + o); |
| 98 | } |
| 99 | |
| 100 | static final String TAG = "TestObjectNull"; |
| 101 | } |
| 102 | |
| 103 | Eclipse indicates an "Internal Error" with "See the .log file for more |
| 104 | details" and then asks if I want to exit the workbench. This occurs when I |
| 105 | place a break point on "setContentView(R.layout.main);" and then single |
| 106 | step over "Object o = null;" |
| 107 | |
| 108 | If I change "Object o = null;" to "Object o" all is well. |
| 109 | |
| 110 | The last lines of the .log file are: |
| 111 | |
| 112 | !ENTRY org.eclipse.core.jobs 4 2 2008-01-01 13:04:15.825 |
| 113 | !MESSAGE An internal error occurred during: "has children update". |
| 114 | !STACK 0 |
| 115 | java.lang.InternalError: Invalid signature: "<null>" |
| 116 | at |
| 117 | org.eclipse.jdi.internal.TypeImpl.signatureToTag(TypeImpl.java:307) |
| 118 | at |
| 119 | org.eclipse.jdi.internal.LocalVariableImpl.tag(LocalVariableImpl.java:185) |
| 120 | at |
| 121 | org.eclipse.jdi.internal.StackFrameImpl.getValues(StackFrameImpl.java:128) |
| 122 | at |
| 123 | org.eclipse.jdi.internal.StackFrameImpl.getValue(StackFrameImpl.java:73) |
| 124 | at |
| 125 | org.eclipse.jdt.internal.debug.core.model.JDILocalVariable.retrieveValue(JDILocalVariable.java:57) |
| 126 | at |
| 127 | org.eclipse.jdt.internal.debug.core.model.JDIVariable.getCurrentValue(JDIVariable.java:66) |
| 128 | at |
| 129 | org.eclipse.jdt.internal.debug.core.model.JDIVariable.getValue(JDIVariable.java:88) |
| 130 | at |
| 131 | org.eclipse.debug.internal.ui.model.elements.VariableContentProvider.hasChildren(VariableContentProvider.java:62) |
| 132 | at |
| 133 | org.eclipse.jdt.internal.debug.ui.variables.JavaVariableContentProvider.hasChildren(JavaVariableContentProvider.java:73) |
| 134 | at |
| 135 | org.eclipse.debug.internal.ui.model.elements.ElementContentProvider.updateHasChildren(ElementContentProvider.java:223) |
| 136 | at |
| 137 | org.eclipse.debug.internal.ui.model.elements.ElementContentProvider$3.run(ElementContentProvider.java:200) |
| 138 | at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) |
| 139 | |