<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://jogamp.org/bugzilla/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.2"
          urlbase="https://jogamp.org/bugzilla/"
          
          maintainer="sgothel@jausoft.com"
>

    <bug>
          <bug_id>406</bug_id>
          
          <creation_ts>2010-08-05 14:37:29 +0200</creation_ts>
          <short_desc>Deadlock with JDesktopPane and multiple NewtCanvasAWT windows</short_desc>
          <delta_ts>2010-11-19 13:27:54 +0100</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>3</classification_id>
          <classification>JogAmp</classification>
          <product>Newt</product>
          <component>awt</component>
          <version>1</version>
          <rep_platform>pc_x86_32</rep_platform>
          <op_sys>all</op_sys>
          <bug_status>VERIFIED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Vaughan">steve_vaughan</reporter>
          <assigned_to name="Steve Vaughan">steve_vaughan</assigned_to>
          <cc>sgothel</cc>
          
          <cf_type>---</cf_type>
          <cf_scm_refs></cf_scm_refs>
          <cf_workaround>---</cf_workaround>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>477</commentid>
    <comment_count>0</comment_count>
      <attachid>148</attachid>
    <who name="Steve Vaughan">steve_vaughan</who>
    <bug_when>2010-08-05 14:37:29 +0200</bug_when>
    <thetext>Created attachment 148
Demonstration of bug

I put together a small JDesktop-based application which uses NEWT, and I&apos;m finding that that I can consistently lock-up the application on a Windows platform. 

The problem occurs when I perform the following steps: 
1. Use the mouse to rotate the gears in an internal frame that has the focus. 
2. Attempt to use the mouse to rotate the gears in the internal frame which DOES NOT have focus.
3. Do anything that requires the AWT EDT.

The AWT event dispatch thread is locked at this point.  Looking at the thread stack traces, it looks as if the NEWT windows thread is waiting on the AWT thread to change the focus.  Enabling all JOGL debugging also shows that the system is still attempting to render, as I continue to see &quot;SwapBuffers calls: ...&quot; messages. 

Internal frames do not have to be overlapping to cause the problem.  Both the focused internal frame and the internal frame requesting focus have to be NewtCanvasAWT instances for the problem to occur.  The problem doesn&apos;t occur when the internal frame already has focus because the requestFocusHelper doesn&apos;t perform any action.  This can be seen by enabling logging of &quot;java.awt.focus.Component&quot;.

The following stack traces show that the AWT EDT is running native code, while the Display EDT is waiting for the AWT EDT to return.

---------------------------------- 

Name: AWT-EventQueue-0-EDT-Display_Windows_nil 
State: WAITING on java.awt.EventQueue$1AWTInvocationLock@6833f2 
Total blocked: 232  Total waited: 1,114 

Stack trace: 
java.lang.Object.wait(Native Method) 
java.lang.Object.wait(Object.java:485) 
java.awt.EventQueue.invokeAndWait(EventQueue.java:993) 
com.jogamp.newt.awt.NewtCanvasAWT$FocusAction.run(NewtCanvasAWT.java:85) 
com.jogamp.newt.Window.focusAction(Window.java:316) 
com.jogamp.newt.impl.windows.WindowsDisplay.DispatchMessages0(Native Method) 
com.jogamp.newt.impl.windows.WindowsDisplay.dispatchMessagesNative(WindowsDisplay.java:73) 
com.jogamp.newt.Display.dispatchMessages(Display.java:353) 
com.jogamp.newt.Display$2.run(Display.java:196) 
com.jogamp.newt.util.EDTUtil$EventDispatchThread.run(EDTUtil.java:212) 

---------------------------------- 

Name: AWT-EventQueue-0 
State: RUNNABLE 
Total blocked: 25  Total waited: 23 

Stack trace: 
sun.awt.windows.WComponentPeer._requestFocus(Native Method) 
sun.awt.windows.WComponentPeer.requestFocus(WComponentPeer.java:617) 
java.awt.Component.requestFocusHelper(Component.java:7412) 
java.awt.Component.requestFocusHelper(Component.java:7373) 
java.awt.Component.requestFocus(Component.java:7181) 
com.jogamp.newt.awt.NewtCanvasAWT.requestFocusAWT(NewtCanvasAWT.java:217) 
com.jogamp.newt.awt.NewtCanvasAWT$FocusAction$FocusActionImpl.run(NewtCanvasAWT.java:99) 
java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:199) 
java.awt.EventQueue.dispatchEvent(EventQueue.java:597) 
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 
java.awt.EventDispatchThread.run(EventDispatchThread.java:122)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478</commentid>
    <comment_count>1</comment_count>
      <attachid>149</attachid>
    <who name="Steve Vaughan">steve_vaughan</who>
    <bug_when>2010-08-09 10:13:49 +0200</bug_when>
    <thetext>Created attachment 149
Patch which avoids deadlock

Replacing invokeAndWait() with invokeLater() avoids deadlock.  From the JavaDocs for Component &quot;Developers must never assume that this Component is the focus owner until this Component receives a FOCUS_GAINED event&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595</commentid>
    <comment_count>2</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2010-11-19 06:19:18 +0100</bug_when>
    <thetext>Does it still exist Steve ?

I assume we still have no unit test for this one ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609</commentid>
    <comment_count>3</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2010-11-19 13:27:54 +0100</bug_when>
    <thetext>Confirmed with Steve that we fixed that bug.

Sorry, no scm ref ..</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>148</attachid>
            <date>2010-08-05 14:37:29 +0200</date>
            <delta_ts>2010-08-05 14:37:29 +0200</delta_ts>
            <desc>Demonstration of bug</desc>
            <filename>JDesktopDemo.java</filename>
            <type>application/octet-stream</type>
            <size>4242</size>
            <attacher name="Steve Vaughan">steve_vaughan</attacher>
            
              <data encoding="base64">cGFja2FnZSB0ZXN0OwoKaW1wb3J0IGphdmEuaW8uUHJpbnRTdHJlYW07CgppbXBvcnQgamF2YXgu
bWVkaWEub3BlbmdsLkdMQXV0b0RyYXdhYmxlOwppbXBvcnQgamF2YXgubWVkaWEub3BlbmdsLkdM
Q2FwYWJpbGl0aWVzOwppbXBvcnQgamF2YXgubWVkaWEub3BlbmdsLkdMRXZlbnRMaXN0ZW5lcjsK
aW1wb3J0IGphdmF4Lm1lZGlhLm9wZW5nbC5HTFByb2ZpbGU7CmltcG9ydCBqYXZheC5zd2luZy5K
RGVza3RvcFBhbmU7CmltcG9ydCBqYXZheC5zd2luZy5KRnJhbWU7CmltcG9ydCBqYXZheC5zd2lu
Zy5KSW50ZXJuYWxGcmFtZTsKaW1wb3J0IGphdmF4LnN3aW5nLlN3aW5nVXRpbGl0aWVzOwppbXBv
cnQgamF2YXguc3dpbmcuZXZlbnQuSW50ZXJuYWxGcmFtZUFkYXB0ZXI7CmltcG9ydCBqYXZheC5z
d2luZy5ldmVudC5JbnRlcm5hbEZyYW1lRXZlbnQ7CgppbXBvcnQgY29tLmpvZ2FtcC5uZXd0LmF3
dC5OZXd0Q2FudmFzQVdUOwppbXBvcnQgY29tLmpvZ2FtcC5uZXd0Lm9wZW5nbC5HTFdpbmRvdzsK
aW1wb3J0IGNvbS5qb2dhbXAub3BlbmdsLnV0aWwuQW5pbWF0b3I7CmltcG9ydCBjb20uam9nYW1w
LnRlc3QuanVuaXQuam9nbC5kZW1vcy5nbDIuZ2VhcnMuR2VhcnM7CgpwdWJsaWMgY2xhc3MgSkRl
c2t0b3BEZW1vIHsKCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7
CiAgICAgICAgU3dpbmdVdGlsaXRpZXMuaW52b2tlTGF0ZXIobmV3IFJ1bm5hYmxlKCkgewoKICAg
ICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKICAgICAg
ICAgICAgICAgIEpGcmFtZSBmcmFtZSA9IG5ldyBKRnJhbWUoIkpEZXNrdG9wIERlbW8iKTsKICAg
ICAgICAgICAgICAgIGZyYW1lLnNldERlZmF1bHRDbG9zZU9wZXJhdGlvbihKRnJhbWUuRVhJVF9P
Tl9DTE9TRSk7CgogICAgICAgICAgICAgICAgSkRlc2t0b3BQYW5lIGRlc2t0b3AgPSBuZXcgSkRl
c2t0b3BQYW5lKCk7CiAgICAgICAgICAgICAgICBmcmFtZS5zZXRDb250ZW50UGFuZShkZXNrdG9w
KTsKCiAgICAgICAgICAgICAgICBBbmltYXRvciBhbmltYXRvciA9IG5ldyBBbmltYXRvcigpOwog
ICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyArK2kpIHsKICAgICAgICAgICAg
ICAgICAgICBKSW50ZXJuYWxGcmFtZSBzdWJGcmFtZSA9IG5ldyBKSW50ZXJuYWxGcmFtZShJbnRl
Z2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAudG9TdHJpbmcoaSkpOwogICAgICAgICAg
ICAgICAgICAgIHN1YkZyYW1lLnNldFJlc2l6YWJsZSh0cnVlKTsKICAgICAgICAgICAgICAgICAg
ICBzdWJGcmFtZS5zZXRJY29uaWZpYWJsZSh0cnVlKTsKICAgICAgICAgICAgICAgICAgICBzdWJG
cmFtZS5zZXRDbG9zYWJsZSh0cnVlKTsKICAgICAgICAgICAgICAgICAgICBzdWJGcmFtZS5zZXRE
ZWZhdWx0Q2xvc2VPcGVyYXRpb24oSkludGVybmFsRnJhbWUuRElTUE9TRV9PTl9DTE9TRSk7CiAg
ICAgICAgICAgICAgICAgICAgc3ViRnJhbWUuc2V0TG9jYXRpb24oaSAqIDkwLCBpICogMzApOwog
ICAgICAgICAgICAgICAgICAgIGRlc2t0b3AuYWRkKHN1YkZyYW1lKTsKCiAgICAgICAgICAgICAg
ICAgICAgR0xDYXBhYmlsaXRpZXMgY2FwcyA9IG5ldyBHTENhcGFiaWxpdGllcyhHTFByb2ZpbGUu
Z2V0RGVmYXVsdCgpKTsKICAgICAgICAgICAgICAgICAgICBjYXBzLnNldEhhcmR3YXJlQWNjZWxl
cmF0ZWQodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgY2Fwcy5zZXREb3VibGVCdWZmZXJlZCh0
cnVlKTsKCiAgICAgICAgICAgICAgICAgICAgZmluYWwgR0xXaW5kb3cgZ2xXaW5kb3cgPSBHTFdp
bmRvdy5jcmVhdGUoY2Fwcyk7CiAgICAgICAgICAgICAgICAgICAgZ2xXaW5kb3cuYWRkR0xFdmVu
dExpc3RlbmVyKG5ldyBUcmFjZUdMRXZlbnRMaXN0ZW5lcigKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICItLS0gQ2FudmFzIiArIGksIFN5c3RlbS5vdXQpKTsKICAgICAgICAgICAgICAgICAg
ICBnbFdpbmRvdy5hZGRHTEV2ZW50TGlzdGVuZXIobmV3IEdlYXJzKCkpOwogICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgICAgIC8vIFRPRE8gU2hvdWxkIHRoaXMgYmUgbmVjZXNz
YXJ5PwogICAgICAgICAgICAgICAgICAgIHN1YkZyYW1lLmFkZEludGVybmFsRnJhbWVMaXN0ZW5l
cihuZXcgSW50ZXJuYWxGcmFtZUFkYXB0ZXIoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIHZvaWQgaW50ZXJuYWxGcmFtZUNsb3NpbmcoSW50ZXJuYWxGcmFtZUV2ZW50IGUpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsV2luZG93LmRlc3Ryb3koKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgTmV3dENhbnZhc0FXVCBjYW52YXMgPSBuZXcg
TmV3dENhbnZhc0FXVChnbFdpbmRvdyk7CiAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldFNp
emUoNjQwLCA0ODApOwogICAgICAgICAgICAgICAgICAgIHN1YkZyYW1lLmdldENvbnRlbnRQYW5l
KCkuYWRkKGNhbnZhcyk7CiAgICAgICAgICAgICAgICAgICAgc3ViRnJhbWUucGFjaygpOwogICAg
ICAgICAgICAgICAgICAgIHN1YkZyYW1lLnNldFZpc2libGUodHJ1ZSk7CiAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgYW5pbWF0b3IuYWRkKGdsV2luZG93KTsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFuaW1hdG9yLnN0YXJ0KCk7CgogICAgICAgICAg
ICAgICAgZnJhbWUucGFjaygpOwogICAgICAgICAgICAgICAgZnJhbWUuc2V0U2l6ZSg4MDAsIDYw
MCk7CiAgICAgICAgICAgICAgICBmcmFtZS5zZXRWaXNpYmxlKHRydWUpOwogICAgICAgICAgICB9
CgogICAgICAgIH0pOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgVHJhY2VHTEV2ZW50
TGlzdGVuZXIgaW1wbGVtZW50cyBHTEV2ZW50TGlzdGVuZXIgewoKICAgICAgICBwdWJsaWMgZmlu
YWwgU3RyaW5nIG5hbWU7CgogICAgICAgIHB1YmxpYyBmaW5hbCBQcmludFN0cmVhbSBvdXQ7CiAg
ICAgICAgCiAgICAgICAgcHVibGljIGZpbmFsIGJvb2xlYW4gZGVidWdEaXNwbGF5OwoKICAgICAg
ICBwdWJsaWMgVHJhY2VHTEV2ZW50TGlzdGVuZXIoZmluYWwgU3RyaW5nIG5hbWUsIFByaW50U3Ry
ZWFtIG91dCkgewogICAgICAgICAgICB0aGlzKG5hbWUsIG91dCwgZmFsc2UpOwogICAgICAgIH0K
CiAgICAgICAgcHVibGljIFRyYWNlR0xFdmVudExpc3RlbmVyKGZpbmFsIFN0cmluZyBuYW1lLCBQ
cmludFN0cmVhbSBvdXQsIGJvb2xlYW4gZGVidWdEaXNwbGF5KSB7CiAgICAgICAgICAgIHRoaXMu
bmFtZSA9IG5hbWU7CiAgICAgICAgICAgIHRoaXMub3V0ID0gb3V0OwogICAgICAgICAgICB0aGlz
LmRlYnVnRGlzcGxheSA9IGRlYnVnRGlzcGxheTsKICAgICAgICB9CgogICAgICAgIEBPdmVycmlk
ZQogICAgICAgIHB1YmxpYyB2b2lkIGluaXQoR0xBdXRvRHJhd2FibGUgZHJhd2FibGUpIHsKICAg
ICAgICAgICAgb3V0LnByaW50bG4obmFtZSArICIuaW5pdCAiKTsKICAgICAgICB9CgogICAgICAg
IEBPdmVycmlkZQogICAgICAgIHB1YmxpYyB2b2lkIHJlc2hhcGUoR0xBdXRvRHJhd2FibGUgZHJh
d2FibGUsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLAogICAgICAgICAgICAgICAgaW50IGhlaWdo
dCkgewogICAgICAgICAgICBvdXQucHJpbnRsbihuYW1lICsgIi5yZXNoYXBlICIgKyB4ICsgIiwg
IiArIHkgKyAiLCAiCiAgICAgICAgICAgICAgICAgICAgKyB3aWR0aCArICIgeCAiICsgaGVpZ2h0
KTsKICAgICAgICB9CgogICAgICAgIEBPdmVycmlkZQogICAgICAgIHB1YmxpYyB2b2lkIGRpc3Bs
YXkoR0xBdXRvRHJhd2FibGUgZHJhd2FibGUpIHsKICAgICAgICAgICAgaWYgKGRlYnVnRGlzcGxh
eSkKICAgICAgICAgICAgICAgIG91dC5wcmludGxuKG5hbWUgKyAiLmRpc3BsYXkgb24gIgogICAg
ICAgICAgICAgICAgICAgICAgICArIFRocmVhZC5jdXJyZW50VGhyZWFkKCkpOwogICAgICAgIH0K
CiAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgcHVibGljIHZvaWQgZGlzcG9zZShHTEF1dG9EcmF3
YWJsZSBkcmF3YWJsZSkgewogICAgICAgICAgICBvdXQucHJpbnRsbihuYW1lICsgIi5kaXNwb3Nl
Iik7CiAgICAgICAgfQoKICAgIH0KCn0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>149</attachid>
            <date>2010-08-09 10:13:49 +0200</date>
            <delta_ts>2010-08-09 10:13:49 +0200</delta_ts>
            <desc>Patch which avoids deadlock</desc>
            <filename>0001-Avoid-a-deadlock-by-using-invokeLater-instead-of-inv.patch</filename>
            <type>application/octet-stream</type>
            <size>1121</size>
            <attacher name="Steve Vaughan">steve_vaughan</attacher>
            
              <data encoding="base64">RnJvbSBmODg2MTM5MTAyMGRlNGVjNGNiZmJhNjY0NzBkYmU0ZTMxNzgyMTcyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiB2YXVnaGFucyA8dmF1Z2hhbnNAeHBzYmx1ZS5zcmEuY29tPgpE
YXRlOiBNb24sIDkgQXVnIDIwMTAgMTM6MDU6MTMgLTA0MDAKU3ViamVjdDogW1BBVENIXSBBdm9p
ZCBhIGRlYWRsb2NrIGJ5IHVzaW5nIGludm9rZUxhdGVyIGluc3RlYWQgb2YgaW52b2tlQW5kV2Fp
dCBmb3IgcmVxdWVzdGluZyBmb2N1cy4KCi0tLQogLi4uL2NsYXNzZXMvY29tL2pvZ2FtcC9uZXd0
L2F3dC9OZXd0Q2FudmFzQVdULmphdmEgfCAgICAzICsrLQogMSBmaWxlcyBjaGFuZ2VkLCAyIGlu
c2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL25ld3QvY2xhc3Nl
cy9jb20vam9nYW1wL25ld3QvYXd0L05ld3RDYW52YXNBV1QuamF2YSBiL3NyYy9uZXd0L2NsYXNz
ZXMvY29tL2pvZ2FtcC9uZXd0L2F3dC9OZXd0Q2FudmFzQVdULmphdmEKaW5kZXggNmZkOTI0ZS4u
MDk5ZWVhNCAxMDA2NDQKLS0tIGEvc3JjL25ld3QvY2xhc3Nlcy9jb20vam9nYW1wL25ld3QvYXd0
L05ld3RDYW52YXNBV1QuamF2YQorKysgYi9zcmMvbmV3dC9jbGFzc2VzL2NvbS9qb2dhbXAvbmV3
dC9hd3QvTmV3dENhbnZhc0FXVC5qYXZhCkBAIC04Miw3ICs4Miw4IEBAIHB1YmxpYyBjbGFzcyBO
ZXd0Q2FudmFzQVdUIGV4dGVuZHMgamF2YS5hd3QuQ2FudmFzIHsKICAgICAgICAgICAgICAgICBm
b2N1c0FjdGlvbkltcGwucnVuKCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIEV2ZW50UXVldWUuaW52b2tlQW5kV2FpdChm
b2N1c0FjdGlvbkltcGwpOworICAgICAgICAgICAgICAgICAgICAvLyBVc2UgaW52b2tlTGF0ZXIg
dG8gYXZvaWQgZGVhZGxvY2suCisgICAgICAgICAgICAgICAgICAgIEV2ZW50UXVldWUuaW52b2tl
TGF0ZXIoZm9jdXNBY3Rpb25JbXBsKTsKICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRp
b24gZSkgewogICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTmF0aXZlV2luZG93RXhjZXB0
aW9uKGUpOwogICAgICAgICAgICAgICAgIH0KLS0gCjEuNy4xCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>