I have a repeatable crash / segfault of X on openbsd, seemingly related
to mouse input which occurs when running applications which use GL.
I have also been able to replicate a segfault in Linux on a box which
happens to share the same graphic chipset family (S3 savage 4). The
problem did not seem to replicate on a box running X 4.0.2 (S3 trio-3d)
w/ Linux kernel(2.4.17).
I've spent some time trying to find the responsible code in the Xfree 4.2.1
sources without much luck so far. Any pointers on what source files to
look at would be truly appreciated!
Scenario: ... OpenBSD (3.1, 3.2 -current) S3 savage IXC
xset m 245/100 0;
glxgears
At this point everything is ok as long as the mouse is not used, however
using the mouse when a GL window is open will cause a segfault in XFree86.
The problem has replicated across different wm's (twm, E 16.5).
I've run X with gdb attached to the instance and obtained a backtrace,
however for reasons unknown there are no symbols available.
Using 'standard' mouse acceleration e.g.
xset m 4 1
eliminates the behavior / problem
I also tried debugging / replicating with 'debug' binaries using 'makeg'
The XFree86 server which resulted could still be made to segfault, however
it required a *lot* of mouse motion, instead of locking in 1-3 seconds it
would die in about a minute. Using the 'debug' binaries I found that
the address of the corefault was not very repeatable, whereas using a
'vanilla' built binary the address was always the same.
Lastly I *think* this may have been the root cause of some other crashes
I've experienced under Linux, in those cases mouse-motion while using audio
(xmms) would often lockup the entire machine. (making the collection
of debugging information more difficult). I will look into this as soon
as I have time to reboot to linux for testing.
The one crash under which I was able to get some symbolic info in gdb
ran as follows:
Program received signal SIGSEGV, Segmentation fault.
miMarkOverlappedWindows (pWin=0x2a7a300, pFirst=0x2833000, ppLayerWin=0xcfbfd740
)
at miwindow.c:428
(gdb) bt
#0 miMarkOverlappedWindows (pWin=0x2a7a300, pFirst=0x2833000, ppLayerWin=0xcfbf
d740)
at miwindow.c:428
#1 0x174cb5 in miMoveWindow (pWin=0x2a7a300, x=571, y=360, pNextSib=0x2833000,
kind=VTMove)
at miwindow.c:518
#2 0x9e401 in ConfigureWindow (pWin=0x2a7a300, mask=15, vlist=0x271900c, client
=0x2714300)
at window.c:2507
#3 0x79d28 in ProcConfigureWindow (client=0x2714300) at dispatch.c:772
#4 0x79522 in Dispatch () at dispatch.c:462
#5 0x8ef29 in main (argc=2, argv=0xcfbfda38, envp=0xcfbfda44) at main.c:454
(gdb) cont
Continuing.
Program received signal SIGABRT, Aborted.
0x4028126f in kill ()
(gdb) bt
#0 0x4028126f in kill ()
#1 0x40280bcb in abort ()
#2 0x3a8c in ddxGiveUp () at xf86Init.c:1114
#3 0x3b6e in AbortDDX () at xf86Init.c:1165
#4 0xaf3d4 in AbortServer () at utils.c:440
#5 0xb1e5b in FatalError (f=0x22720 "Caught signal %d. Server aborting\n") at
utils.c:1404
#6 0x227c7 in xf86SigHandler (signo=11) at xf86Events.c:1088
#7 0x401c7004 in ?? ()
#8 0x174cb5 in miMoveWindow (pWin=0x2a7a300, x=571, y=360, pNextSib=0x2833000,
kind=VTMove)
at miwindow.c:518
#9 0x9e401 in ConfigureWindow (pWin=0x2a7a300, mask=15, vlist=0x271900c, client
=0x2714300)
at window.c:2507
#10 0x79d28 in ProcConfigureWindow (client=0x2714300) at dispatch.c:772
#11 0x79522 in Dispatch () at dispatch.c:462
#12 0x8ef29 in main (argc=2, argv=0xcfbfda38, envp=0xcfbfda44) at main.c:454
A more typical backtrace is as follows:
Program received signal SIGSEGV, Segmentation fault.
0x4d290e in ?? ()
(gdb) bt
#0 0x4d290e in ?? ()
#1 0x47c376 in ?? ()
#2 0x47dab9 in ?? ()
#3 0x3c8963 in ?? ()
#4 0x482a10 in ?? ()
#5 0x2e530a in ?? ()
#6 0x481062 in ?? ()
#7 0x474ca2 in ?? ()
#8 0x30513a in ?? ()
#9 0x22b565 in ?? ()
#10 0x26ffc5 in ?? ()
#11 0x2755fd in ?? ()
#12 0x56c51 in Dispatch ()
#13 0x67079 in main ()
(gdb) cont
Continuing.
Program received signal SIGABRT, Aborted.
0x4020126f in kill ()
(gdb) bt
#0 0x4020126f in kill ()
#1 0x40200bcb in abort ()
#2 0x31b9 in ddxGiveUp ()
#3 0x3252 in AbortDDX ()
#4 0x7bbd8 in AbortServer ()
#5 0x7dc8d in FatalError ()
#6 0x18985 in xf86SigHandler ()
#7 0x40147004 in ?? ()
#8 0x47c376 in ?? ()
#9 0x47dab9 in ?? ()
#10 0x3c8963 in ?? ()
#11 0x482a10 in ?? ()
#12 0x2e530a in ?? ()
#13 0x481062 in ?? ()
#14 0x474ca2 in ?? ()
#15 0x30513a in ?? ()
#16 0x22b565 in ?? ()
#17 0x26ffc5 in ?? ()
#18 0x2755fd in ?? ()
#19 0x56c51 in Dispatch ()
#20 0x67079 in main ()
On Linux (X 4.2.0 S3 savage 4 linux kernel 2.4.19) ... In this
instance considerable mouse motion was required to cause the
segfault.
Program received signal SIGSEGV, Segmentation fault.
0x086aeb10 in ?? ()
(gdb) bt
#0 0x086aeb10 in ?? ()
#1 0x086af10c in ?? ()
#2 0x086a5405 in ?? ()
#3 0x0851dd9b in ?? ()
#4 0x086a4fd7 in ?? ()
#5 0x0816e5c6 in miSpriteCopyArea ()
#6 0x080f4ac0 in fbShmPutImage ()
#7 0x080f5abe in ProcShmPutImage ()
#8 0x080f635d in ProcShmDispatch ()
#9 0x080b3036 in Dispatch ()
#10 0x080c373b in main ()
#11 0x40063b61 in __libc_start_main () from /lib/libc.so.6
(gdb) cont
Continuing.
Program received signal SIGABRT, Aborted.
0x40074d31 in __kill () from /lib/libc.so.6
(gdb) bt
#0 0x40074d31 in __kill () from /lib/libc.so.6
#1 0x400749d8 in raise () from /lib/libc.so.6
#2 0x400762db in abort () from /lib/libc.so.6
#3 0x0806ecad in ddxGiveUp ()
#4 0x0806ed56 in AbortDDX ()
#5 0x080d816c in AbortServer ()
#6 0x080d96a6 in FatalError ()
#7 0x080814c1 in xf86SigHandler ()
#8 <signal handler called>
#9 0x086aeb10 in ?? ()
#10 0x086af10c in ?? ()
#11 0x086a5405 in ?? ()
#12 0x0851dd9b in ?? ()
#13 0x086a4fd7 in ?? ()
#14 0x0816e5c6 in miSpriteCopyArea ()
#15 0x080f4ac0 in fbShmPutImage ()
#16 0x080f5abe in ProcShmPutImage ()
#17 0x080f635d in ProcShmDispatch ()
#18 0x080b3036 in Dispatch ()
#19 0x080c373b in main ()
#20 0x40063b61 in __libc_start_main () from /lib/libc.so.6
_______________________________________________
Xpert mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/xpert