Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 312876

Summary: Improve batch mode error reporting
Product: [Tools] MAT Reporter: Andrew Johnson <andrew_johnson>
Component: CoreAssignee: Project Inbox <mat.core-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: minor    
Priority: P3    
Version: 1.0   
Target Milestone: ---   
Hardware: All   
OS: All   
Whiteboard:

Description Andrew Johnson CLA 2010-05-14 04:47:29 EDT
Currently if a bad file is passed to MAT in batch mode then the log is missing key data:

!ENTRY org.eclipse.osgi 4 0 2010-05-13 18:57:50.920
!MESSAGE Application error
!STACK 1
org.eclipse.mat.SnapshotException: Error opening heap dump 'javacore.20100128.172536.454990.0001.txt'. Check the error log for further details.
	at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:239)
	at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:114)
	at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:143)
	at org.eclipse.mat.internal.apps.ParseSnapshotApp.parse(ParseSnapshotApp.java:106)
	at org.eclipse.mat.internal.apps.ParseSnapshotApp.start(ParseSnapshotApp.java:95)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:618)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1287)
Caused by: org.eclipse.core.runtime.CoreException: Error opening heap dump 'javacore.20100128.172536.454990.0001.txt'
	at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:237)
	... 17 more


The problem is that the individual parser errors are held in a CoreException MultiStatus which is lost.

In GUI mode the status is displayed.
Comment 1 Andrew Johnson CLA 2010-05-14 04:50:46 EDT
Error message is now:

Task: Processing DTFJ Image from file C:\v_drive\dumps\core.20090614.204433.20785.0001.dmp\heapdump.20090614.204433.20785.0002.phd.inbound.index9.log
[
!ENTRY org.eclipse.mat.parser 4 0 2010-05-14 09:36:56.984
!MESSAGE Error opening heap dump 'heapdump.20090614.204433.20785.0002.phd.inbound.index9.log'
!SUBENTRY 1 org.eclipse.mat.parser 4 0 2010-05-14 09:36:56.984
!MESSAGE Unable to read dump C:\v_drive\dumps\core.20090614.204433.20785.0001.dmp\heapdump.20090614.204433.20785.0002.phd.inbound.index9.log in DTFJ format DTFJ-J9
!STACK 0
java.io.IOException: Unable to read dump C:\v_drive\dumps\core.20090614.204433.20785.0001.dmp\heapdump.20090614.204433.20785.0002.phd.inbound.index9.log in DTFJ format DTFJ-J9
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.getDynamicDTFJDump(DTFJIndexBuilder.java:7660)
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.getUncachedDump(DTFJIndexBuilder.java:7391)
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.getDump(DTFJIndexBuilder.java:7289)
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.fill(DTFJIndexBuilder.java:533)
	at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:203)
	at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:114)
	at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:143)
	at org.eclipse.mat.internal.apps.ParseSnapshotApp.parse(ParseSnapshotApp.java:115)
	at org.eclipse.mat.internal.apps.ParseSnapshotApp.start(ParseSnapshotApp.java:101)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:600)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1148)
Caused by: java.io.FileNotFoundException: C:\v_drive\dumps\core.20090614.204433.20785.0001.dmp\heapdump.20090614.204433.20785.0002.phd.inbound.index9.log.xml (The system cannot find the file specified.)
	at java.io.FileInputStream.<init>(FileInputStream.java:112)
	at com.ibm.dtfj.image.j9.ImageFactory.getImage(ImageFactory.java:79)
	at com.ibm.dtfj.image.j9.ImageFactory.getImage(ImageFactory.java:65)
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.getDynamicDTFJDump(DTFJIndexBuilder.java:7616)
	... 21 more
!SUBENTRY 1 org.eclipse.mat.parser 4 0 2010-05-14 09:36:57.000
!MESSAGE Invalid HPROF file header.
!STACK 0
java.io.IOException: Invalid HPROF file header.
	at org.eclipse.mat.hprof.AbstractParser.readVersion(AbstractParser.java:135)
	at org.eclipse.mat.hprof.Pass1Parser.read(Pass1Parser.java:69)
	at org.eclipse.mat.hprof.HprofIndexBuilder.fill(HprofIndexBuilder.java:65)
	at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:203)
	at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:114)
	at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:143)
	at org.eclipse.mat.internal.apps.ParseSnapshotApp.parse(ParseSnapshotApp.java:115)
	at org.eclipse.mat.internal.apps.ParseSnapshotApp.start(ParseSnapshotApp.java:101)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:600)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1148)
!SUBENTRY 1 org.eclipse.mat.parser 4 0 2010-05-14 09:36:57.000
!MESSAGE Unable to read dump C:\v_drive\dumps\core.20090614.204433.20785.0001.dmp\heapdump.20090614.204433.20785.0002.phd.inbound.index9.log metafile null in DTFJ format DTFJ-PHD
!STACK 0
java.io.IOException: Unable to read dump C:\v_drive\dumps\core.20090614.204433.20785.0001.dmp\heapdump.20090614.204433.20785.0002.phd.inbound.index9.log metafile null in DTFJ format DTFJ-PHD
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.getDynamicDTFJDump(DTFJIndexBuilder.java:7642)
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.getUncachedDump(DTFJIndexBuilder.java:7391)
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.getDump(DTFJIndexBuilder.java:7289)
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.fill(DTFJIndexBuilder.java:533)
	at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:203)
	at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:114)
	at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:143)
	at org.eclipse.mat.internal.apps.ParseSnapshotApp.parse(ParseSnapshotApp.java:115)
	at org.eclipse.mat.internal.apps.ParseSnapshotApp.start(ParseSnapshotApp.java:101)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:600)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1148)
Caused by: java.io.IOException: Problem opening dump C:\v_drive\dumps\core.20090614.204433.20785.0001.dmp\heapdump.20090614.204433.20785.0002.phd.inbound.index9.log metafile null
	at com.ibm.dtfj.phd.PHDImage.<init>(PHDImage.java:73)
	at com.ibm.dtfj.phd.PHDImage.<init>(PHDImage.java:44)
	at com.ibm.dtfj.phd.PHDImageFactory.getImage(PHDImageFactory.java:79)
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.getDynamicDTFJDump(DTFJIndexBuilder.java:7616)
	... 21 more
Caused by: java.lang.Error: bad header in 'C:\v_drive\dumps\core.20090614.204433.20785.0001.dmp\heapdump.20090614.204433.20785.0002.phd.inbound.index9.log' : 	?@gp#9h$g-??$z0OF HP	
	=)%#4At1SD
	at com.ibm.jvm.ras.findroots.HeapdumpReader.<init>(HeapdumpReader.java:123)
	at com.ibm.dtfj.phd.PHDImage.<init>(PHDImage.java:56)
	... 24 more
!SUBENTRY 1 org.eclipse.mat.parser 4 0 2010-05-14 09:36:57.000
!MESSAGE Unable to read dump C:\v_drive\dumps\core.20090614.204433.20785.0001.dmp\heapdump.20090614.204433.20785.0002.phd.inbound.index9.log metafile null in DTFJ format DTFJ-SDFF
!STACK 0
java.io.IOException: Unable to read dump C:\v_drive\dumps\core.20090614.204433.20785.0001.dmp\heapdump.20090614.204433.20785.0002.phd.inbound.index9.log metafile null in DTFJ format DTFJ-SDFF
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.getDynamicDTFJDump(DTFJIndexBuilder.java:7642)
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.getUncachedDump(DTFJIndexBuilder.java:7391)
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.getDump(DTFJIndexBuilder.java:7289)
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.fill(DTFJIndexBuilder.java:533)
	at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:203)
	at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:114)
	at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:143)
	at org.eclipse.mat.internal.apps.ParseSnapshotApp.parse(ParseSnapshotApp.java:115)
	at org.eclipse.mat.internal.apps.ParseSnapshotApp.start(ParseSnapshotApp.java:101)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:600)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1148)
Caused by: java.io.IOException: Currently can only handle SDFF files, which _MUST have a suffix of ".sdff"_
 or svcdumps
	at com.ibm.dtfj.image.sov.ImageFactory.getImage(ImageFactory.java:101)
	at com.ibm.dtfj.image.sov.ImageFactory.getImage(ImageFactory.java:137)
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.getDynamicDTFJDump(DTFJIndexBuilder.java:7616)
	... 21 more
Caused by: com.ibm.dtfj.sov.image.UnsupportedFormatException: C:\v_drive\dumps\core.20090614.204433.20785.0001.dmp\heapdump.20090614.204433.20785.0002.phd.inbound.index9.log does not appear to be an svcdump
	at com.ibm.dtfj.sov.svcReader.SvcImageImpl.<init>(SvcImageImpl.java:77)
	at com.ibm.dtfj.image.sov.ImageFactory.getImage(ImageFactory.java:94)
	... 23 more
Caused by: java.lang.Exception: bad magic: 09840e40
	at com.ibm.jvm.svcdump.DumpReader.<init>(Dump.java:2684)
	at com.ibm.jvm.svcdump.Dump.<init>(Dump.java:449)
	at com.ibm.dtfj.sov.svcReader.SvcImageImpl.<init>(SvcImageImpl.java:74)
	... 24 more
!SUBENTRY 1 org.eclipse.mat.parser 4 0 2010-05-14 09:36:57.015
!MESSAGE Unable to read dump C:\v_drive\dumps\core.20090614.204433.20785.0001.dmp\heapdump.20090614.204433.20785.0002.phd.inbound.index9.log metafile null in DTFJ format DTFJ-Javacore
!STACK 0
java.io.IOException: Unable to read dump C:\v_drive\dumps\core.20090614.204433.20785.0001.dmp\heapdump.20090614.204433.20785.0002.phd.inbound.index9.log metafile null in DTFJ format DTFJ-Javacore
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.getDynamicDTFJDump(DTFJIndexBuilder.java:7642)
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.getUncachedDump(DTFJIndexBuilder.java:7391)
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.getDump(DTFJIndexBuilder.java:7289)
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.fill(DTFJIndexBuilder.java:533)
	at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:203)
	at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:114)
	at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:143)
	at org.eclipse.mat.internal.apps.ParseSnapshotApp.parse(ParseSnapshotApp.java:115)
	at org.eclipse.mat.internal.apps.ParseSnapshotApp.start(ParseSnapshotApp.java:101)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:600)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1148)
Caused by: java.io.IOException: Error parsing
	at com.ibm.dtfj.javacore.parser.j9.JavaCoreReader.generateImage(JavaCoreReader.java:66)
	at com.ibm.dtfj.image.javacore.JCImageFactory.getImage(JCImageFactory.java:38)
	at org.eclipse.mat.dtfj.DTFJIndexBuilder.getDynamicDTFJDump(DTFJIndexBuilder.java:7616)
	... 21 more
Caused by: com.ibm.dtfj.javacore.parser.framework.parser.ParserException: Not a javacore file. First line: „@gp¡'©`#9h$õ-g-ž¥ÀŒå “Ñ€$z0‚B„‚OF HP?IèÆ	
	at com.ibm.dtfj.javacore.parser.j9.ParserController.parse(ParserController.java:127)
	at com.ibm.dtfj.javacore.parser.j9.JavaCoreReader.generateImage(JavaCoreReader.java:64)
	... 23 more
]

!ENTRY org.eclipse.osgi 4 0 2010-05-14 09:36:57.015
!MESSAGE Application error
!STACK 1
org.eclipse.mat.SnapshotException: Error opening heap dump 'heapdump.20090614.204433.20785.0002.phd.inbound.index9.log'. Check the error log for further details.
	at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:239)
	at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:114)
	at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:143)
	at org.eclipse.mat.internal.apps.ParseSnapshotApp.parse(ParseSnapshotApp.java:115)
	at org.eclipse.mat.internal.apps.ParseSnapshotApp.start(ParseSnapshotApp.java:101)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:600)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1148)
Caused by: org.eclipse.core.runtime.CoreException: Error opening heap dump 'heapdump.20090614.204433.20785.0002.phd.inbound.index9.log'
	at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:237)
	... 17 more
Comment 2 Andrew Johnson CLA 2010-05-14 06:08:51 EDT
The full list of reasons for a failure is now given.
We now also log the IStatus.