Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'tests/org.eclipse.swt.tests.win32/ManualTests/org/eclipse/swt/tests/win32/snippets/Bug543747_JvmCrash_Msctf.java')
-rw-r--r--tests/org.eclipse.swt.tests.win32/ManualTests/org/eclipse/swt/tests/win32/snippets/Bug543747_JvmCrash_Msctf.java286
1 files changed, 143 insertions, 143 deletions
diff --git a/tests/org.eclipse.swt.tests.win32/ManualTests/org/eclipse/swt/tests/win32/snippets/Bug543747_JvmCrash_Msctf.java b/tests/org.eclipse.swt.tests.win32/ManualTests/org/eclipse/swt/tests/win32/snippets/Bug543747_JvmCrash_Msctf.java
index 7bed16d8ea..9e5f96f168 100644
--- a/tests/org.eclipse.swt.tests.win32/ManualTests/org/eclipse/swt/tests/win32/snippets/Bug543747_JvmCrash_Msctf.java
+++ b/tests/org.eclipse.swt.tests.win32/ManualTests/org/eclipse/swt/tests/win32/snippets/Bug543747_JvmCrash_Msctf.java
@@ -1,143 +1,143 @@
-/*******************************************************************************
- * Copyright (c) 2019 Syntevo and others. All rights reserved.
- * The contents of this file are made available under the terms
- * of the GNU Lesser General Public License (LGPL) Version 2.1 that
- * accompanies this distribution (lgpl-v21.txt). The LGPL is also
- * available at http://www.gnu.org/licenses/lgpl.html. If the version
- * of the LGPL at http://www.gnu.org is different to the version of
- * the LGPL accompanying this distribution and there is any conflict
- * between the two license versions, the terms of the LGPL accompanying
- * this distribution shall govern.
- *
- * Contributors:
- * Syntevo - initial API and implementation
- *******************************************************************************/
-package org.eclipse.swt.tests.win32.snippets;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.*;
-import org.eclipse.swt.widgets.*;
-
-public class Bug543747_JvmCrash_Msctf {
- public static void reproduce526758(Shell parentShell) {
- Shell tempShell = new Shell(parentShell);
-
- // Create something to catch initial focus, so that
- // text.setFocus() does something. This is only to
- // show that .setFocus() is important.
- new Button(tempShell, SWT.PUSH);
-
- // This Text will cause crash.
- Text text = new Text(tempShell, 0);
-
- // Shell must be visible to prevent early return in .setFocus()
- tempShell.setSize(10, 10);
- tempShell.open();
-
- // ImmAssociateContext() itself is lazy.
- // .setFocus() causes it to start up.
- text.setFocus();
-
- // Destroying the shell triggers the bug.
- tempShell.dispose();
-
- // JVM still alive?
- MessageBox msgbox = new MessageBox(parentShell);
- msgbox.setMessage("Crash didn't reproduce");
- msgbox.open();
- }
-
- public static void reproduce543747(Shell parentShell) {
- Shell tempShell = new Shell(parentShell);
-
- // Create something to catch initial focus, so that
- // text.setFocus() does something. This is only to
- // show that .setFocus() is important.
- new Button(tempShell, SWT.PUSH);
-
- // This Text will cause crash.
- // Text needs to have an intermediate parent for this bug.
- Composite composite = new Composite(tempShell, 0);
- Text text = new Text(composite, 0);
-
- // Shell must be visible to prevent early return in .setFocus()
- tempShell.setSize(10, 10);
- tempShell.open();
-
- // ImmAssociateContext() itself is lazy.
- // .setFocus() causes it to start up.
- text.setFocus();
-
- // Destroying the shell triggers the bug.
- tempShell.dispose();
-
- // Give additional instructions
- MessageBox msgbox = new MessageBox(parentShell);
- msgbox.setMessage(
- "Now please do one of:\n" +
- "a) Open Task Manager, go to Users, right-click your user, select Disconnect, log in again\n" +
- "b) Connect Remote Desktop to this machine\n" +
- "\n" +
- "The snippet is expected to crash just after that."
- );
- msgbox.open();
- }
-
- public static void main (String [] args) {
- Display display = new Display ();
-
- Shell shell = new Shell (display);
- RowLayout layout = new RowLayout(SWT.VERTICAL);
- layout.marginHeight = 10;
- layout.marginWidth = 10;
- layout.spacing = 10;
- shell.setLayout(layout);
-
- final Text labelInfo = new Text(shell, SWT.READ_ONLY | SWT.MULTI);
- labelInfo.setText(
- "Both of these crashes are only seen on Win10 1809+\n" +
- "\n" +
- "To reproduce reliably, use Application Verifier:\n" +
- "1) Install Application Verifier:\n" +
- "a) Download Windows SDK:\n" +
- " https://go.microsoft.com/fwlink/p/?LinkID=2033908\n" +
- "b) Install it, selecting Application Verifier. Other components are not required.\n" +
- "\n" +
- "2) Configure Application Verifier\n" +
- "a) Run 'Application Verifier (X64)' from Start menu.\n" +
- "b) Use File | Add application... to add java.exe\n" +
- "c) IMPORTANT: On the right pane, make sure that only 'Basics/Heaps' is selected.\n" +
- " JVM always crashes with 'Basics/Exceptions' and 'Basics/Memory'\n" +
- "d) Click 'Save'. You can close Application Verifier now\n" +
- " It will be active until you explicitly disable it.\n" +
- "e) Restart application once.\n" +
- "f) Note: applications run slower and consume more RAM under Application Verifier.\n" +
- "\n" +
- "3) Reproduce the problem\n" +
- "\n" +
- "4) Disable Application Verifier if you want\n" +
- "a) Keep it enabled it if you're ready to tolerate the slowness, but find more bugs\n" +
- "b) Go to Application Verifier again\n" +
- "c) Delete java.exe from the list.\n" +
- "d) Click Save.\n" +
- "e) There's no need to uninstall Application Verifier, but you can do that if you like."
- );
-
- final Button button526758 = new Button(shell, SWT.PUSH);
- button526758.setText("Reproduce crash 526758");
- button526758.addListener(SWT.Selection, event -> {reproduce526758(shell);});
-
- final Button button543747 = new Button(shell, SWT.PUSH);
- button543747.setText("Reproduce crash 543747");
- button543747.addListener(SWT.Selection, event -> {reproduce543747(shell);});
-
- shell.pack();
- shell.open();
-
- while (!shell.isDisposed()) {
- if (!display.readAndDispatch ()) display.sleep ();
- }
-
- display.dispose ();
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2019 Syntevo and others. All rights reserved.
+ * The contents of this file are made available under the terms
+ * of the GNU Lesser General Public License (LGPL) Version 2.1 that
+ * accompanies this distribution (lgpl-v21.txt). The LGPL is also
+ * available at http://www.gnu.org/licenses/lgpl.html. If the version
+ * of the LGPL at http://www.gnu.org is different to the version of
+ * the LGPL accompanying this distribution and there is any conflict
+ * between the two license versions, the terms of the LGPL accompanying
+ * this distribution shall govern.
+ *
+ * Contributors:
+ * Syntevo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.swt.tests.win32.snippets;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.*;
+import org.eclipse.swt.widgets.*;
+
+public class Bug543747_JvmCrash_Msctf {
+ public static void reproduce526758(Shell parentShell) {
+ Shell tempShell = new Shell(parentShell);
+
+ // Create something to catch initial focus, so that
+ // text.setFocus() does something. This is only to
+ // show that .setFocus() is important.
+ new Button(tempShell, SWT.PUSH);
+
+ // This Text will cause crash.
+ Text text = new Text(tempShell, 0);
+
+ // Shell must be visible to prevent early return in .setFocus()
+ tempShell.setSize(10, 10);
+ tempShell.open();
+
+ // ImmAssociateContext() itself is lazy.
+ // .setFocus() causes it to start up.
+ text.setFocus();
+
+ // Destroying the shell triggers the bug.
+ tempShell.dispose();
+
+ // JVM still alive?
+ MessageBox msgbox = new MessageBox(parentShell);
+ msgbox.setMessage("Crash didn't reproduce");
+ msgbox.open();
+ }
+
+ public static void reproduce543747(Shell parentShell) {
+ Shell tempShell = new Shell(parentShell);
+
+ // Create something to catch initial focus, so that
+ // text.setFocus() does something. This is only to
+ // show that .setFocus() is important.
+ new Button(tempShell, SWT.PUSH);
+
+ // This Text will cause crash.
+ // Text needs to have an intermediate parent for this bug.
+ Composite composite = new Composite(tempShell, 0);
+ Text text = new Text(composite, 0);
+
+ // Shell must be visible to prevent early return in .setFocus()
+ tempShell.setSize(10, 10);
+ tempShell.open();
+
+ // ImmAssociateContext() itself is lazy.
+ // .setFocus() causes it to start up.
+ text.setFocus();
+
+ // Destroying the shell triggers the bug.
+ tempShell.dispose();
+
+ // Give additional instructions
+ MessageBox msgbox = new MessageBox(parentShell);
+ msgbox.setMessage(
+ "Now please do one of:\n" +
+ "a) Open Task Manager, go to Users, right-click your user, select Disconnect, log in again\n" +
+ "b) Connect Remote Desktop to this machine\n" +
+ "\n" +
+ "The snippet is expected to crash just after that."
+ );
+ msgbox.open();
+ }
+
+ public static void main (String [] args) {
+ Display display = new Display ();
+
+ Shell shell = new Shell (display);
+ RowLayout layout = new RowLayout(SWT.VERTICAL);
+ layout.marginHeight = 10;
+ layout.marginWidth = 10;
+ layout.spacing = 10;
+ shell.setLayout(layout);
+
+ final Text labelInfo = new Text(shell, SWT.READ_ONLY | SWT.MULTI);
+ labelInfo.setText(
+ "Both of these crashes are only seen on Win10 1809+\n" +
+ "\n" +
+ "To reproduce reliably, use Application Verifier:\n" +
+ "1) Install Application Verifier:\n" +
+ "a) Download Windows SDK:\n" +
+ " https://go.microsoft.com/fwlink/p/?LinkID=2033908\n" +
+ "b) Install it, selecting Application Verifier. Other components are not required.\n" +
+ "\n" +
+ "2) Configure Application Verifier\n" +
+ "a) Run 'Application Verifier (X64)' from Start menu.\n" +
+ "b) Use File | Add application... to add java.exe\n" +
+ "c) IMPORTANT: On the right pane, make sure that only 'Basics/Heaps' is selected.\n" +
+ " JVM always crashes with 'Basics/Exceptions' and 'Basics/Memory'\n" +
+ "d) Click 'Save'. You can close Application Verifier now\n" +
+ " It will be active until you explicitly disable it.\n" +
+ "e) Restart application once.\n" +
+ "f) Note: applications run slower and consume more RAM under Application Verifier.\n" +
+ "\n" +
+ "3) Reproduce the problem\n" +
+ "\n" +
+ "4) Disable Application Verifier if you want\n" +
+ "a) Keep it enabled it if you're ready to tolerate the slowness, but find more bugs\n" +
+ "b) Go to Application Verifier again\n" +
+ "c) Delete java.exe from the list.\n" +
+ "d) Click Save.\n" +
+ "e) There's no need to uninstall Application Verifier, but you can do that if you like."
+ );
+
+ final Button button526758 = new Button(shell, SWT.PUSH);
+ button526758.setText("Reproduce crash 526758");
+ button526758.addListener(SWT.Selection, event -> {reproduce526758(shell);});
+
+ final Button button543747 = new Button(shell, SWT.PUSH);
+ button543747.setText("Reproduce crash 543747");
+ button543747.addListener(SWT.Selection, event -> {reproduce543747(shell);});
+
+ shell.pack();
+ shell.open();
+
+ while (!shell.isDisposed()) {
+ if (!display.readAndDispatch ()) display.sleep ();
+ }
+
+ display.dispose ();
+ }
+}

Back to the top