<div dir="ltr"><div><div><div>I think it's right to return false if wsi_conn is NULL, but I believe there is also an application error here.<br><br>From the Vulkan 1.0.37 spec valid usage for vkGetPhysicalDeviceSurfaceSupportKHR,<br><div class="gmail-itemizedlist"><ul class="gmail-itemizedlist" style="list-style-type:disc"><li class="gmail-listitem">
<em class="gmail-parameter"><code>connection</code></em> <span class="gmail-normative">must</span> point to a valid X11 <span class="gmail-strong"><strong><code class="gmail-code">xcb_connection_t</code></strong></span>.
</li><li class="gmail-listitem">
<em class="gmail-parameter"><code>window</code></em> <span class="gmail-normative">must</span> be a valid X11 <span class="gmail-strong"><strong><code class="gmail-code">xcb_window_t</code></strong></span>.
</li></ul><p>Also,</p><p>"Some Vulkan functions <span class="gmail-normative">may</span> send protocol over the specified xcb connection
when using a swapchain or presentable images created from a VkSurface
referring to an xcb window.
Applications <span class="gmail-normative">must</span> therefore ensure the xcb connection is available to
Vulkan for the duration of any functions that manipulate such swapchains or
their presentable images, and any functions that build or queue command
buffers that operate on such presentable images."</p><p>This seems to imply to me that it's the application's responsibility to ensure that the XCB connection and window it passes in are valid and remain valid for the duration of the call.</p><p>On the flip side, this is X11 and it's inherently racy.  It's possible for some other client to delete our window out from under us so we should probably handle that.  However, it's not our job to handle races inside the same process.<br></p></div>In short, I'm happy to take a patch that does<br><br></div>if (!wsi_conn)<br></div>   return false;<br><br></div>because it handles the out-of-memory and crazy X races case, but you should also fix your app.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Dec 19, 2016 at 7:59 PM, Arda Coskunses <span dir="ltr"><<a href="mailto:acoskunses@gmail.com" target="_blank">acoskunses@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Without this check driver crash when application window<br>
closed unexpectedly.<br>
---<br>
 src/vulkan/wsi/wsi_common_x11.<wbr>c | 5 +++++<br>
 1 file changed, 5 insertions(+)<br>
<br>
diff --git a/src/vulkan/wsi/wsi_common_<wbr>x11.c b/src/vulkan/wsi/wsi_common_<wbr>x11.c<br>
index 25ba0c1..afb7809 100644<br>
--- a/src/vulkan/wsi/wsi_common_<wbr>x11.c<br>
+++ b/src/vulkan/wsi/wsi_common_<wbr>x11.c<br>
@@ -261,6 +261,11 @@ VkBool32 wsi_get_physical_device_xcb_<wbr>presentation_support(<br>
    struct wsi_x11_connection *wsi_conn =<br>
       wsi_x11_get_connection(wsi_<wbr>device, alloc, connection);<br>
<br>
+   if (!wsi_conn) {<br>
+      fprintf(stderr, "vulkan: wsi connection lost\n");<br>
+      return false;<br>
+   }<br>
+<br>
    if (!wsi_conn->has_dri3) {<br>
       fprintf(stderr, "vulkan: No DRI3 support\n");<br>
       return false;<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.7.4<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div>