<AWT Dev> Crash in "getNumButtons" (libawt_xawt.so) after applying Linux OS patch " libXi6-1.7.4-12.2.x86_64
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Tue Nov 14 20:27:40 UTC 2017
Hi,
I have a question about this bug.
- Why the value 3 is returned? Why it is not zero?
I think this is a bug which was discussed here:
https://lists.x.org/archives/xorg-devel/2016-October/051607.html
Those xix updates the spec of this method:
"+RETURN VALUE
+------------
+
+ XListInputDevices returns a pointer to an array of XDeviceInfo
+ structs and sets ndevices_return to the number of elements in
+ that array. To free the XDeviceInfo array created by
+ XListInputDevices, use XFreeDeviceList.
+
+ On error, XListInputDevices returns NULL and ndevices_return is
+ left unmodified."
Can you please confirm that by initialization of "ndevices" to zero
before calling the XListInputDevices.
On 10/11/2017 05:26, Jitendra Singh wrote:
> Hi,
>
> *DETAILS ABOUT THE PROBLEM*
> Crash in "getNumButtons" (libawt_xawt.so) after applying Linux OS patch
> " libXi6-1.7.4-12.2.x86_64.
>
> Inactive hide details for Java Call Stack:-Java Call Stack:-
> AWT-EventQueue-0 (java.awt.EventDispatchThread at 0xFFEEA8D8)
> sun/awt/X11/XToolkit.getNumberOfButtonsImpl ()I
> sun/awt/X11/XToolkit.getNumberOfButtons ()I(1483)
> sun/awt/X11/XToolkit.initializeDesktopProperties ()V(1466)
> java/awt/Toolkit.getDesktopProperty
> (Ljava/lang/String;)Ljava/lang/Object;(1801)
> sun/swing/SwingUtilities2$AATextInfo.getAATextInfo
> (Z)Lsun/swing/SwingUtilities2$AATextInfo;(163)
> javax/swing/plaf/metal/MetalLookAndFeel.initComponentDefaults
> (Ljavax/swing/UIDefaults;)V
> javax/swing/plaf/basic/BasicLookAndFeel.getDefaults
> ()Ljavax/swing/UIDefaults;(159)
> javax/swing/plaf/metal/MetalLookAndFeel.getDefaults
> ()Ljavax/swing/UIDefaults;(1588)
> javax/swing/UIManager.setLookAndFeel (Ljavax/swing/LookAndFeel;)V(550)
> javax/swing/UIManager.setLookAndFeel (Ljava/lang/String;)V(590)
> javax/swing/UIManager.initializeDefaultLAF (Ljava/util/Properties;)V(1360)
> javax/swing/UIManager.initialize ()V(1470)
> javax/swing/UIManager.maybeInitialize ()V(1437)
> javax/swing/UIManager.getUI
> (Ljavax/swing/JComponent;)Ljavax/swing/plaf/ComponentUI;(1017)
> javax/swing/JPanel.updateUI ()V(137)
> javax/swing/JPanel.<init> (Ljava/awt/LayoutManager;Z)V(97)
> javax/swing/JPanel.<init> (Ljava/awt/LayoutManager;)V(106)
> com/ibm/acsp/monitor/MonitorPanel.<init> ()V
> com/ibm/acsp/monitor/Monitor.<init> ()V
> com/ibm/acsp/monitor/Monitor$4.run ()V
> java/awt/event/InvocationEvent.dispatch ()V(322)
> java/awt/EventQueue.dispatchEventImpl
> (Ljava/awt/AWTEvent;Ljava/lang/Object;)V(767)
> java/awt/EventQueue.access$500
> (Ljava/awt/EventQueue;Ljava/awt/AWTEvent;Ljava/lang/Object;)V(108)
> java/awt/EventQueue$3.run ()Ljava/lang/Void;(720)
> java/awt/EventQueue$3.run ()Ljava/lang/Object;(714)
> java/security/AccessController.doPrivileged
> (Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;)Ljava/lang/Object;(529)
> java/security/ProtectionDomain$1.doIntersectionPrivilege
> (Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;Ljava/security/AccessControlContext;)Ljava/lang/Object;(86)
> java/awt/EventQueue.dispatchEvent (Ljava/awt/AWTEvent;)V(737)
> java/awt/EventDispatchThread.pumpOneEventForFilters (I)V(212)
> java/awt/EventDispatchThread.pumpEventsForFilter
> (ILjava/awt/Conditional;Ljava/awt/EventFilter;)V(127)
> java/awt/EventDispatchThread.pumpEventsForHierarchy
> (ILjava/awt/Conditional;Ljava/awt/Component;)V(116)
> java/awt/EventDispatchThread.pumpEvents (ILjava/awt/Conditional;)V(112)
> java/awt/EventDispatchThread.pumpEvents (Ljava/awt/Conditional;)V(104)
> java/awt/EventDispatchThread.run ()V(93)
>
> Native Call Stack:-
>
> ./opt/ibm/acsp-server/jvm64/jre/lib/amd64/compressedrefs/libj9prt28.so
> <signal handler called>
> getNumButtons () from
> ./opt/ibm/acsp-server/jvm64/jre/lib/amd64/libawt_xawt.so
> Java_sun_awt_X11_XToolkit_getNumberOfButtonsImpl () from
> ./opt/ibm/acsp-server/jvm64/jre/lib/amd64/libawt_xawt.so
> JVMprJavaSendNative () from
> ./opt/ibm/acsp-server/jvm64/jre/lib/amd64/compressedrefs/libj9vm28.so
> ?? ()
> resolveSpecialMethodRefInto () from
> ./opt/ibm/acsp-server/jvm64/jre/lib/amd64/compressedrefs/libj9vm28.so
> VM_BytecodeInterpreter::run(J9VMThread*) () from
> ./opt/ibm/acsp-server/jvm64/jre/lib/amd64/compressedrefs/libj9vm28.so
> bytecodeLoop () from
> ./opt/ibm/acsp-server/jvm64/jre/lib/amd64/compressedrefs/libj9vm28.so
>
> Inactive hide details for Native StackNative Stack
> ./opt/ibm/acsp-server/jvm64/jre/lib/amd64/compressedrefs/libj9prt28.so
> <signal handler called>
> getNumButtons () from
> ./opt/ibm/acsp-server/jvm64/jre/lib/amd64/libawt_xawt.so
> Java_sun_awt_X11_XToolkit_getNumberOfButtonsImpl () from
> ./opt/ibm/acsp-server/jvm64/jre/lib/amd64/libawt_xawt.so
> JVMprJavaSendNative () from
> ./opt/ibm/acsp-server/jvm64/jre/lib/amd64/compressedrefs/libj9vm28.so
> ?? ()
> resolveSpecialMethodRefInto () from
> ./opt/ibm/acsp-server/jvm64/jre/lib/amd64/compressedrefs/libj9vm28.so
> VM_BytecodeInterpreter::run(J9VMThread*) () from
> ./opt/ibm/acsp-server/jvm64/jre/lib/amd64/compressedrefs/libj9vm28.so
> bytecodeLoop () from
> ./opt/ibm/acsp-server/jvm64/jre/lib/amd64/compressedrefs/libj9vm28.so
>
> *RECREATION STEPS*
> Run the attached MouseInfo.java testcase on a linux box having Linux OS
> patch " libXi6-1.7.4-12.2.x86_64 or higher.
>
> *PROBLEM ANALYSIS*
> The reported issue started happening after applying the Linux OS patch "
> libXi6-1.7.4-12.2.x86_64.
> With our investigation this seems to be bug at the OS layer in which OS
> API ListInputDevices returns "null" even though the number of input
> devices are not zero.
> Although the crash is observed due to the failure of OS API, ideally JDK
> should not have been crashed. We need to take care of this "NULL"
> scenario at the JDK level.
>
> *Suggested Fix:-*
> Introduced a Null check in "getNumButtons" function (XToolkit.c).
> /(See attached file: webrev.zip)/
>
> Able to build the above fix against JDK 10 and triggered jtreg tests. I
> will share the test results soon.
>
> *Testcase:-*
> /(See attached file: MouseInfoTest.java)/
>
> With Thanks and Regards,
> Jitendra Singh.
>
--
Best regards, Sergey.
More information about the awt-dev
mailing list