Search code examples
javaeclipsedebuggingwindbgcrash-dumps

Determine version of Eclipse from crash dump


I have a crash dump of Eclipse and want to report a bug. For the bug report, I'd like to specify the version of Eclipse that crashed, since it might be related to the problem.

Unfortunately, my usual way does not work, lm vm does not show version information:

0:048> lm vm eclipse
start             end                 module name
00000000`00400000 00000000`0044f000   eclipse    (deferred)             
    Image path: C:\Program Files\eclipse\eclipse.exe
    Image name: eclipse.exe
    Timestamp:        Wed Feb 04 14:12:28 2015 (54D21ABC)
    CheckSum:         00050686
    ImageSize:        0004F000
    File version:     0.0.0.0
    Product version:  0.0.0.0
    File flags:       0 (Mask 0)
    File OS:          0 Unknown Base
    File type:        0.0 Unknown
    File date:        00000000.00000000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4

The time stamp does not exactly correlate to release dates of Eclipse, so I wonder whether this was an official release or a nightly build.

Is there another method of determining the version number of Eclipse in the dump?


Solution

  • Splash screens to the rescue:

    0:048> .foreach (addr {s -[1]u  0000000 L?ffffffff`ffffffff "\splash.bmp"}) {du ${addr}-0n42 L0n31}
    00000000`005f82dc  "4.4.2.v20150204-1700\splash.bmp"
    00000000`005f97ce  "4.4.2.v20150204-1700\splash.bmp"
    00000000`7200de06  "itdata"
    00000000`7200de5e  "c%s"
    00000000`e0f74a36  ""
    00000000`e0f7cd86  "4.4.2.v20150204-1700\splash.bmp"
    00000000`e0f9f3e0  "4.4.2.v20150204-1700\splash.bmp"
    

    I found this solution by searching the dump for potential version numbers in a hex editor, then building a command for WinDbg in case anyone else needs to find out the version of Eclipse.

    Above script may of course break at any time when the splash screen file is renamed or Eclipse decides to not use a splash screen any more.