<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
    <title></title>
  </head>
  <body bgcolor="#ffffff" text="#000000">
    <br>
    Been on vacation ... just catching up ..<br>
    So my reading of your debugging is that you have instrumented all
    the locations you call<br>
    XRenderCreatePicture  and XRenderFreePicture so you can track these
    .. although I<br>
    don't see (2) logging that creation.<br>
    <br>
    Looking at (3) the alternatives that come to mind are :<br>
    - as you suggest the error reporting is questionable<br>
    - XRenderCreatePicture looks like it succeeded but didn't<br>
    - some code stomped on the Picture's client-side memory<br>
    - some other code is doing X11 protocol on another thread without
    the lock<br>
    <br>
    Its not at all clear which it is from the evidence but since
    XRenderCreatePicture  is<br>
    aysnchronous you may not find out that it didn't work until later.<br>
    How about  inserting a call to XSynchronize(True) so which may give
    you a more timely errors.<br>
    Or maybe run your Xserver in sync mode "X --sync ..." but that'll
    make everything painfully slow.<br>
    <br>
    -phil.<br>
    <br>
    On 8/16/2010 8:51 AM, Clemens Eisserer wrote:
    <blockquote
      cite="mid:AANLkTimpf7rja4g2x3AY0=4Edu+N=753Rwmis3_gBjEN@mail.gmail.com"
      type="cite">Hi Phil,<br>
      <br>
      I was able to get rid of the problem by avoiding double-freeing
      Pictures, but I am not sure if it was really the cause or it just
      hides the symthoms.<br>
      <br>
      Setting sun.awt.noisyerrorhandler I got reports about invalid
      picture parameters passed to XRenderFreePicture(), and there are
      only two locations where I call these methods:<br>
      - In X11SurfaceData dispose()<br>
      - In XRenderBackendNative freePicture() when called by the
      pipeline itself.<br>
      <br>
      <br>
      When I set xrPic = None in X11SurfaceData.dispose() to avoid
      double-frees I don't get any XErrors anymore:<br>
        if(xsdo->xrPic != None) {<br>
           XRenderFreePicture(awt_display, xsdo->xrPic);<br>
           xsdo->xrPic = None; // Free pictures only once<br>
         }<br>
      <br>
      <br>
      However I added some debug code which really confuses me (without
      the "Free pictures only once"-line, running Java2Demo).<br>
      Actually there was not a single case where dispose() was called
      twice, so I don't have an explanation why setting xrPic=None
      changes things.<br>
      <br>
      <b>1. This picture is created, and freed only once - and still I
        get an XError:</b><br>
      <span style="font-family: courier new,monospace;">  picture
        52000aa created</span><br style="font-family: courier
        new,monospace;">
      <span style="font-family: courier new,monospace;">   picture
        52000aa freed in dispose </span><br style="font-family: courier
        new,monospace;">
      <span style="font-family: courier new,monospace;">   Xerror
        RenderBadPicture (invalid Picture parameter), XID 52000aa, ser#
        1836 - Major opcode 147 (Unknown) - Minor opcode 7</span><br>
      <br>
      <br>
      <b>2. This picture has no X11SDOps, it was created by the pipeline
        itself for pipeline-internal use:</b><br>
      <span style="font-family: courier new,monospace;">  Xerror
        RenderBadPicture (invalid Picture parameter), XID 52000b8, ser#
        5069- Major opcode 147 (Unknown) - Minor opcode 7</span><br
        style="font-family: courier new,monospace;">
      <span style="font-family: courier new,monospace;">   .....</span><br
        style="font-family: courier new,monospace;">
      <span style="font-family: courier new,monospace;">   picture
        52001b8 freed in freePicture</span><br>
      <br>
      So the double-free check doesn't change anything here, still with
      the check in X11SurfaceData.dispose() I don't get any errors.<br>
      <b><br>
        3. This picture was never freed, but I get a BadPicture for a
        Free Request:</b><br>
      <span style="font-family: courier new,monospace;">picture 52001dc
        created</span><br style="font-family: courier new,monospace;">
      <span style="font-family: courier new,monospace;">Xerror
        RenderBadPicture (invalid Picture parameter), XID 52001dc, ser#
        37176 - Major opcode 147 (Unknown) - Minor opcode 7</span><br>
      <br>
      <br>
      Do you have any idea whats going on here? Or why those XErrors
      could have influenced setting the DND property?<br>
      Could it be that xcb's error reporting struggles with multiple
      threads?<br>
      <br>
      Thanks, Clemens<br>
    </blockquote>
    <br>
  </body>
</html>