<?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>1259</bug_id>
          
          <creation_ts>2015-10-30 16:59:21 +0100</creation_ts>
          <short_desc>NativeWindowException on attempting to destroy a drawable with a current context</short_desc>
          <delta_ts>2019-03-29 13:58:09 +0100</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>3</classification_id>
          <classification>JogAmp</classification>
          <product>Jogl</product>
          <component>windows</component>
          <version>tbd</version>
          <rep_platform>pc_x86_64</rep_platform>
          <op_sys>windows</op_sys>
          <bug_status>UNCONFIRMED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Mark Raynsford">org.jogamp</reporter>
          <assigned_to name="Sven Gothel">sgothel</assigned_to>
          
          
          <cf_type>DEFECT</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>5462</commentid>
    <comment_count>0</comment_count>
      <attachid>763</attachid>
    <who name="Mark Raynsford">org.jogamp</who>
    <bug_when>2015-10-30 16:59:21 +0100</bug_when>
    <thetext>Created attachment 763
Bug case

The following program will trigger a NativeWindowException:

Exception in thread &quot;main&quot; com.jogamp.opengl.GLException: Caught NativeWindowException: didn&apos;t release surface Handle: GDISurface[ displayHandle 0x0
, surfaceHandle 0x3c010834
, size 640x480
, UOB[ WINDOW_INVISIBLE ]
, WindowsWGLGraphicsConfiguration[DefaultGraphicsScreen[WindowsGraphicsDevice[type .windows, connection decon, unitID 0, handle 0x0, owner false, NullToolkitLock[obj 0x57566b8f]], idx 0], pfdID 2, ARB-Choosen true,
	requested GLCaps[rgba 8/8/8/0, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono  , hw, GLProfile[GL3/GL3.hw], offscr[fbo]],
	chosen    GLCaps[wgl vid 2 arb: rgba 8/8/8/8, trans-rgba 0x0/0/0/0, accum-rgba 0/0/0/0, dp/st/ms 24/8/0, dbl, mono  , hw, GLProfile[GL3/GL3.hw], on-scr[.]]]
, surfaceLock &lt;7a79be86, 34ce8af7&gt;[count 1, qsz 0, owner &lt;main&gt;]
, GDIDummyUpstreamSurfaceHook[pixel 640x480]
, upstreamSurface false ] on thread main
	at com.jogamp.opengl.GLException.newGLException(GLException.java:76)
	at jogamp.opengl.GLAutoDrawableBase.destroyImplInLock(GLAutoDrawableBase.java:404)
	at com.jogamp.opengl.GLAutoDrawableDelegate.destroyImplInLock(GLAutoDrawableDelegate.java:185)
	at jogamp.opengl.GLAutoDrawableBase.defaultDestroy(GLAutoDrawableBase.java:345)
	at com.jogamp.opengl.GLAutoDrawableDelegate.destroy(GLAutoDrawableDelegate.java:180)
	at com.io7m.scontext.CreateUnsharedContext0.main(CreateUnsharedContext0.java:26)
Caused by: com.jogamp.nativewindow.NativeWindowException: didn&apos;t release surface Handle: GDISurface[ displayHandle 0x0
, surfaceHandle 0x3c010834
, size 640x480
, UOB[ WINDOW_INVISIBLE ]
, WindowsWGLGraphicsConfiguration[DefaultGraphicsScreen[WindowsGraphicsDevice[type .windows, connection decon, unitID 0, handle 0x0, owner false, NullToolkitLock[obj 0x57566b8f]], idx 0], pfdID 2, ARB-Choosen true,
	requested GLCaps[rgba 8/8/8/0, opaque, accum-rgba 0/0/0/0, dp/st/ms 16/0/0, dbl, mono  , hw, GLProfile[GL3/GL3.hw], offscr[fbo]],
	chosen    GLCaps[wgl vid 2 arb: rgba 8/8/8/8, trans-rgba 0x0/0/0/0, accum-rgba 0/0/0/0, dp/st/ms 24/8/0, dbl, mono  , hw, GLProfile[GL3/GL3.hw], on-scr[.]]]
, surfaceLock &lt;7a79be86, 34ce8af7&gt;[count 1, qsz 0, owner &lt;main&gt;]
, GDIDummyUpstreamSurfaceHook[pixel 640x480]
, upstreamSurface false ]
	at jogamp.nativewindow.windows.GDISurface.invalidateImpl(GDISurface.java:70)
	at jogamp.nativewindow.ProxySurfaceImpl.destroyNotify(ProxySurfaceImpl.java:115)
	at jogamp.opengl.GLDrawableImpl.setRealized(GLDrawableImpl.java:206)
	at jogamp.opengl.GLAutoDrawableBase.destroyImplInLock(GLAutoDrawableBase.java:385)

Calling release() on the drawable&apos;s context just prior to calling destroy() will work around the issue.

Platform is Windows 7 x86_64. AMD Catalyst 13.9. The drivers are the latest that are available, but could be charitably referred to as &quot;elderly&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5463</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Raynsford">org.jogamp</who>
    <bug_when>2015-10-30 17:00:31 +0100</bug_when>
    <thetext>This was against JOGL 2.3.1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5465</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Raynsford">org.jogamp</who>
    <bug_when>2015-10-31 11:48:02 +0100</bug_when>
    <thetext>I am prepared to believe that this is a documentation issue; I&apos;m guessing there&apos;s behaviour that is allowed on some platforms and not others. The behaviour is consistent: It&apos;s not possible to destroy a drawable that is referenced in some manner, either by having a current context or being shared with something that has a current context.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>763</attachid>
            <date>2015-10-30 16:59:21 +0100</date>
            <delta_ts>2015-10-30 16:59:21 +0100</delta_ts>
            <desc>Bug case</desc>
            <filename>CreateUnsharedContext0.java</filename>
            <type>text/x-java</type>
            <size>951</size>
            <attacher name="Mark Raynsford">org.jogamp</attacher>
            
              <data encoding="base64">cGFja2FnZSBjb20uaW83bS5zY29udGV4dDsNCg0KaW1wb3J0IGNvbS5qb2dhbXAub3BlbmdsLkdM
Q2FwYWJpbGl0aWVzOw0KaW1wb3J0IGNvbS5qb2dhbXAub3BlbmdsLkdMQ29udGV4dDsNCmltcG9y
dCBjb20uam9nYW1wLm9wZW5nbC5HTERyYXdhYmxlRmFjdG9yeTsNCmltcG9ydCBjb20uam9nYW1w
Lm9wZW5nbC5HTE9mZnNjcmVlbkF1dG9EcmF3YWJsZTsNCmltcG9ydCBjb20uam9nYW1wLm9wZW5n
bC5HTFByb2ZpbGU7DQoNCnB1YmxpYyBmaW5hbCBjbGFzcyBDcmVhdGVVbnNoYXJlZENvbnRleHQw
IHsNCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKQ0KCXsNCgkgICAgZmlu
YWwgR0xQcm9maWxlIHByb2ZpbGUgPSBHTFByb2ZpbGUuZ2V0KEdMUHJvZmlsZS5HTDMpOw0KCSAg
ICBmaW5hbCBHTENhcGFiaWxpdGllcyBjYXAgPSBuZXcgR0xDYXBhYmlsaXRpZXMocHJvZmlsZSk7
DQoJICAgIGNhcC5zZXRGQk8odHJ1ZSk7DQoJICAgIGZpbmFsIEdMRHJhd2FibGVGYWN0b3J5IGYg
PSBHTERyYXdhYmxlRmFjdG9yeS5nZXRGYWN0b3J5KHByb2ZpbGUpOw0KCSAgICBmaW5hbCBHTE9m
ZnNjcmVlbkF1dG9EcmF3YWJsZSBkcmF3YWJsZSA9DQoJICAgICAgZi5jcmVhdGVPZmZzY3JlZW5B
dXRvRHJhd2FibGUobnVsbCwgY2FwLCBudWxsLCA2NDAsIDQ4MCk7DQoJICAgIGRyYXdhYmxlLmRp
c3BsYXkoKTsNCgkgICAgDQoJICAgIGZpbmFsIEdMQ29udGV4dCBjID0gZHJhd2FibGUuZ2V0Q29u
dGV4dCgpOw0KCSAgICBmaW5hbCBpbnQgciA9IGMubWFrZUN1cnJlbnQoKTsNCgkgICAgaWYgKHIg
PT0gR0xDb250ZXh0LkNPTlRFWFRfTk9UX0NVUlJFTlQpIHsNCgkgICAgICB0aHJvdyBuZXcgQXNz
ZXJ0aW9uRXJyb3IoIkNvdWxkIG5vdCBtYWtlIGNvbnRleHQgY3VycmVudCIpOw0KCSAgICB9DQoJ
ICAgIA0KCSAgICBkcmF3YWJsZS5kZXN0cm95KCk7DQoJfQ0KfQ0K
</data>

          </attachment>
      

    </bug>

</bugzilla>