On Tue, Jan 12, 2010 at 11:47:47AM +0200, Rami Ylimaki wrote: > The problem fixed by this patch can be reproduced on Linux with the > following steps. > - Access NULL pointer intentionally in ProcessOtherEvent on key press. > - Instead of saving core dump to a file, write it into a pipe. > echo "|/usr/sbin/my-core-dumper" > /proc/sys/kernel/core_pattern > - Dump the core by pressing a key. > > While the core is being dumped into the pipe, the smart schedule timer > will cause a pending SIGALRM. Linux kernel stops writing data to the > pipe when there are pending signals. This causes the core dump to be > truncated. On my system I'm expecting a 6 MB dump but the size will be > 60 kB instead. The problem is solved if we prevent the smart schedule > timer from expiring before aborting. > > I haven't been able to reproduce this problem in the following cases. > - Save core dump to a file instead of a pipe. > - kill -SEGV `pidof Xorg` > - Press a key to dump core while gdb is attached to Xorg. > - Give option -dumbSched to Xorg. > > Also note that the fix works only when NoTrapSignals has the default > value FALSE. The problem can still be reproduced if error signals > aren't trapped. In addition to pending SIGALRM, there is a similar > problem with pending SIGIO from the keyboard driver during core dump. > > Signed-off-by: Rami Ylimaki <[email protected]>
How about OsBlockSignals(), which will also block SIGIO? Cheers, Daniel
pgpUmzH0SRpeH.pgp
Description: PGP signature
_______________________________________________ xorg-devel mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-devel
