Index: trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java	(revision 6102)
+++ trunk/src/org/openstreetmap/josm/actions/ShowStatusReportAction.java	(revision 6103)
@@ -30,4 +30,5 @@
 import org.openstreetmap.josm.tools.BugReportExceptionHandler;
 import org.openstreetmap.josm.tools.OpenBrowser;
+import org.openstreetmap.josm.tools.PlatformHookUnixoid;
 import org.openstreetmap.josm.tools.PlatformHookWindows;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -85,4 +86,12 @@
         text.append("Java version: " + System.getProperty("java.version") + ", " + System.getProperty("java.vendor") + ", " + System.getProperty("java.vm.name"));
         text.append("\n");
+        if (Main.platform.getClass() == PlatformHookUnixoid.class) {
+            String packageDetails = ((PlatformHookUnixoid) Main.platform).getJavaPackageDetails();
+            if (packageDetails != null) {
+                text.append("Java package: ");
+                text.append(packageDetails);
+                text.append("\n");
+            }
+        }
         try {
             final String env_java_home = System.getenv("JAVA_HOME");
Index: trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java	(revision 6102)
+++ trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java	(revision 6103)
@@ -11,4 +11,6 @@
 import java.io.IOException;
 import java.io.InputStreamReader;
+import java.util.Arrays;
+import java.util.List;
 
 /**
@@ -88,4 +90,39 @@
     {
         return from.renameTo(to);
+    }
+
+    /**
+     * Get the Java package name including detailed version.
+     *
+     * Some Java bugs are specific to a certain security update, so in addition
+     * to the Java version, we also need the exact package version.
+     *
+     * This was originally written for #8921, so only Debian based distributions
+     * are covered at the moment. This can be extended to other distributions
+     * if needed.
+     *
+     * @return The package name and package version if it can be identified, null
+     * otherwise
+     */
+    public String getJavaPackageDetails() {
+        try {
+            String dist = Utils.execOutput(Arrays.asList("lsb_release", "-i", "-s"));
+            if ("Debian".equalsIgnoreCase(dist) || "Ubuntu".equalsIgnoreCase(dist)) {
+                String javaHome = System.getProperty("java.home");
+                if ("/usr/lib/jvm/java-6-openjdk-amd64/jre".equals(javaHome) ||
+                        "/usr/lib/jvm/java-6-openjdk-i386/jre".equals(javaHome) ||
+                        "/usr/lib/jvm/java-6-openjdk/jre".equals(javaHome)) {
+                    String version = Utils.execOutput(Arrays.asList("dpkg-query", "--show", "--showformat", "${Architecture}-${Version}", "openjdk-6-jre"));
+                    return "openjdk-6-jre:" + version;
+                }
+                if ("/usr/lib/jvm/java-7-openjdk-amd64/jre".equals(javaHome) ||
+                        "/usr/lib/jvm/java-7-openjdk-i386/jre".equals(javaHome)) {
+                    String version = Utils.execOutput(Arrays.asList("dpkg-query", "--show", "--showformat", "${Architecture}-${Version}", "openjdk-7-jre"));
+                    return "openjdk-7-jre:" + version;
+                }
+            }
+        } catch (IOException e) {
+        }
+        return null;
     }
 
Index: trunk/src/org/openstreetmap/josm/tools/Utils.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 6102)
+++ trunk/src/org/openstreetmap/josm/tools/Utils.java	(revision 6103)
@@ -664,3 +664,30 @@
         return str.substring(start, end);
     }
+
+    /**
+     * Runs an external command and returns the standard output.
+     * 
+     * The program is expected to execute fast.
+     * 
+     * @param command the command with arguments
+     * @return the output
+     * @throws IOException when there was an error, e.g. command does not exist
+     */
+    public static String execOutput(List<String> command) throws IOException {
+        Process p = new ProcessBuilder(command).start();
+        BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
+        StringBuilder all = null;
+        String line;
+        while ((line = input.readLine()) != null) {
+            if (all == null) {
+                all = new StringBuilder(line);
+            } else {
+                all.append(line);
+                all.append("\n");
+            }
+        }
+        Utils.close(input);
+        return all.toString();
+    }
+
 }
