Hello. I'm seeing Xorg lock up (sleep in futex) during stress-testing touchscreens - that consists of many touches in quick succession, where each touch makes something be redrawn.
Backtraces are identical in upper part - the signal handler, and differ in the lower part, that is from frame 11 onwards, but it's always something to do with malloc/free. See the example backtrace below. As far as I understand, one should not do any memory allocation/deallocation or, more generally, anything that might be protected with locks, in a signal handler. Now, my question is: how do I fix that? Example backtrace: #0 0x00bf4422 in __kernel_vsyscall () #1 0x00235ae3 in __lll_lock_wait_private () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/lowlevellock.S:95 #2 0x001ccf07 in _L_lock_9496 () from /lib/tls/i686/cmov/libc.so.6 #3 0x001cb796 in *__GI___libc_free (mem=0x930a548) at malloc.c:3714 #4 0x08137a21 in Xfree (ptr=0xfffffe00) at ../../os/utils.c:1165 #5 0x0813127e in TimerFree (timer=0x930a548) at ../../os/WaitFor.c:518 #6 0x0062423b in DoBtnAction (local=0x9251898) at evtouch.c:260 #7 ReadInput (local=0x9251898) at evtouch.c:845 #8 0x080c7ef7 in xf86SigioReadInput (fd=17, closure=0x9251898) at ../../../../hw/xfree86/common/xf86Events.c:311 #9 0x080b87b4 in xf86SIGIO (sig=29) at ../../../../../hw/xfree86/os-support/linux/../shared/sigio.c:114 #10 <signal handler called> #11 _int_free (av=<value optimized out>, p=0x93f7230) at malloc.c:4831 #12 0x001cb79d in *__GI___libc_free (mem=0x93f7238) at malloc.c:3716 #13 0x08137a21 in Xfree (ptr=0x0) at ../../os/utils.c:1165 #14 0x08120cb4 in miRegionDestroy (pReg=0x93f7238) at ../../mi/miregion.c:258 #15 0x0816f126 in miDestroyPicture (pPicture=0x92fa040) at ../../render/mipict.c:50 #16 0x08171b6d in FreePicture (value=0x92fa040, pid=23101378) at ../../render/picture.c:1508 #17 0x08074e82 in FreeResource (id=23101378, skipDeleteFuncType=0) at ../../dix/resource.c:561 #18 0x08179722 in ProcRenderFreePicture (client=0x92978e0) at ../../render/render.c:684 #19 0x081742e5 in ProcRenderDispatch (client=0x29d3a0) at ../../render/render.c:2089 #20 0x0808d17f in Dispatch () at ../../dix/dispatch.c:456 #21 0x08072515 in main (argc=5, argv=0xbfed81a4, envp=0xbfed81bc) at ../../dix/main.c:397 _______________________________________________ xorg-devel mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-devel
