<AWT Dev> Bug 6913179, FileDialog uses native GTK under Linux: first patch

Damjan Jovanovic damjan.jov at gmail.com
Thu Feb 11 03:00:07 PST 2010


On Thu, Feb 11, 2010 at 12:26 PM, Peter Zhelezniakov
<Peter.Zhelezniakov at sun.com> wrote:
> Hi Costantino,
>
> Costantino Cerbo wrote:
>> It works correctly, but only if we don't use the GTK L&F.
>> I didn't realise it and this is a very useful clue: it means that we
>> do something wrong with the initialization of GTK.
>>
>> With the GTK L&F, I get these errors:
>>   Xlib: sequence lost (0x11fae > 0x2233) in reply type 0x1c!
>>
>>   *** glibc detected ***
>> /home/c.cerbo/openjdk-awt/jdk/build/linux-i586/bin/java: double free
>> or corruption (fasttop): 0x912db9d0 ***
>>   *** glibc detected ***
>> /home/c.cerbo/openjdk-awt/jdk/build/linux-i586/bin/java: double free
>> or corruption (out): 0x912d2d10 ***
>
> I tried again, this time with your newest patch
>  http://cr.openjdk.java.net/~anthony/7-43-GTKFileDialog-6913179.2/
>
> My only change was to start a new thread in GtkFileDialogPeer (see
> gtkfd2.patch, attached). It worked with GTK LAF for me, and i wasn't getting
> any messages. I was running attached GtkFD.java on a Gentoo box with
> gtk+-2.16.6, and was using latest jdk7 sources.
>
> Could you try my patch and test on your machine?
>
> Thanks!
> --
> Peter
>
> *** src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java.old  Thu Feb 11
> 13:07:16 2010
> --- src/solaris/classes/sun/awt/X11/GtkFileDialogPeer.java      Thu Feb 11
> 13:07:22 2010
> ***************
> *** 84,93 ****
>          XToolkit.awtLock();
>          try {
>              if (b) {
> !                 run(fd.getTitle(), fd.getMode(), fd.getDirectory(),
> !                         fd.getFile(), fd.getFilenameFilter());
>
> !                 fd.setVisible(false);
>              } else {
>                  quit();
>                  fd.setVisible(false);
> --- 84,98 ----
>          XToolkit.awtLock();
>          try {
>              if (b) {
> !                 Thread t = new Thread() {
> !                     public void run() {
> !                         GtkFileDialogPeer.this.run(fd.getTitle(),
> fd.getMode(), fd.getDirectory(),
> !                                 fd.getFile(), fd.getFilenameFilter());
>
> !                         fd.setVisible(false);
> !                     }
> !                 };
> !                 t.start();
>              } else {
>                  quit();
>                  fd.setVisible(false);
>
>

Hi Peter

Your patch causes a native assertion error upon clicking "Save":

$ java sun.awt.X11.FileDialogTest
java: ../../src/xcb_io.c:242: process_responses: Assertion `(((long)
(dpy->last_request_read) - (long) (dpy->request)) <= 0)' failed.
Aborted

Clicking "Open" either silently exits or indefinitely hangs (no
redraw) both the file dialog and the Java window.

Damjan Jovanovic



More information about the awt-dev mailing list