Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8166040

[MacOSX 10.12] Pressing a modifier key results in NullPointerException thrown by applets

    XMLWordPrintable

Details

    • x86
    • os_x

    Description

      FULL PRODUCT VERSION :
      java version "1.8.0_102"
      Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
      Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

      ADDITIONAL OS VERSION INFORMATION :
      macOS Sierra Golden Master

      System Version: macOS 10.12 (16A319)
      Kernel Version: Darwin 16.0.0
      Boot Volume: Sierra


      A DESCRIPTION OF THE PROBLEM :
      Applets expecting user's input throw a native exception if any of the modifier keys (Caps Lock, Shift, Alt, etc) is pressed.

      This issue occurs to all the Java applets tested so far (RDP, SSH applets).

      While rendering poor user experience in general, this issue is especially bad for the fullscreen applets as the pop-up dialog is hidden beneath the main window and user cannot perform any further action being trapped into their fullscreen session (e.g., RDP applets).

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      1. Go to the SSH MindTerm Java applet page:
      https://www.rbvi.ucsf.edu/home/tef/ssh/

      2. When applet window is shown, put focus into it and press some modifier key, e.g. Caps Lock.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      The modifier key applies silently, e.g. for Caps Lock the letters default register is switched.
      ACTUAL -
      Java shows the "Internal Error" dialog asking the user to either "Continue" or "Crash" the Java process.

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      Exception Name: JavaNativeException
      Description: java.lang.NullPointerException
      at sun.awt.SunToolkit.getSystemEventQueueImplPP(SunToolkit.java:1090)
      at sun.awt.SunToolkit.getSystemEventQueueImplPP(SunToolkit.java:1085)
      at sun.awt.SunToolkit.getSystemEventQueueImpl(SunToolkit.java:1080)
      at java.awt.Toolkit.getEventQueue(Toolkit.java:1734)
      at java.awt.EventQueue.invokeLater(EventQueue.java:1266)
      at sun.plugin2.main.client.MacOSXKeyHandler.notifyFlagsChangedFromNative(Unknown Source)

      User Info: (null)

      0 CoreFoundation 0x00007fffb920d7bb __exceptionPreprocess + 171
      1 libobjc.A.dylib 0x00007fffcd97aa2a objc_exception_throw + 48
      2 CoreFoundation 0x00007fffb920d709 -[NSException raise] + 9
      3 JavaNativeFoundation 0x000000010fc8701a JNFCallStaticVoidMethod + 233
      4 libnpjp2.dylib 0x000000011322fc37 flagsChanged + 72
      5 SkyLight 0x00007fffca5e9376 processDecodedEventRef + 113
      6 SkyLight 0x00007fffca5e8bc1 processEventTapData + 543
      7 SkyLight 0x00007fffca6020be _XPostEventTapData + 261
      8 SkyLight 0x00007fffca5e894c eventTapMessageHandler + 137
      9 CoreFoundation 0x00007fffb918d4dd __CFMachPortPerform + 253
      10 CoreFoundation 0x00007fffb918d3c9 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 41
      11 CoreFoundation 0x00007fffb918d341 __CFRunLoopDoSource1 + 465
      12 CoreFoundation 0x00007fffb9185435 __CFRunLoopRun + 2405
      13 CoreFoundation 0x00007fffb9184874 CFRunLoopRunSpecific + 420
      14 HIToolbox 0x00007fffb8724f6c RunCurrentEventLoopInMode + 240
      15 HIToolbox 0x00007fffb8724da1 ReceiveNextEventCommon + 432
      16 HIToolbox 0x00007fffb8724bd6 _BlockUntilNextEventMatchingListInModeWithFilter + 71
      17 AppKit 0x00007fffb6e1b5f5 _DPSNextEvent + 1093
      18 AppKit 0x00007fffb752b8eb -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1637
      19 libosxapp.dylib 0x00000001118fd3aa -[NSApplicationAWT nextEventMatchingMask:untilDate:inMode:dequeue:] + 124
      20 AppKit 0x00007fffb6e0ffbd -[NSApplication run] + 926
      21 libosxapp.dylib 0x00000001118fd14d +[NSApplicationAWT runAWTLoopWithApp:] + 156
      22 libawt_lwawt.dylib 0x000000011188a4b3 -[AWTStarter starter:] + 905
      23 Foundation 0x00007fffbabeff2a __NSThreadPerformPerform + 326
      24 CoreFoundation 0x00007fffb91a4581 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
      25 CoreFoundation 0x00007fffb918598c __CFRunLoopDoSources0 + 556
      26 CoreFoundation 0x00007fffb9184e76 __CFRunLoopRun + 934
      27 CoreFoundation 0x00007fffb9184874 CFRunLoopRunSpecific + 420
      28 java 0x0000000109b44465 CreateExecutionEnvironment + 871
      29 java 0x0000000109b4018c JLI_Launch + 1952
      30 java 0x0000000109b464c2 main + 101
      31 java 0x0000000109b3f9e4 start + 52
      32 ??? 0x000000000000000e 0x0 + 14


      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      This open source applet can be used to reproduce this:
      https://github.com/thshdw/lixia-javardp

      For a ready compiled applet (another one), go to
      https://www.rbvi.ucsf.edu/home/tef/ssh/
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      It appears JRE 9 EarlyAccess is not affected:
      JRE version 9-ea+135

      Attachments

        Issue Links

          Activity

            People

              alitvinov Anton Litvinov (Inactive)
              webbuggrp Webbug Group
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: