Jump to: navigation, search

How to report a deadlock

Revision as of 02:43, 13 July 2006 by David williams.us.ibm.com (Talk | contribs) (Added some alternatives, and "preferred formatting" note)

Say you've encountered a problem in Eclipse that has one of the following symptoms:

  • A long pause where the GUI does not redraw or respond
  • A deadlock or freeze where the GUI stops responding indefinitely
  • CPU pegged at 100% indefinitely
  • A modal dialog that won't close

In all of these cases, you should report a new bug. See FAQ How do I report a bug? for more information on reporting bugs. Include the following information in the report:

  1. What build of Eclipse you are using (see Help > About)
  2. What you were doing at the time of the deadlock (what dialog, wizard, editor, etc)
  3. Whether it is reproducible; if so, provide steps
  4. Once the bug report is created, attach a stack trace using the "Create a New Attachment" link in bugzilla.

If you are running on a Sun VM, the stack trace is typically just printed directly on the console. In this case, paste the contents into a file and then attach the file. Stack traces pasted directly into bugzilla look very ugly. On an IBM VM, the stack trace is written to a file in the working directory of the Java process. Typically this will be found in the eclipse install directory. The steps for producing a stack trace vary according to what operating system you are using:

Getting a stack trace on Windows

On Windows, the Java VM is typically started by an executable called javaw.exe. If you run with the java.exe executable instead, then a Java console window will appear while it is running. If you are interested in reporting bugs, it is useful to always run with a console open so you can obtain stack traces. Here is a typical command line for starting Eclipse using java.exe:

  eclipse -vm c:\jre\bin\java.exe -vmargs -Xmx300M

Or, if you normally use your system's default java VM, you can use

  eclipse -consolelog

or, even

  eclipse -consolelog -debug

Once you have a Java console window, you can obtain a stack trace by simply hitting Ctrl+Break when the console window is active.

Note: its recommended you increase the "buffering size" of the console window, so a wide width such as 300 (default is usually 80) and perhaps even a long length (such as 3000) so there's plenty of room for a well formatted stack trace. Then, preferably, copy/paste the stack trace to a text file and attach it to a bugzilla, so its formatting is preserved.

Getting a stack trace on other platforms

On all Unix-based platforms, the steps for producing a stack dump are the same:

  1. Use the "ps" command to find out the process id (pid) of the Java VM
  2. Invoke "kill -3 <pid>" where <pid> is the process id of the Java VM