On 18/02/2025 17:03, znshje wrote:
>
> To avoid this issue, I have removed this config file to see if it still
> happens. This issue seems happening randomly at any time, and I didn't find
> an operation that could stably reproduce the issue.
>
> If you need more details, I'm willing to help to locate the problem.
>
I'm afraid I don't see anything in the code that can explain this. It
might have something to do with how it's used as an Xorg module. Most of
the testing is done in Xvnc.
It will be difficult for us to fix this without clear steps to reproduce it.
If you can do custom builds, then please test the following patch. It
will still crash, but the crash should tell us more where things go wrong.
diff --git a/unix/xserver/hw/vnc/vncHooks.c b/unix/xserver/hw/vnc/vncHooks.c
index 406452738..ad3f5f253 100644
--- a/unix/xserver/hw/vnc/vncHooks.c
+++ b/unix/xserver/hw/vnc/vncHooks.c
@@ -21,6 +21,7 @@
#include <dix-config.h>
#endif
+#include <assert.h>
#include <stdio.h>
#include "vncHooks.h"
@@ -87,6 +88,7 @@ typedef struct _vncHooksGCRec {
} vncHooksGCRec, *vncHooksGCPtr;
#define wrap(priv, real, mem, func) {\
+ assert(real->mem != func); \
priv->mem = real->mem; \
real->mem = func; \