debugging AbortDDX? and Xorg startup error doesn't reset console
Jeremy C. Reed
reed at reedmedia.net
Mon Dec 18 13:17:53 PST 2006
I commented out the Mouse Protocol and Option for my InputDevice in my
xorg.conf.
Both xserver 1.1.99.903 and older xserver 1.1.1 fail with:
(EE) Mouse0: No Protocol specified
(EE) PreInit failed for input device "Mouse0"
(II) UnloadModule: "mouse"
(**) Option "CoreKeyboard"
...
(WW) No core pointer registered
(II) XINPUT: Adding extended input device "Keyboard0" (type: KEYBOARD)
(WW) Couldn't load XKB keymap, falling back to pre-XKB keymap
No core pointer
Fatal server error:
failed to initialize core devices
Which is fine. (I know I can use -allowMouseOpenFail or MouseOpenFail but
that is not related to my problem.)
The end of my ktracing follows:
696 1 Xorg CALL clock_gettime(3,0xbfbfeb00)
696 1 Xorg RET clock_gettime 0
696 1 Xorg CALL ioctl(6,_IO('K',0x42),0)
696 1 Xorg RET ioctl 0
696 1 Xorg CALL write(2,0x81b6440,0x10)
696 1 Xorg GIO fd 2 wrote 16 bytes
"No core pointer
"
696 1 Xorg RET write 16/0x10
696 1 Xorg CALL write(0,0x81b6440,0x10)
696 1 Xorg GIO fd 0 wrote 16 bytes
"No core pointer
"
696 1 Xorg RET write 16/0x10
696 1 Xorg CALL write(2,0x81b6440,0x15)
696 1 Xorg GIO fd 2 wrote 21 bytes
"
Fatal server error:
"
696 1 Xorg RET write 21/0x15
696 1 Xorg CALL write(0,0x81b6440,0x15)
696 1 Xorg GIO fd 0 wrote 21 bytes
"
Fatal server error:
"
696 1 Xorg RET write 21/0x15
696 1 Xorg CALL write(2,0x81b6440,0x21)
696 1 Xorg GIO fd 2 wrote 33 bytes
"failed to initialize core devices"
696 1 Xorg RET write 33/0x21
696 1 Xorg CALL write(0,0x81b6440,0x21)
696 1 Xorg GIO fd 0 wrote 33 bytes
"failed to initialize core devices"
696 1 Xorg RET write 33/0x21
696 1 Xorg CALL write(2,0x81b6440,1)
696 1 Xorg GIO fd 2 wrote 1 bytes
"
"
696 1 Xorg RET write 1
696 1 Xorg CALL write(0,0x81b6440,1)
696 1 Xorg GIO fd 0 wrote 1 bytes
"
"
696 1 Xorg RET write 1
696 1 Xorg CALL unlink(0x81b5fa0)
696 1 Xorg NAMI "/tmp/.X0-lock"
696 1 Xorg RET unlink 0
696 1 Xorg CALL __sigprocmask14(1,0xbfbfec14,0xbfbfec04)
696 1 Xorg RET __sigprocmask14 0
696 1 Xorg CALL ioctl(6,_IO('K',0xa),0)
696 1 Xorg RET ioctl 0
696 1 Xorg CALL ioctl(6,_IOR('v',0x3,0x8),0xbfbfec90)
696 1 Xorg GIO fd 6 read 8 bytes
"\^A\0\^^\0\^^\0\^^\0"
696 1 Xorg RET ioctl 0
696 1 Xorg CALL ioctl(6,_IOW('v',0x2,0x8),0xbfbfec90)
696 1 Xorg GIO fd 6 wrote 8 bytes
"\0\0\^^\0\^^\0\^^\0"
696 1 Xorg RET ioctl 0
696 1 Xorg CALL ioctl(6,_IO('v',0x5),1)
696 1 Xorg RET ioctl 0
696 1 Xorg CALL close(6)
696 1 Xorg RET close 0
696 1 Xorg CALL close(0)
696 1 Xorg RET close 0
696 1 Xorg CALL exit(1)
My problem is that my console is not reset correctly. Sometimes, I just
have a plain text console that is locked up -- can't type and only see
previous text from the Xorg startup. Or sometimes, I can type, but garbage
different characters are displayed. (I have had similar problem for
probably a year or more).
I am guessing that some ioctl() failed above. Or some ioctl was accidently
skipped.
I am looking at
OsCleanup() which looks like it just calls UnlockServer (which does
work).
and AbortDDX(). I read in dmxinit_8c.html: "We must ensure that backend
and console state is restored in the event the server shutdown wasn't
clean." And ./hw/xfree86/common/xf86Init.c defines the AbortDDX I think I
am using: " The attempt is made to restore all original setting of the
displays. Also all devices are closed."
This is on NetBSD. If you can give me any hints on where to look for
making sure Xorg properly exits on failure I will look further.
I am using xf86-video-wsfb-0.2.0, but I am pretty sure I have had same
problem with other video drivers.
Note that shutting down X normally works fine for me (like exiting my
window manager) and my console works great after X exits.
If I try starting Xorg again (via a remote login), it fails with:
...
(II) Module pcidata: vendor="X.Org Foundation"
compiled for 7.1.99.903, module version = 1.0.0
ABI class: X.Org Video Driver, version 1.0
(--) Using wscons driver in pcvt compatibility mode (version 3.32)
(WW) xf86OpenConsole: VT_ACTIVATE failed
And again my shell is disabled until I kill -9 that. (kill -TERM doesn't
work.)
The last 100 lines of my kdump from that are here (including up until I
kill it):
7336 1 Xorg RET close 0
7336 1 Xorg CALL write(0,0x81b6440,0x2f)
7336 1 Xorg GIO fd 0 wrote 47 bytes
"(II) Module pcidata: vendor=\"X.Org Foundation\"
"
7336 1 Xorg RET write 47/0x2f
7336 1 Xorg CALL write(0,0x81b6440,0x14)
7336 1 Xorg GIO fd 0 wrote 20 bytes
" compiled for 7.1.99"
7336 1 Xorg RET write 20/0x14
7336 1 Xorg CALL write(0,0x81b6440,4)
7336 1 Xorg GIO fd 0 wrote 4 bytes
".903"
7336 1 Xorg RET write 4
7336 1 Xorg CALL write(0,0x81b6440,0x19)
7336 1 Xorg GIO fd 0 wrote 25 bytes
", module version = 1.0.0
"
7336 1 Xorg RET write 25/0x19
7336 1 Xorg CALL write(0,0x81b6440,0x2c)
7336 1 Xorg GIO fd 0 wrote 44 bytes
" ABI class: X.Org Video Driver, version 1.0
"
7336 1 Xorg RET write 44/0x2c
7336 1 Xorg CALL geteuid
7336 1 Xorg RET geteuid 0
7336 1 Xorg CALL getpid
7336 1 Xorg RET getpid 7336/0x1ca8, 22191/0x56af
7336 1 Xorg CALL setpgid(0,0x1ca8)
7336 1 Xorg RET setpgid 0
7336 1 Xorg CALL open(0x818db6f,2,0x81a0fb4)
7336 1 Xorg NAMI "/dev/tty"
7336 1 Xorg RET open 6
7336 1 Xorg CALL ioctl(6,TIOCNOTTY,0)
7336 1 Xorg RET ioctl 0
7336 1 Xorg CALL close(6)
7336 1 Xorg RET close 0
7336 1 Xorg CALL open(0x818db4c,6,0)
7336 1 Xorg NAMI "/dev/ttyv0"
7336 1 Xorg RET open -1 errno 2 No such file or directory
7336 1 Xorg CALL open(0x818dbe1,6,0)
7336 1 Xorg NAMI "/dev/ttyE0"
7336 1 Xorg RET open 6
7336 1 Xorg CALL ioctl(6,_IOWR('V',0x71,0x18),0xbfbfeb70)
7336 1 Xorg GIO fd 6 wrote 24 bytes
"H\M-m\M-?\M-?\^F\0\0\0\M-AT\M-?\M-;\0\M-B\M->\M-;`\0\0\0\0\0\0\0"
7336 1 Xorg GIO fd 6 read 24 bytes
"pcvt\0\0\0\0\M-AT\M-?\M-;\0\M-B\M->\M-;\^C\0\0\0 \0\0\0"
7336 1 Xorg RET ioctl 0
7336 1 Xorg CALL ioctl(6,_IOR('v',0x3,0x8),0xbfbfeb94)
7336 1 Xorg GIO fd 6 read 8 bytes
"\0\0\0\0\0\0\0\0"
7336 1 Xorg RET ioctl 0
7336 1 Xorg CALL ioctl(6,_IOR('v',0x7,0x4),0x81a385c)
7336 1 Xorg GIO fd 6 read 4 bytes
"\^A\0\0\0"
7336 1 Xorg RET ioctl 0
7336 1 Xorg CALL ioctl(6,_IOR('v',0x1,0x4),0x81a5374)
7336 1 Xorg GIO fd 6 read 4 bytes
"\^E\0\0\0"
7336 1 Xorg RET ioctl 0
7336 1 Xorg CALL close(6)
7336 1 Xorg RET close 0
7336 1 Xorg CALL open(0xbfbfeb88,6,0)
7336 1 Xorg NAMI "/dev/ttyE4"
7336 1 Xorg RET open 6
7336 1 Xorg CALL ioctl(6,_IOR('v',0x3,0x8),0xbfbfeb94)
7336 1 Xorg GIO fd 6 read 8 bytes
"\0\0\0\0\0\0\0\0"
7336 1 Xorg RET ioctl 0
7336 1 Xorg CALL write(0,0x81b6440,0x43)
7336 1 Xorg GIO fd 0 wrote 67 bytes
"(--) Using wscons driver in pcvt compatibility mode (version 3.32)
"
7336 1 Xorg RET write 67/0x43
7336 1 Xorg CALL ioctl(6,_IO('v',0x5),5)
7336 1 Xorg RET ioctl -1 errno 16 Device busy
7336 1 Xorg CALL write(0,0x81b6440,0x29)
7336 1 Xorg GIO fd 0 wrote 41 bytes
"(WW) xf86OpenConsole: VT_ACTIVATE failed
"
7336 1 Xorg RET write 41/0x29
7336 1 Xorg CALL ioctl(6,_IO('v',0x6),5)
7336 1 Xorg RET ioctl -1 errno 4 Interrupted system call
7336 1 Xorg PSIG SIGTERM caught handler=0x81809c4 mask=())
7336 1 Xorg CALL setcontext(0xbfbfe894)
7336 1 Xorg RET setcontext JUSTRETURN
7336 1 Xorg CALL ioctl(6,_IO('v',0x6),5)
7336 1 Xorg RET ioctl -1 errno 4 Interrupted system call
7336 1 Xorg PSIG SIGTERM caught handler=0x81809c4 mask=())
7336 1 Xorg CALL setcontext(0xbfbfe894)
7336 1 Xorg RET setcontext JUSTRETURN
7336 1 Xorg CALL ioctl(6,_IO('v',0x6),5)
7336 1 Xorg RET ioctl -1 errno 4 Interrupted system call
7336 1 Xorg PSIG SIGTERM caught handler=0x81809c4 mask=())
7336 1 Xorg CALL setcontext(0xbfbfe894)
7336 1 Xorg RET setcontext JUSTRETURN
7336 1 Xorg CALL ioctl(6,_IO('v',0x6),5)
7336 1 Xorg RET ioctl RESTART
7336 1 Xorg PSIG SIGKILL SIG_DFL
I have to reboot to get X started (with correct configuration with mouse).
Any hints would be appreciated,
Jeremy C. Reed
p.s. I plan on working on the wsmouse auto-detection on NetBSD but want to
make sure X exits cleanly (my console will work after) on errors.
More information about the xorg
mailing list