Bug 492709 - "In pixman_region32_init_rect: Invalid rectangle passed" in Git History view
Summary: "In pixman_region32_init_rect: Invalid rectangle passed" in Git History view
Status: CLOSED DUPLICATE of bug 533799
Alias: None
Product: Platform
Classification: Eclipse Project
Component: SWT (show other bugs)
Version: 4.8   Edit
Hardware: PC Linux
: P3 minor with 2 votes (vote)
Target Milestone: ---   Edit
Assignee: Platform-SWT-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords: helpwanted, triaged
Depends on:
Blocks: 518143
  Show dependency tree
 
Reported: 2016-04-29 05:10 EDT by cdman CLA
Modified: 2018-08-23 12:14 EDT (History)
4 users (show)

See Also:


Attachments
gdb backtrace _pixman_log_error (9.35 KB, text/plain)
2016-04-29 05:10 EDT, cdman CLA
no flags Details
Full backtrace for the pixman error (28.68 KB, text/plain)
2017-06-28 12:09 EDT, cdman CLA
no flags Details
Resizing an SWT table can lead to pixman_region32_init_rect: Invalid rectangle (652.72 KB, image/gif)
2018-04-16 12:04 EDT, Simeon Andreev CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description cdman CLA 2016-04-29 05:10:57 EDT
Created attachment 261369 [details]
gdb backtrace _pixman_log_error

Whenever I select the "History view" (on a project using Git), I get the following in my console (terminal - not the Eclipse console):

*** BUG ***
In pixman_region32_init_rect: Invalid rectangle passed
Set a breakpoint on '_pixman_log_error' to debug

This seems to be different from #435948 since I used the test program from there and it does not reproduce.

Details:

Version: Mars.2 Release (4.5.2)
OS: Ubuntu 15.10
Java: openjdk version "1.8.0_66-internal"
Using Gnome 3 (aka. Gnome Shell)


I also installed the debug symbols for the relevant libraries and attached a GDB backtrace of the issue. Also, using the work-around linked from here - https://bugs.archlinux.org/task/46885 - seems to solve the issue. Ie. run

eclipse --launcher.GTK_version 2

(the above seems to also solve a seemingly unrelated issue that text in the "Package" view sometimes shows with a "ghosting" effect).
Comment 1 Martin Oberhuber CLA 2017-05-29 01:58:56 EDT
Build ID: eclipse-committers-oxygen-RC1-linux-gtk-x86_64 on REL 7.3 / Oracle 8u121

I still see the same error logged on the Console with Oxygen RC1. There's no obvious degradation of functionality, aside the log output on the console. Let me know if any additional information is needed -- here's my gtk packages installed:

bash-4.2$ cat /etc/redhat-release 
Red Hat Enterprise Linux Workstation release 7.3 (Maipo)

bash-4.2$ rpm -qa | grep -i gtk | sort
adwaita-gtk2-theme-3.14.2.2-2.el7.i686
adwaita-gtk2-theme-3.14.2.2-2.el7.x86_64
avahi-ui-gtk3-0.6.31-17.el7.x86_64
caribou-gtk2-module-0.4.16-1.el7.x86_64
caribou-gtk3-module-0.4.16-1.el7.x86_64
clutter-gtk-1.4.4-7.el7.x86_64
colord-gtk-0.1.25-4.el7.x86_64
gtk2-2.24.28-8.el7.i686
gtk2-2.24.28-8.el7.x86_64
gtk2-devel-2.24.28-8.el7.x86_64
gtk2-engines-2.20.2-7.el7.x86_64
gtk2-immodule-xim-2.24.28-8.el7.x86_64
gtk3-3.14.13-20.el7.i686
gtk3-3.14.13-20.el7.x86_64
gtk3-devel-3.14.13-20.el7.x86_64
gtk3-immodule-xim-3.14.13-20.el7.x86_64
gtkhtml3-4.8.5-2.el7.x86_64
gtkmm24-2.24.2-8.el7.x86_64
gtkmm30-3.8.1-3.el7.x86_64
gtksourceview3-3.14.3-1.el7.x86_64
gtkspell3-3.0.3-4.el7.x86_64
gtk-vnc2-0.5.2-7.el7.x86_64
ibus-gtk2-1.5.3-13.el7.x86_64
ibus-gtk3-1.5.3-13.el7.x86_64
libcanberra-gtk2-0.30-5.el7.i686
libcanberra-gtk2-0.30-5.el7.x86_64
libcanberra-gtk3-0.30-5.el7.i686
libcanberra-gtk3-0.30-5.el7.x86_64
libchamplain-gtk-0.12.4-5.el7.x86_64
libnm-gtk-1.4.0-2.el7.x86_64
libreport-gtk-2.1.11-35.el7.x86_64
PackageKit-gtk3-module-1.0.7-6.el7.x86_64
pinentry-gtk-0.8.1-17.el7.x86_64
pygtk2-2.24.0-9.el7.x86_64
pygtk2-libglade-2.24.0-9.el7.x86_64
spice-gtk3-0.31-6.el7_3.2.x86_64
usermode-gtk-1.111-5.el7.x86_64
webkitgtk3-2.4.9-6.el7.x86_64
xdg-user-dirs-gtk-0.10-4.el7.x86_64
Comment 2 cdman CLA 2017-06-28 12:03:31 EDT
@Martin: yes, I can confirm that this is still happening. Currently I'm testing on Ubuntu 17.04 with OpenJDK 1.8.0_131-8u131-b11-0ubuntu1.17.04.1-b11, Gnome Shell 3.24.2 and eclipse-java-oxygen-RC3-linux-gtk-x86_64.tar.gz.

I attach a new gdb backtrace in the hopes that somebody will find it useful.

NB: this eclipse / SWT / Gnome combination seems to have a collection of issues related to correctly using GTK since just by starting it I see a slew of warnings / errors in my console like:

(Eclipse:9740): GLib-CRITICAL **: g_base64_encode_step: assertion 'in != NULL' failed

(Eclipse:9740): Gtk-WARNING **: Negative content height -3 (allocation 1, extents 2x2) while allocating gadget (node toolbar, owner GtkToolbar)

(Eclipse:9740): Gtk-WARNING **: Negative content width -5 (allocation 1, extents 3x3) while allocating gadget (node progressbar, owner GtkProgressBar)

(Eclipse:9740): Gtk-WARNING **: gtk_widget_size_allocate(): attempt to allocate widget with width 12 and height -4

(Eclipse:9740): Gtk-CRITICAL **: gtk_box_gadget_distribute: assertion 'size >= 0' failed in GtkScrollbar

etc.
Comment 3 cdman CLA 2017-06-28 12:09:05 EDT
Created attachment 269102 [details]
Full backtrace for the pixman error
Comment 4 Leo Ufimtsev CLA 2017-06-28 12:13:00 EDT
I think this error is seen in SWT console when you run AllTests for SWT. Could be narrowed down that way.
Comment 5 Eric Williams CLA 2017-12-06 10:07:03 EST
There seems to be some discussion about this upstream in GTK: https://bugzilla.gnome.org/show_bug.cgi?id=791081

Could be that it's a bug in GTK3 and not Eclipse.
Comment 6 Simeon Andreev CLA 2018-04-16 12:04:16 EDT
Created attachment 273629 [details]
Resizing an SWT table can lead to pixman_region32_init_rect: Invalid rectangle

One minimal snippet to reproduce similar errors with:

public static void main(String[] args) {
	Display display = new Display();
	Shell shell = new Shell(display);
	shell.setLayout(new FillLayout());
	shell.setSize(300, 200);
	shell.setText("Bug 492709");

	Table table = new Table(shell, SWT.BORDER);
	table.setHeaderVisible(true);

	for (int i = 0; i < 2; ++i) {
		TableColumn column = new TableColumn(table, SWT.NONE);
		column.setText("column " + i);
		column.setWidth(150);
	}

	shell.open();
	while (!shell.isDisposed()) {
		if (!display.readAndDispatch())
			display.sleep();
	}
	display.dispose();
}

Resize the shell until the horizontal scroll bar is hidden, see attached gif.
Comment 7 Simeon Andreev CLA 2018-04-17 12:54:16 EDT
Since in our product we see the "bug" error message on resize only, I'll be checking only the resize examples, e.g. the one from Comment 6. Generally, we see the message when resizing the Eclipse window so that some view with an SWT tree or a table becomes "too small".

I've written a GTK only example, which defines a similar table. I observe that when resized the GTK window will keep half a row of the table, plus the table column headers, plus the horizontal scrollbar as a minimum size. This prevents the horizontal scrollbar from overlapping with the column headers, and so prevents the error message.

The SWT table (and by extension tree) on the other hand, will somehow inline its horizontal scrollbar in the table area. So when resizing, the half-a-row becomes occupied by the horizontal scrollbar, at some point overlaps with the header and produces the error message.

So far I've noticed two methods of interest:

1. org.eclipse.swt.widgets.Scrollable.resizeHandle(int, int)

    This is called during layouting, and as far as I can tell results in the too-small table area. 

2. org.eclipse.swt.widgets.Table.createHandle(int)

    This creates an SWT fixed, with a GTK scrolled window, with a table. Aside from the SWT fixed, this is as my native GTK example.

I assume that the scroll bars of the scrolled window are not taken into account in some minimum size for the resize, but I have no idea why that would be the case.

Any pointers here are greatly appreciated.
Comment 8 Eric Williams CLA 2018-04-18 09:44:02 EDT
(In reply to Simeon Andreev from comment #7)
> I assume that the scroll bars of the scrolled window are not taken into
> account in some minimum size for the resize, but I have no idea why that
> would be the case.
> 
> Any pointers here are greatly appreciated.

GTK has the luxury of restricting resizes to the minimum size, which is why you can't make GtkWidgets smaller than a certain size (i.e. try resizing a native GTK app to a very small window -- it won't let you).

SWT has setSize() API which it needs to support without question. For this reason we cannot restrict sizing to GTK's minimum size requirements, and that's where 99% of these allocation warnings come from.
Comment 9 Simeon Andreev CLA 2018-04-19 03:27:32 EDT
I reported bug 533799 for the resize issue described in comment 6 and comment 7.

I'm guessing its a duplicate of this ticket, but I can't know for sure; I've not seen any error messages when opening the history view (with a git context).
Comment 10 Karsten Thoms CLA 2018-04-24 18:37:18 EDT
Saw the same issue in a job on JIPP
https://ci.eclipse.org/xtext/job/xtext-xtend/job/master/
Comment 11 Eric Williams CLA 2018-08-23 12:14:42 EDT

*** This bug has been marked as a duplicate of bug 533799 ***