Bug 1687745

Summary: Java windows that have a preferred width larger than Short.MAX_VALUE are not properly displayed in RHEL7
Product: Red Hat Enterprise Linux 7 Reporter: Divya <dbasant>
Component: mutterAssignee: Jonas Ådahl <jadahl>
Status: CLOSED ERRATA QA Contact: Desktop QE <desktop-qa-list>
Severity: high Docs Contact:
Priority: high    
Version: 7.6CC: ayadav, fmuellner, jwright, mclasen, modehnal, ofourdan, tpelka
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: gtk3-3.22.30-4.el7 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-03-31 19:39:00 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1727111    
Attachments:
Description Flags
Reproducer
none
Screenshots from reproducing the bug before component update
none
Screenshots from reproducing the bug after component update none

Description Divya 2019-03-12 09:48:52 UTC
Created attachment 1543127 [details]
Reproducer

Description of problem:
Dialog/window with a preferred width greater than Short.MAX_VALUE, results in a dialog that functions similar to the expected dialog, except that instead of the expected components being displayed, the portion of the screen behind the display is copied into the dialog's panel.  The functionality of the dialog is still working (example: copy/pasting cells, clicking buttons and getting dropdown menus, closing the dialog), but the display never gets painted correctly.

Some code within the Java libraries is forcing the width to be Short.MAX_VALUE.  However, when this is too wide for the window manager (Gnome 3) to process correctly. Based on our testing, the most likely cause of this issue is that the pixel(s) that make up the border around the Java application are not being accounted for, and this is causing the window manager to use an invalid (probably 0 or negative) value when tracking the width of the window. 

Version-Release number of selected component (if applicable):
mutter-3.28.3-5.el7
java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6

How reproducible:
Always

Steps to Reproduce:
1. Compile the attached reproducer as below: 

$ javac PrefWidthExceedsShortMaxExample.java

2. Run PrefWidthExceedsShortMaxExample as below to reproduce the issue

$ java PrefWidthExceedsShortMaxExample

Actual results:
With default values of arguments, java window does not show up properly. With other manual arguments passed as below, results are as listed: 

5000 a : Bad painting (width = 32767)
4096 a : bad painting (width = 32767)
4095 a : correct behavior (width = 32760)
10000 M : correct behavior (width = 32763)
10000 i : correct behavior (width = 20000)
10000 W : correct behavior (width = 32762)
10000 X : bad behavior (width = 32766)
10000 '&' : bad behavior (width = 32765)

Expected results:
Java window should always appear from end to end corners on the screen. 

Additional info:
Tried the reproducer in KDE desktop environment and it works fine. So I suspect issue with the GNOME window manager.

Comment 3 Divya 2019-05-29 11:21:47 UTC
Hello Olivier 

I am sorry I missed your earlier note here. But since issue occurs only in gnome environment and not in KDE, I suspected the issue in mutter and filed this bug accordingly. I see you are referring to the upstream issue at https://gitlab.freedesktop.org/xorg/xserver/issues/661, which explicitly talks about crash in wayland. I don't think, we have having the same problem. Moreover yes, this reproducer can be used publicly as customer has not associated any specific license to it. Please let me know if anything is required from my end.

Comment 5 Jonas Ådahl 2019-08-06 13:47:29 UTC
Fix is actually in gtk: https://gitlab.gnome.org/GNOME/gtk/merge_requests/1046

Comment 7 Pavlin Georgiev 2019-09-02 10:20:48 UTC
Created attachment 1610731 [details]
Screenshots from reproducing the bug before component update

TEST SETUP 1
Distro: RHEL 7.6 CSB
Component version:
  mutter-3.28.3-7.el7_6.x86_64
  java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64
  gtk3-3.22.30-3.el7.x86_64


TEST PROCEDURE 1
1. Install Java compiler:
  yum install -y java-1.8.0-openjdk-devel
2. Reproduce the bug.
The bug appears.

Comment 8 Pavlin Georgiev 2019-09-02 10:21:31 UTC
Created attachment 1610732 [details]
Screenshots from reproducing the bug after component update

TEST SETUP 2
Distro: RHEL 7.7
Component version:
  mutter-3.28.3-10.el7.x86_64
  java-1.8.0-openjdk-1.8.0.222.b03-1.el7.x86_64
  gtk3-3.22.30-4.el7.x86_64

TEST PROCEDURE 2
1. Install Java compiler:
  yum install -y java-1.8.0-openjdk-devel
2. Reproduce the bug.
The bug does NOT appear.

Comment 9 Pavlin Georgiev 2019-09-02 10:23:03 UTC
RESULT
Upgrading component: gtk3
    from: 3.22.30-3.el7
      to: 3.22.30-4.el7
has fixed the bug.

Comment 12 errata-xmlrpc 2020-03-31 19:39:00 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2020:1021