On Mon, Aug 06, 2007 at 11:48:14AM +0200, Michel Dänzer wrote: > On Mon, 2007-08-06 at 11:43 +0300, Kari Pahula wrote: > > There's a delay of more than 15 seconds (mostly calling FBIOPUTCMAP > > ioctl and gettimeofday, apparently) after the V_BIOS entry and before > > X is usable, but at least the VT switches without any screen freezes > > with int10. But those delays are a separate issue altogether. > > Does not using Option "UseFBDev" make any difference for this?
Commenting out the UseFBDev option made a difference, in that it made starting X faster. But it also brought the VT switching freeze back, and this time it would lock down the kernel and not just the screen. Doesn't respond to pings or anything. I still had the int10 module loaded. I did some debugging and noticed that running X with nice -n -10 strace X 2>stracedump made the freezes go away... If I took away the nice command with the negative priority, the system would freeze. Looks like X really likes to have a bit longer delay at some point. I suppose the delay(s) caused by FBDev could cause the same thing. I know that I'm happily making only guesses about this... I don't know why it would behave like it does. Some of the time X didn't lock up the system even without that nice thing I did above, but at least I think I could identify where the system gets locked up. This time I didn't even see anything as distinctive in the strace dump as I did last time... I attached the output of tail -n 400 ~/stracedump | uniq -c This is from a run where strace wasn't niced and I got the freeze. With a niced strace, the part where the freeze apparently happens goes like this: ioctl(6, VIDIOC_S_FMT or VT_RELDISP, 0x1) = 0 shutdown(5, 2 /* send and receive */) = 0 close(5) = 0 iopl(0) = 0 ioperm(0, 0x400, 0) = 0 gettimeofday({1186408789, 97309}, NULL) = 0 gettimeofday({1186408789, 97409}, NULL) = 0 select(256, [1 3 4], NULL, NULL, {111, 851000}) = ? ERESTARTNOHAND (To be restar ted) --- SIGUSR1 (User defined signal 1) @ 0 (0) --- rt_sigaction(SIGUSR1, {0x80b0f60, [USR1], SA_RESTART}, {0x80b0f60, [USR1], SA_RE START}, 8) = 0 sigreturn() = ? (mask now [IO]) ioctl(6, VIDIOC_S_FMT or VT_RELDISP, 0x2) = 0 rt_sigprocmask(SIG_BLOCK, [IO], [IO], 8) = 0 socket(PF_FILE, SOCK_STREAM, 0) = 5 connect(5, {sa_family=AF_FILE, path="/var/run/acpid.socket"}, 110) = 0 write(0, "(II) Open ACPI successful (/var/"..., 50) = 50
1 read(10, "9-9\nDejaVuSansCondensed.ttf -dej"..., 4096) = 4096 1 read(10, "0-iso8859-2\nDejaVuSansMono.ttf -"..., 4096) = 4096 1 read(10, " -dejavu-dejavu serif-medium-o-c"..., 4096) = 786 2 read(10, "", 4096) = 0 1 close(10) = 0 1 munmap(0xb7f72000, 4096) = 0 1 open("/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType/fonts.alias", O_RDONLY) = 10 2 fstat64(10, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 1 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f72000 1 read(10, "", 4096) = 0 1 close(10) = 0 1 munmap(0xb7f72000, 4096) = 0 1 open("/usr/share/fonts/X11/misc/6x13-ISO8859-1.pcf.gz", O_RDONLY) = 10 1 read(10, "\37\213\10\0I4\246F\0\3\355\\it\33\327u\376\260I\264\265"..., 8192) = 4637 1 read(10, "", 8192) = 0 1 close(10) = 0 1 open("/usr/share/fonts/X11/misc/cursor.pcf.gz", O_RDONLY) = 10 1 read(10, "\37\213\10\0:4\246F\0\3\355\233{p\335\305u\307\217\356"..., 8192) = 5225 1 read(10, "", 8192) = 0 1 brk(0x83a6000) = 0x83a6000 1 close(10) = 0 1 rt_sigprocmask(SIG_BLOCK, [IO], [], 8) = 0 1 rt_sigprocmask(SIG_UNBLOCK, [IO], NULL, 8) = 0 1 gettimeofday({1186401940, 291870}, NULL) = 0 1 gettimeofday({1186401940, 291958}, NULL) = 0 1 gettimeofday({1186401940, 292053}, NULL) = 0 1 gettimeofday({1186401940, 292151}, NULL) = 0 1 select(256, [1 3 4 5 6], NULL, NULL, {600, 0}) = 1 (in [6], left {594, 704000}) 1 rt_sigprocmask(SIG_BLOCK, [IO], [], 8) = 0 1 read(6, "\35", 64) = 1 1 gettimeofday({1186401945, 589552}, NULL) = 0 1 rt_sigprocmask(SIG_BLOCK, [], [IO], 8) = 0 1 rt_sigprocmask(SIG_UNBLOCK, [IO], NULL, 8) = 0 1 setitimer(ITIMER_REAL, {it_interval={0, 20000}, it_value={0, 20000}}, NULL) = 0 1 gettimeofday({1186401945, 589917}, NULL) = 0 1 select(256, [1 3 4 5 6], NULL, NULL, {594, 703000}) = 1 (in [6], left {594, 696000}) 1 rt_sigprocmask(SIG_BLOCK, [IO], [], 8) = 0 1 read(6, "8", 64) = 1 1 gettimeofday({1186401945, 595499}, NULL) = 0 1 rt_sigprocmask(SIG_BLOCK, [], [IO], 8) = 0 1 rt_sigprocmask(SIG_UNBLOCK, [IO], NULL, 8) = 0 1 gettimeofday({1186401945, 595735}, NULL) = 0 1 select(256, [1 3 4 5 6], NULL, NULL, {594, 697000}) = ? ERESTARTNOHAND (To be restarted) 1 --- SIGALRM (Alarm clock) @ 0 (0) --- 1 setitimer(ITIMER_REAL, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0 1 sigreturn() = ? (mask now []) 1 gettimeofday({1186401945, 610120}, NULL) = 0 1 gettimeofday({1186401945, 610178}, NULL) = 0 1 select(256, [1 3 4 5 6], NULL, NULL, {594, 682000}) = 1 (in [6], left {594, 640000}) 1 rt_sigprocmask(SIG_BLOCK, [IO], [], 8) = 0 1 read(6, ";", 64) = 1 1 gettimeofday({1186401945, 651921}, NULL) = 0 1 rt_sigprocmask(SIG_BLOCK, [], [IO], 8) = 0 1 rt_sigprocmask(SIG_UNBLOCK, [IO], NULL, 8) = 0 1 setitimer(ITIMER_REAL, {it_interval={0, 20000}, it_value={0, 20000}}, NULL) = 0 1 gettimeofday({1186401945, 652213}, NULL) = 0 1 ioctl(6, VIDIOC_G_COMP or VT_ACTIVATE, 0x1) = 0 1 --- SIGUSR1 (User defined signal 1) @ 0 (0) --- 1 rt_sigaction(SIGUSR1, {0x80b0f60, [USR1], SA_RESTART}, {0x80b0f60, [USR1], SA_RESTART}, 8) = 0 1 sigreturn() = ? (mask now []) 1 gettimeofday({1186401945, 652601}, NULL) = 0 1 select(256, [1 3 4 5 6], NULL, NULL, {0, 500000}) = ? ERESTARTNOHAND (To be restarted) 1 --- SIGALRM (Alarm clock) @ 0 (0) --- 1 setitimer(ITIMER_REAL, {it_interval={0, 0}, it_value={0, 0}}, NULL) = 0 1 sigreturn() = ? (mask now []) 1 ioctl(6, KDSKBMODE, 0x1) = 0 1 ioctl(6, SNDCTL_TMR_TIMEBASE or TCGETS, {B0 -opost -isig -icanon -echo ...}) = 0 1 ioctl(6, SNDCTL_TMR_START or TCSETS, {B38400 opost isig icanon echo ...}) = 0 1 ioctl(6, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 1 fcntl64(9, F_GETFL) = 0x2802 (flags O_RDWR|O_NONBLOCK|O_ASYNC) 1 fcntl64(9, F_SETFL, O_RDWR|O_NONBLOCK) = 0 1 rt_sigaction(SIGIO, {SIG_DFL}, {0x80b2a70, [IO], 0}, 8) = 0 1 close(9) = 0 1 nanosleep({0, 300000000}, NULL) = 0 1 rt_sigprocmask(SIG_BLOCK, [IO], [], 8) = 0 4 nanosleep({0, 5000000}, NULL) = 0 1 write(0, "(II) RADEON(0): RADEONRestoreMem"..., 50) = 50 1 write(0, "(II) RADEON(0): MC_FB_LOCATION"..., 48) = 48 1 write(0, "(II) RADEON(0): MC_AGP_LOCATIO"..., 48) = 48 199 nanosleep({0, 1000}, NULL) = 0 1 nanosleep({0, 100000000}, NULL) = 0 2 nanosleep({0, 5000000}, NULL) = 0 1 nanosleep({0, 100000000}, NULL) = 0 2 nanosleep({0, 5000000}, NULL) = 0 1 nanosleep({1, 0}, NULL) = 0 1 open("/dev/mem", O_RDWR) = 9 1 mmap2(NULL, 65536, PROT_READ|PROT_WRITE, MAP_SHARED, 9, 0xa0) = 0xb7b65000 1 close(9) = 0 8 ioctl(8, MTRRIOC_GET_ENTRY, 0xbfee62bc) = 0 1 ioctl(8, MTRRIOC_GET_ENTRY, 0xbfee62bc) = -1 EINVAL (Invalid argument) 1 munmap(0xb7b65000, 65536) = 0 1 lseek(7, 4, SEEK_SET) = 4 1 write(7, "\204\3\260\2", 4) = 4 1 lseek(7, 4, SEEK_SET) = 4 1 write(7, "\204\3\260\2", 4) = 4 1 lseek(7, 4, SEEK_SET) = 4 1 write(7, "\204\3\260\2", 4) = 4 1 close(7) = 0 1 stat64("/proc/bus/pci/0000:02", 0xbfee6294) = -1 ENOENT (No such file or directory) 1 open("/proc/bus/pci/02/03.1", O_RDWR) = 7 1 lseek(7, 62, SEEK_SET) = 62 1 read(7, "\200\5", 2) = 2 1 close(7) = 0 1 stat64("/proc/bus/pci/0000:02", 0xbfee6294) = -1 ENOENT (No such file or directory) 1 open("/proc/bus/pci/02/03.0", O_RDWR) = 7 1 lseek(7, 62, SEEK_SET) = 62 1 read(7, "\200\5", 2) = 2 1 close(7) = 0 1 stat64("/proc/bus/pci/0000:00", 0xbfee6294) = -1 ENOENT (No such file or directory) 1 open("/proc/bus/pci/00/1e.0", O_RDWR) = 7 1 lseek(7, 62, SEEK_SET) = 62 1 read(7, "\4\0", 2) = 2 1 close(7) = 0 1 stat64("/proc/bus/pci/0000:00", 0xbfee6294) = -1 ENOENT (No such file or directory) 1 open("/proc/bus/pci/00/01.0", O_RDWR) = 7 1 lseek(7, 62, SEEK_SET) = 62 1 read(7, "\f\0", 2) = 2 1 lseek(7, 62, SEEK_SET) = 62 1 write(7, "\4\0", 2) = 2 1 close(7) = 0 1 stat64("/proc/bus/pci/0000:01", 0xbfee62a4) = -1 ENOENT (No such file or directory) 1 open("/proc/bus/pci/01/00.0", O_RDWR) = 7 1 lseek(7, 4, SEEK_SET) = 4 1 read(7, "\204\3\260\2", 4) = 4 1 lseek(7, 16, SEEK_SET) = 16 1 read(7, "\10\0\0\340", 4) = 4 1 lseek(7, 20, SEEK_SET) = 20 1 read(7, "\1 \0\0", 4) = 4 1 lseek(7, 24, SEEK_SET) = 24 1 read(7, "\0\0\20\300", 4) = 4 1 lseek(7, 28, SEEK_SET) = 28 1 read(7, "\0\0\0\0", 4) = 4 1 lseek(7, 32, SEEK_SET) = 32 1 read(7, "\0\0\0\0", 4) = 4 1 lseek(7, 36, SEEK_SET) = 36 1 read(7, "\0\0\0\0", 4) = 4 1 lseek(7, 48, SEEK_SET) = 48 1 read(7, "\0\0\0\0", 4) = 4 1 lseek(7, 4, SEEK_SET) = 4 1 read(7, "\204\3\260\2", 4) = 4 1 lseek(7, 4, SEEK_SET) = 4 1 write(7, "\204\3\260\2", 4) = 4 1 lseek(7, 48, SEEK_SET) = 48 1 write(7, "\0\0\0\0", 4) = 4 1 lseek(7, 16, SEEK_SET) = 16 1 write(7, "\10\0\0\340", 4) = 4 1 lseek(7, 20, SEEK_SET) = 20 1 write(7, "\1 \0\0", 4) = 4 1 lseek(7, 24, SEEK_SET) = 24 1 write(7, "\0\0\20\300", 4) = 4 1 lseek(7, 28, SEEK_SET) = 28 1 write(7, "\0\0\0\0", 4) = 4 1 lseek(7, 32, SEEK_SET) = 32 1 write(7, "\0\0\0\0", 4) = 4 1 lseek(7, 36, SEEK_SET) = 36 1 write(7, "\0\0\0\0", 4) = 4 1 lseek(7, 4, SEEK_SET) = 4 1 write(7, "\207\3\260\2", 4) = 4 1 close(7) = 0 1 stat64("/proc/bus/pci/0000:02", 0xbfee62a4) = -1 ENOENT (No such file or directory) 1 open("/proc/bus/pci/02/03.1", O_RDWR) = 7 1 lseek(7, 62, SEEK_SET) = 62 1 read(7, "\200\5", 2) = 2 1 close(7) = 0 1 stat64("/proc/bus/pci/0000:02", 0xbfee62a4) = -1 ENOENT (No such file or directory) 1 open("/proc/bus/pci/02/03.0", O_RDWR) = 7 1 lseek(7, 62, SEEK_SET) = 62 1 read(7, "\200\5", 2) = 2 1 close(7) = 0 1 stat64("/proc/bus/pci/0000:00", 0xbfee62a4) = -1 ENOENT (No such file or directory) 1 open("/proc/bus/pci/00/1e.0", O_RDWR) = 7 1 lseek(7, 62, SEEK_SET) = 62 1 read(7, "\4\0", 2) = 2 1 close(7) = 0 1 stat64("/proc/bus/pci/0000:00", 0xbfee62a4) = -1 ENOENT (No such file or directory) 1 open("/proc/bus/pci/00/01.0", O_RDWR) = 7 1 lseek(7, 62, SEEK_SET) = 62 1 read(7, "\4\0", 2) = 2 1 lseek(7, 62, SEEK_SET) = 62 1 write(7, "\f\0", 2) = 2 1 ioctl(6, VIDIOC_S_FMT or VT_RELDISP, 0x1) = 0 1 shutdown(5, 2 /* send and receive */) = 0 1 close(5) = 0 1 iopl(0) = 0 1 ioperm(0, 0x400, 0) = 0 1 gettimeofday({1186401947, 698902}, NULL) = 0 1 gettimeofday({1186401947, 698965}, NULL) = 0 1 select(256, [1 3 4], NULL, NULL, {592, 594000}