diff --git a/src/compositor/compositor_api/qwaylandsurface.cpp b/src/compositor/compositor_api/qwaylandsurface.cpp
index a8dc41fd52f771128482f9a213b24eb64b50f397..f1615521e4ff9803fb4c8193c9e6598065a98051 100644
--- a/src/compositor/compositor_api/qwaylandsurface.cpp
+++ b/src/compositor/compositor_api/qwaylandsurface.cpp
@@ -361,6 +361,10 @@ bool QWaylandSurface::sendInterfaceOp(QWaylandSurfaceOp &op)
 void QWaylandSurface::ping()
 {
     Q_D(QWaylandSurface);
+
+    if (d->isDestroyed())
+        return;
+
     uint32_t serial = wl_display_next_serial(compositor()->waylandDisplay());
     QWaylandSurfacePingOp op(serial);
     if (!sendInterfaceOp(op)) {