do stack traces help developers fix bugs?
DESCRIPTION
This is a presentation I gave at MSR (www.msrconf.org) in Cape Town, South Africa.TRANSCRIPT
at java.io.DataInputStream.readUnsignedShort(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at org.eclipse.core.internal.dtree.DataTreeReader.readNode (DataTreeReader.java:57) at org.eclipse.core.internal.dtree.DataTreeReader.readTree (DataTreeReader.java:126) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDelta (ElementTreeReaderImpl_1.java:44) at org.eclipse.core.internal.watson.ElementTreeReader.readDelta (ElementTreeReader.java:92) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDeltaChain (ElementTreeReaderImpl_1.java:89) at org.eclipse.core.internal.watson.ElementTreeReader.readDeltaChain (ElementTreeReader.java:102) at org.eclipse.core.internal.resources.WorkspaceTreeReader.readTrees (WorkspaceTreeReader.java:107) at org.eclipse.core.internal.resources.WorkspaceTreeReader.readTree (WorkspaceTreeReader.java:44) at org.eclipse.core.internal.resources.SaveManager.restoreTree (SaveManager.java:704) at org.eclipse.core.internal.resources.SaveManager.restore (SaveManager.java:453) at org.eclipse.core.internal.resources.SaveManager.startup (SaveManager.java:937) at org.eclipse.core.internal.resources.Workspace.startup (Workspace.java:1487) at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702) at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744) at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source) at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163) at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method) at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735) at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200)
Do Stack Traces Help Developers Fix Bugs?
Adrian SchröterUniversity of Victoria
Nicolas BettenburgQueens University
Rahul PremrajVU University Amsterdam
java.io.EOFException
at java.io.DataInputStream.readUnsignedShort(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source)
at org.eclipse.core.internal.dtree.DataTreeReader.readNode (DataTreeReader.java:57) at org.eclipse.core.internal.dtree.DataTreeReader.readTree (DataTreeReader.java:126)
at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDelta (ElementTreeReaderImpl_1.java:44) at org.eclipse.core.internal.watson.ElementTreeReader.readDelta (ElementTreeReader.java:92) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDeltaChain (ElementTreeReaderImpl_1.java:89)
at org.eclipse.core.internal.watson.ElementTreeReader.readDeltaChain (ElementTreeReader.java:102) at org.eclipse.core.internal.resources.WorkspaceTreeReader.readTrees (WorkspaceTreeReader.java:107)
at org.eclipse.core.internal.resources.WorkspaceTreeReader.readTree (WorkspaceTreeReader.java:44) at org.eclipse.core.internal.resources.SaveManager.restoreTree (SaveManager.java:704) at org.eclipse.core.internal.resources.SaveManager.restore (SaveManager.java:453)
at org.eclipse.core.internal.resources.SaveManager.startup (SaveManager.java:937) at org.eclipse.core.internal.resources.Workspace.startup (Workspace.java:1487)
at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690)
at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702)
at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source)
at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source)
at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163)
at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method)
at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735)
at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200)
at org.eclipse.core.launcher.Main.run (Main.java:643) at org.eclipse.core.launcher.Main.main (Main.java:476)
at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690)
at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702)
at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source)
at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source)
at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163)
at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method)
at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735)
at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200)
at org.eclipse.core.launcher.Main.run (Main.java:643) at org.eclipse.core.launcher.Main.main (Main.java:476)
at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690)
at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702)
at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source)
at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source)
at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163)
at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method)
at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735)
at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200)
at org.eclipse.core.launcher.Main.run (Main.java:643) at org.eclipse.core.launcher.Main.main (Main.java:476)
at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690)
at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702)
at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source)
at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source)
at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163)
at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method)
at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735)
at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200)
at org.eclipse.core.launcher.Main.run (Main.java:643) at org.eclipse.core.launcher.Main.main (Main.java:476)
at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690)
at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702)
at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source)
at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source)
at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163)
at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method)
at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735)
at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200)
at org.eclipse.core.launcher.Main.run (Main.java:643) at org.eclipse.core.launcher.Main.main (Main.java:476)
at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690)
at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702)
at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758)
at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source)
at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source)
at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163)
at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method)
at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735)
at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200)
at org.eclipse.core.launcher.Main.run (Main.java:643) at org.eclipse.core.launcher.Main.main (Main.java:476)
A stack trace from an
Eclipse bug report
java.io.EOFException at java.io.DataInputStream.readUnsignedShort(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at org.eclipse.core.internal.dtree.DataTreeReader.readNode (DataTreeReader.java:57) at org.eclipse.core.internal.dtree.DataTreeReader.readTree (DataTreeReader.java:126) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDelta (ElementTreeReaderImpl_1.java:44) at org.eclipse.core.internal.watson.ElementTreeReader.readDelta (ElementTreeReader.java:92)
java.io.EOFException at java.io.DataInputStream.readUnsignedShort(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at org.eclipse.core.internal.dtree.DataTreeReader.readNode (DataTreeReader.java:57) at org.eclipse.core.internal.dtree.DataTreeReader.readTree (DataTreeReader.java:126) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDelta (ElementTreeReaderImpl_1.java:44) at org.eclipse.core.internal.watson.ElementTreeReader.readDelta (ElementTreeReader.java:92)
Is there empirical evidence showing their helpfulness?
Overview
Are Bugs Fixed in Methods in Stack Traces?
Which Part of the Stack Trace is Most Helpful?
Are multipleStack Trace better
than one?Do Stack Traces
Help Fix Bugs Faster?
1 2
3 4
java.io.EOFException at java.io.DataInputStream.readUnsignedShort(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at org.eclipse.core.internal.dtree.DataTreeReader.readNode (DataTreeReader.java:57) at org.eclipse.core.internal.dtree.DataTreeReader.readTree (DataTreeReader.java:126) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDelta (ElementTreeReaderImpl_1.java:44) at org.eclipse.core.internal.watson.ElementTreeReader.readDelta (ElementTreeReader.java:92) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDeltaChain (ElementTreeReaderImpl_1.java:89) at org.eclipse.core.internal.watson.ElementTreeReader.readDeltaChain (ElementTreeReader.java:102) at org.eclipse.core.internal.resources.WorkspaceTreeReader.readTrees (WorkspaceTreeReader.java:107) at org.eclipse.core.internal.resources.WorkspaceTreeReader.readTree (WorkspaceTreeReader.java:44) at org.eclipse.core.internal.resources.SaveManager.restoreTree (SaveManager.java:704) at org.eclipse.core.internal.resources.SaveManager.restore (SaveManager.java:453) at org.eclipse.core.internal.resources.Workspace.startup (Workspace.java:1487) at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702) at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744) at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source) at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163) at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method) at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735) at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200) at org.eclipse.core.launcher.Main.run (Main.java:643) at org.eclipse.core.launcher.Main.main (Main.java:476)
at org.eclipse.core.internal.resources.SaveManager.startup (SaveManager.java:937)
Are Bugs Fixed in Methods in Stack Traces?
Are Bugs Fixed in MEthods in Stack Traces?
Bugzilla DB CVS
Linking Fixes
to Changes
Do Stack Traces Help Developers Fix Bugs?
0 2,250 4,500 6,750 9,000
8580
3940
2321#with
fix frame
#linked
#bugs fixed with traces
java.io.EOFException at java.io.DataInputStream.readUnsignedShort(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at java.io.DataInputStream.readUTF(Unknown Source) at org.eclipse.core.internal.dtree.DataTreeReader.readNode (DataTreeReader.java:57) at org.eclipse.core.internal.dtree.DataTreeReader.readTree (DataTreeReader.java:126) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDelta (ElementTreeReaderImpl_1.java:44) at org.eclipse.core.internal.watson.ElementTreeReader.readDelta (ElementTreeReader.java:92) at org.eclipse.core.internal.watson.ElementTreeReaderImpl_1.readDeltaChain (ElementTreeReaderImpl_1.java:89) at org.eclipse.core.internal.watson.ElementTreeReader.readDeltaChain (ElementTreeReader.java:102) at org.eclipse.core.internal.resources.WorkspaceTreeReader.readTrees (WorkspaceTreeReader.java:107) at org.eclipse.core.internal.resources.WorkspaceTreeReader.readTree (WorkspaceTreeReader.java:44) at org.eclipse.core.internal.resources.SaveManager.restoreTree (SaveManager.java:704) at org.eclipse.core.internal.resources.SaveManager.restore (SaveManager.java:453) at org.eclipse.core.internal.resources.SaveManager.startup (SaveManager.java:937) at org.eclipse.core.internal.resources.Workspace.startup (Workspace.java:1487) at org.eclipse.core.internal.resources.Workspace.open (Workspace.java:1279) at org.eclipse.core.resources.ResourcesPlugin.startup (ResourcesPlugin.java:201) at org.eclipse.core.internal.plugins.PluginDescriptor$1.run (PluginDescriptor.java:690) at org.eclipse.core.internal.runtime.InternalPlatform.run (InternalPlatform.java:802) at org.eclipse.core.internal.plugins.PluginDescriptor.internalDoPluginActivation (PluginDescriptor.java:702) at org.eclipse.core.internal.plugins.PluginDescriptor.doPluginActivation (PluginDescriptor.java:182) at org.eclipse.core.internal.plugins.PluginClassLoader.activatePlugin (PluginClassLoader.java:58) at org.eclipse.core.internal.plugins.PluginClassLoader.findClassParentsSelf (PluginClassLoader.java:136) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:750) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.access$0 (DelegatingURLClassLoader.java:744) at org.eclipse.core.internal.boot.DelegatingURLClassLoader$DelegateLoader.loadClass (DelegatingURLClassLoader.java:70) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.findClassPrerequisites (DelegatingURLClassLoader.java:429) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:758) at org.eclipse.core.internal.boot.DelegatingURLClassLoader.loadClass (DelegatingURLClassLoader.java:730) at java.lang.ClassLoader.loadClass (Unknown Source) at java.lang.ClassLoader.loadClassInternal (Unknown Source) at java.lang.Class.newInstance0 (Native Method) at java.lang.Class.newInstance (Unknown Source) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:134) at org.eclipse.core.internal.plugins.PluginDescriptor.createExecutableExtension (PluginDescriptor.java:163) at org.eclipse.core.internal.plugins.ConfigurationElement.createExecutableExtension (ConfigurationElement.java:102) at org.eclipse.core.internal.runtime.InternalPlatform.loaderGetRunnable (InternalPlatform.java:449) at java.lang.reflect.Method.invoke(Native Method) at org.eclipse.core.internal.boot.InternalBootLoader.getRunnable (InternalBootLoader.java:436) at org.eclipse.core.internal.boot.InternalBootLoader.run (InternalBootLoader.java:735) at org.eclipse.core.boot.BootLoader.run (BootLoader.java:462) at java.lang.reflect.Method.invoke (Native Method) at org.eclipse.core.launcher.Main.basicRun (Main.java:200) at org.eclipse.core.launcher.Main.run (Main.java:643) at org.eclipse.core.launcher.Main.main (Main.java:476)
Which Part of the Stack Trace is Most Helpful?
0 750 1,500 2,250 3,000
40%
2321#with
fix frametop-1
Which Part of the Stack Trace is Most Helpful?
top-6
top-10
60%
90%
Single Stack Trace
Multiple Stack Traces
0 1,500 3,000 4,500 6,000
Fixed Bugs Open Bugs
5531
3210
3049
1157
Are multiple Stack Trace better than one?
Single Stack Trace
Multiple Stack Traces
0 1,500 3,000 4,500 6,000
Fixed Bugs Open Bugs
5531
3210
3049
1157
Are multiple Stack Trace better than one?
63% vs. 72% fix rate
Do Stack Traces Help Fix Bugs Faster?
Median Life Time
Average Life Time
0 10 20 30 40
with Fix Frame without Fix Frame
• Higher chance of getting your bugs fixed
It Pays to Go the Extra Mile!
• Higher chance of getting your bugs fixed
• Your bug gets fixed sooner
It Pays to Go the Extra Mile!
• Higher chance of getting your bugs fixed
• Your bug gets fixed sooner
• Developers know where to fix your bug
It Pays to Go the Extra Mile!